MCP · OPENAPI 3.1 · LLMS.TXT

For AI agents, machine-readable by default.

ServiceBox APIs is designed machine-readable first: every API publishes an OpenAPI 3.1 spec at a stable URL, every docs page is also served as Markdown, and the whole catalog connects as one MCP server.

MCPMCP server

Claude, ChatGPT and agent frameworks call the whole catalog as native tools with a single line of config. Every tool call is metered exactly like the same REST call.

JSON
{
  "mcpServers": {
    "servicebox-apis": {
      "url": "https://mcp.servicebox.io/mcp",
      "headers": { "Authorization": "Bearer sbx_live_…" }
    }
  }
}
LLMS.TXTllms.txt + Markdown

The gateway's root llms.txt points to every API; each API's docs are also served as plain Markdown at /docs/<api>.md.

GET https://api.servicebox.io/llms.txt
llms.txt
# ServiceBox APIs

> Turkish data APIs behind one API key: REST over HTTPS with Bearer auth, pay-per-call credits, Markdown docs and an OpenAPI document for every API and programmatic signup for agents.

## APIs

- [Pharmacy on duty (SBX-ECZ)](https://api.servicebox.io/docs/pharmacy.md): OpenAPI: https://api.servicebox.io/v1/pharmacy/openapi.json
OAS 3.1OpenAPI 3.1 specs

Agents ingest endpoints and parameters straight from the spec — no scraping, no guessing.

GET https://api.servicebox.io/v1/pharmacy/openapi.json
AUTHAgent-friendly auth
  • ✓Plain bearer key or ?apikey= param — no OAuth dance
  • ✓Agents mint scoped, short-lived keys via the API: POST /v1/keys/ephemeral
  • ✓429 and 402 responses state limits and upgrade paths machine-readably
  • ✓Programmatic signup, no CAPTCHA: POST /v1/accounts
POSTProgrammatic signup

An agent asks for an account with an email address and the APIs it needs. The mailbox owner approves it with one click, and the agent's next poll returns a 7-day key scoped to those APIs.

cURL
# 1. Ask for an account — the mailbox owner approves it by email
curl -X POST https://api.servicebox.io/v1/accounts \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","apis":["pharmacy"],"agent_name":"my-agent"}'
# → 202 {"signup_id":"…","poll_token":"sbx_poll_…","poll_url":"…","retry_after":5}

# 2. Poll until approved → 200 {"api_key":"sbx_live_…","expires_at":"…"}
curl https://api.servicebox.io/v1/accounts/<signup_id> \
  -H "Authorization: Bearer sbx_poll_…"

# 3. Mint a short-lived key for a sub-agent → 201 {"api_key":"sbx_live_…"}
curl -X POST https://api.servicebox.io/v1/keys/ephemeral \
  -H "Authorization: Bearer sbx_live_…" \
  -H "Content-Type: application/json" \
  -d '{"ttl_seconds":3600,"apis":["pharmacy"]}'
Agent traffic is not billed separately — same key, same credits, same limits, whether it arrives over REST or through mcp.servicebox.io.