“Plan a trip from Bengaluru to Hampi.”
Point any assistant at the same planner.
Tatak's route planner is also an MCP server, so an AI assistant can query Bengaluru's bus and metro network, plus the Karnataka intercity corridors now merged into it, on its own, without the app open. Nine read-only tools. None of them books, buys, holds or pays for anything.
https://app.tatak.tech/api/mcpOne POST per JSON-RPC message, over the Streamable HTTP transport. A client that only speaks stdio needs a bridge such as mcp-remote; this server is HTTP only and has no stdio mode.
Send the token as Authorization: Bearer <token> or as x-api-key: <token>. claude.ai's custom connector form reserves the Authorization header for its own sign-in, so use x-api-key there.
claude mcp add --transport http tatak https://app.tatak.tech/api/mcp \
--header "Authorization: Bearer YOUR-TOKEN"{
"mcpServers": {
"tatak": {
"type": "http",
"url": "https://app.tatak.tech/api/mcp",
"headers": { "Authorization": "Bearer YOUR-TOKEN" }
}
}
}Any client that takes a JSON config takes this shape.
- Add a custom connector with the endpoint above.
- Choose “None” for the OAuth client - the form recommends it for a server that uses an API key.
- Add a header named
x-api-keyand paste the token as its value.
Issued by email. Write to srivathsanvenkateswaran@gmail.com for one.The endpoint is gated by MCP_ENABLED, which defaults to off. With the flag unset or false a deployment answers 503 mcp-disabled before it reads the body, before it checks the token and before it loads the graph. With the flag on and no token configured it answers mcp-unconfigured and refuses everybody. Either way the switch is the operator's, not your client's.
Older clients that speak the earlier 2024-11-05 HTTP+SSE transport have a fallback at https://app.tatak.tech/api/mcp/sse. Everything else about it is the same: same flag, same token, same nine tools.
Ask it like this
“What's the last service from MG Road to Whitefield tonight?”
“I'm in HSR Layout, a friend is in Hebbal. Where should we meet?”
The nine tools
plan_journey- A to B by bus, metro or intercity coach
next_departures- What leaves one stop next
describe_route- What a route does, terminal to terminal
last_service_home- The last service of the day on a journey
plan_to_airport- To or from Kempegowda International
stops_near_place- Stops within walking range of a named place
when_should_i_leave- Works backwards from an arrival time
reachable_within- Where you can get to inside a time budget
meet_in_the_middle- Somewhere two people can both reach
Before you rely on it
- No coordinates, ever. Every tool takes a place name and resolves it server-side. A tool that took a coordinate would copy the user's location into the assistant vendor's transcript as well as into this app.
- A refusal is a successful result whose body says no, not a protocol error. An assistant should read and relay it rather than reporting that the tool failed. Ask about HSR Layout, which has more than one match in Bengaluru, and the answer names the candidates instead of picking one for you.
- Estimated waits are never dressed as clock times. Where the feed publishes no timetable, a response says
not_publishedand gives a frequency instead. - Rate limits arrive as tool results, carrying
retry_after_seconds, not as HTTP 429. The per-key burst is small; an exploratory turn that calls many tools can reach it. - Live vehicle positions are deliberately not exposed. A tool response is a frozen snapshot whose age is already wrong by the time a model writes a sentence around it. Ask the app, not the assistant, where a bus is.
The same planner answers in the browser, with the live, published and estimated labels intact. Open Tatak
Back to Tatak