MCP server
Connect Claude Code, Cursor or any Streamable HTTP MCP client to the SETTO External API with six read-only tools, authenticated by the same organization API token.
SETTO publishes a remote Model Context Protocol
server at https://docs.setto.io/mcp. It exposes the same six read-only
endpoints as the HTTP API as MCP tools, so an assistant can answer "how many
teams are in the Cuarta Fuerza category?" by calling a tool instead of you
pasting JSON into a chat. It takes the same organization API token you already
use — there is nothing extra to provision.
Endpoint
| Property | Value |
|---|---|
| URL | https://docs.setto.io/mcp |
| Transport | Streamable HTTP |
| Auth | Authorization: Bearer setto_live_… — the same organization token as the REST API |
| Access | Read-only |
The server is a thin proxy: it forwards each tool call to the External API with your token and hands the JSON back. Anything the API refuses — another organization's tournament, a write — the MCP server refuses too.
Tools
| Tool | Endpoint behind it | Guide |
|---|---|---|
me | GET /v1/external/me | Authentication |
list_tournaments | GET /v1/external/tournaments | List tournaments |
get_tournament | GET /v1/external/tournaments/{idx} | Get a tournament |
list_divisions | GET /v1/external/tournaments/{idx}/divisions | List divisions |
list_teams | GET /v1/external/tournaments/{idx}/teams | List teams |
get_round | GET /v1/external/rounds/{idx} | Get a round |
Arguments mirror the query parameters documented for each endpoint, including
populate, limit/offset and the division filter. There is no tool that
writes.
Connect a client
claude mcp add --transport http setto https://docs.setto.io/mcp \
--header "Authorization: Bearer $SETTO_API_TOKEN"Export SETTO_API_TOKEN in the shell you run that command from, so the secret
never appears in your shell history. Confirm with /mcp inside Claude Code —
setto should list the six tools.
Clients this does not work with yet
No OAuth in v1
Claude Desktop and claude.ai custom connectors, and ChatGPT's connectors, require the MCP server to implement OAuth. Version 1 of the SETTO MCP server authenticates with a bearer token only, so those clients cannot connect to it.
Until OAuth lands, use one of these instead:
- Claude Code or Cursor — both accept a static
Authorizationheader, as above. - The Agent Skill —
setto-apiteaches any agent the six endpoints and it makes plain HTTP calls. That works in every client, including the ones above. - The REST API directly — see the quickstart.
Security notes
- The token is a header, not a secret the model sees. Configure it in the client, never paste it into a conversation — a pasted token ends up in the transcript and, depending on your setup, in logs.
- Use the environment.
$SETTO_API_TOKENin Claude Code,${env:…}in Cursor. Do not commit.cursor/mcp.jsonwith a literal token in it. - Scope what you can. A token reads one organization and nothing else. If you are connecting a shared workspace, create a dedicated token for it so you can revoke it alone.
- Read-only by construction. There is no tool that mutates SETTO data, so a confused or prompt-injected model cannot change a draw or a score through this server.
- It counts against your rate limit. Tool calls are API requests: 120 per 60 seconds per token, shared with anything else using that token. See Rate limits.
A sample conversation
You: Which categories in Torneo Apertura 2026 still have unfinished games?
Assistant: calls
list_tournamentswithstatus: "IN_PROGRESS"— foundTorneo Apertura 2026(3c9b7f52-…).calls
list_divisionswith that tournament andpopulate: "rounds"— three categories, five rounds between them.calls
get_roundfor each round withpopulate: "games"—Cuarta Fuerza Varonil has 4 of 12 games still
UPCOMING; Primera Fuerza Femenil is complete; Mixta B has 1 game left, scheduled for Saturday 10:00.
Three tool names, no JSON on your screen. The assistant is reading the same payloads documented in the guides — if a number looks wrong, ask it which tool call produced it and check that endpoint by hand.
Related
- Agent Skills — the client-agnostic fallback, and what to install when MCP is not an option.
- Docs for LLMs —
llms.txt, per-page Markdown,/openapi.json. - Rate limits — the budget your tool calls share.