# MCP server

> These docs are an MCP server. Connect it once and your coding assistant reads the documentation itself — searching it, opening pages, pulling an endpoint's exact request and response schema — instead of you pasting pages into a chat window.

## Connect it

One URL, https://docs.munsit.com/api/mcp. No key, no auth, nothing to install — the docs are public and so is the server.

```
claude mcp add --transport http munsit-docs https://docs.munsit.com/api/mcp
```

```
{
  "mcpServers": {
    "munsit-docs": {
      "url": "https://docs.munsit.com/api/mcp"
    }
  }
}
```

```
# for a client that speaks stdio but not Streamable HTTP
npx -y mcp-remote https://docs.munsit.com/api/mcp
```

```
curl -sX POST https://docs.munsit.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

Response

```
// the server is stateless, so tools/list answers without a handshake
{ "result": { "tools": [ { "name": "search_docs", … } ] } }
```

Streamable HTTP, stateless — there is no session to keep alive and nothing to configure per project. [What is MCP? →](https://modelcontextprotocol.io)

> Using Claude in the browser? Add https://docs.munsit.com/api/mcp as a custom connector under Settings → Connectors. Any client that takes a remote MCP URL will take this one.

## What your assistant gets

Five tools. The first two are the ones it will reach for most: find the right page, then read it.

| Tool | Arguments | What comes back |
| --- | --- | --- |
| **search\_docs** | `query`, `limit` | The pages matching a question, ranked, each with the excerpt that matched. Arabic queries work as well as English. |
| **get\_page** | `path` | One page as Markdown, every code sample included. Takes `/errors`, `errors`, `/errors.md` or a full URL. |
| **list\_pages** | — | The whole documentation index, grouped as the sidebar groups it, one line per page. |
| **list\_endpoints** | `query` | Every REST operation from the OpenAPI spec: method, path, summary. Filterable. |
| **get\_endpoint** | `path`, `method` | One operation's full OpenAPI definition — parameters, request body, responses — with every $ref inlined, so it reads as one self-contained document. |

Ask for a working integration and it goes and gets what it needs:

```
Transcribe a meeting recording with speaker labels, in Python.
Use the Munsit docs MCP server for the exact request and response shapes.
```

## Without MCP

Everything the server exposes is a plain URL too, for a tool that only fetches. Nothing here needs a key either.

- [llms.txt](/llms.txt) — Every page with its one-line description — the index, for orienting before fetching. — `/llms.txt`

- [llms-full.txt](/llms-full.txt) — The whole documentation as one Markdown file. Around 54k tokens, so prefer the MCP server or a single page. — `/llms-full.txt`

- [Any page as Markdown](/errors.md) — Append .md to any URL, or send an Accept: text/markdown header and the same URL returns Markdown. — `/errors.md`

- [OpenAPI & AsyncAPI](/openapi.json) — The REST surface and the WebSocket protocol as specs, for generating a client. — `/openapi.json`

> Reading these docs is all this server does — it has no access to your Munsit account, your keys, or your audio. To call the API itself you still need a key.
