Guides
Connect over MCP
Waity is a remote MCP server with three read-only tools. Add it to any client that speaks MCP over HTTP.
Server URL
URL
https://api.waity.ai/mcp
It works without a key: each session gets 100 calls a day. With a key, send it as X-Api-Key or Authorization: Bearer.
A hosted connector that takes only a URL can carry the key in it: https://api.waity.ai/mcp?key=wk_…. Waity never logs query strings, but treat that URL like the key.
Add it to your client
Claude
- Open Settings, then Connectors.
- Choose Add custom connector.
- Name it Waity, paste the URL below and choose Add.
https://api.waity.ai/mcp
ChatGPT
- Open Settings, then Apps & Connectors.
- Under Advanced settings, turn on Developer mode.
- Create a connector named Waity with the URL below and no authentication.
- In a chat, pick Waity from the tools menu.
https://api.waity.ai/mcp
Claude Code
Run this in a terminal:
claude mcp add --transport http waity https://api.waity.ai/mcp
Then run /mcp in Claude Code to check the connection.
Cursor
Or add it to ~/.cursor/mcp.json:
{
"mcpServers": {
"waity": {
"url": "https://api.waity.ai/mcp"
}
}
}
VS Code
Or run MCP: Add Server, choose HTTP and paste the URL:
https://api.waity.ai/mcp
Or add it to .vscode/mcp.json:
{
"servers": {
"waity": {
"type": "http",
"url": "https://api.waity.ai/mcp"
}
}
}
Other clients
Add the URL, or this JSON where your client takes a config file:
{
"mcpServers": {
"waity": {
"url": "https://api.waity.ai/mcp"
}
}
}
Tools
All three tools are read-only and return follow-up links as ready-made tool calls; find_waits and get_wait default to the minimal view.
find_waits
Places with their current wait: near a point, by name or place, or by id.
| Name | Type | Description |
|---|---|---|
lat | number | Latitude in decimal degrees |
lng | number | Longitude in decimal degrees |
q | string | A place name, city, airport code or ZIP (at most 100 characters). With lat/lng, results sort by distance. |
ids | string[] | Up to 25 place ids, returned in this order. |
category | er | urgent-care | dmv | airport | border[] | Only these categories. Omit for all. Current coverage; see GET /v1/categories. |
open | boolean | true: only places open now. |
sort | distance | wait | total | distance (default with lat/lng), wait, or total (needs lat/lng). |
limit | integer | 1 to 25, default 10. |
view | minimal | full | minimal (default) for the essentials, full for sources, timestamps, hours and alternatives. |
get_wait
One place: now, usual, when it should drop, and nearby alternatives. A group id returns the lines inside it.
| Name | Type | Description |
|---|---|---|
idrequired | string | A place id from find_waits, e.g. pl_xaed7pr1f5. |
under | number | Threshold in minutes. Defaults: er, urgent-care and border 30, dmv 20, airport 15. |
travel_min | number | Travel time in minutes, for a leave-by time. |
date | string | Local date YYYY-MM-DD, today to 7 days ahead, to plan a day. |
lat | number | The user's latitude, for distances. |
lng | number | The user's longitude, for distances. |
forecast | boolean | With view minimal, add a compact hourly forecast [{at, value}]. |
view | minimal | full | minimal (default) for the essentials, full for sources, timestamps, hours and alternatives. |
get_history
What one place's waits were: hourly, daily or every reading. Needs a key; never predicts a visit.
| Name | Type | Description |
|---|---|---|
idrequired | string | A place id from find_waits (one place, lane or department, not a group), e.g. pl_xaed7pr1f5. |
from | string | Start, inclusive: a date YYYY-MM-DD (local to the place) or an ISO 8601 date-time with offset. Default: 7 days before to. |
to | string | End, exclusive: a date YYYY-MM-DD (local to the place) or an ISO 8601 date-time with offset. A date means the end of that day. Default: now. |
granularity | raw | hour | day | hour (default): hourly avg, median, p90, min, max. day: one row per local day. raw: every posted reading. |
tier | official | place | agent | Which kind of source. Default: the place's displayed source. |
cursor | string | page.next_cursor from the previous page; carries the range. |
limit | integer | Rows per page. Caps: raw 1000, hour 336, day 366. |
MCP and REST
- Unknown arguments are rejected with
invalid_parameter; REST ignores unknown parameters and says so in diagnostics. - MCP never guesses a location: send one, or a city or ZIP.
- A tool result carries the answer in
structuredContentand repeats it as JSON text for clients that read only text. - Without a key, MCP clients send back the
Mcp-Session-Idheader on their own, so each session is counted on its own.