Docs

MCP server

Point your coding assistant at these pages. One address, no install, no key — so it writes your integration against the API as it is deployed rather than against whatever it remembers.

On this page

What it is

An MCP server that serves these documentation pages to your coding assistant. Add the address once and Claude, Cursor, VS Code or anything else that speaks the protocol can search and read the docs while it writes your integration, instead of recalling an API it was never trained on.

https://montvo.com/api/mcp

It is hosted by us, so there is nothing to install and nothing to keep up to date. It reads the same content these pages render — not an export of it — so an answer it gives cannot be older than the site.

Connecting it

Every client wants the same address; they differ only in where you put it.

Claude Code
claude mcp add --transport http montvo-docs https://montvo.com/api/mcp

Most others take a JSON block. This is the shape Cursor, Claude Desktop and the majority of clients use — in Cursor it goes in .cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project:

.cursor/mcp.json
{  "mcpServers": {    "montvo-docs": {      "url": "https://montvo.com/api/mcp"    }  }}

VS Code names the block servers and asks for the transport, in .vscode/mcp.json:

.vscode/mcp.json
{  "servers": {    "montvo-docs": {      "type": "http",      "url": "https://montvo.com/api/mcp"    }  }}

Somewhere with a settings screen instead

Claude's apps and a few others take the address in a form — look for connectors, integrations or MCP servers in settings, choose a custom or HTTP server, and paste the address above. Which menu it is under moves about; the address does not.

The tools

search_docsquery, limit
Matching sections in full, as Markdown, each with the address it came from. Matches terms rather than meanings, so exact names work best — data-exclude, /unlocks/:token, billable.
read_docpath
One whole page, code samples included.
list_docs
Every page, with a line each. Cheap, for working out what exists.
report_problemwhen something is wrong
Triages a symptom first — a wrong key kind and an aged-out token account for most of what looks like a fault, and it says so rather than sending you anywhere. What is genuinely ours comes back as a report with the endpoint, the time and the key prefix already in it, which is what lets us find the exact call in our log instead of asking you to reproduce it.

Read-only, all four. There is no tool here that can make a link, read your stats or touch an account — this server has no idea who you are, and that is on purpose.

Never let an assistant put a key in a tool call

report_problem takes a key_prefix, meaning the first dozen characters — enough to find your account in a log, useless to anyone who reads it. It cuts anything longer down to that, but the safe habit is not to hand it a whole key in the first place.

What it is not

Does it need a key?No. It serves published documentation, so there is nothing to authenticate.
Can it reach my account?No. It has three tools and all three read documentation. Your links, keys, stats and payouts are behind the REST API, which this server does not call.
Does it send you my code?No. Your client sends a search query and we send documentation back. What your assistant does with your files is between you and your client.
Is there an MCP server for the API itself?Not yet. This one is documentation only. If you want an assistant to create links or read stats, give it the REST API and a secret key of your own.

Checking it works

Ask your assistant something only these pages can answer — “what does data-exclude do on the Montvo tag?” is a good one, because a model that is guessing will invent something plausible about excluding links and a model that is reading will tell you that the page's own hostname is always excluded anyway.

Or ask the server directly, without a client at all:

Terminal
curl -s -X POST https://montvo.com/api/mcp \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

It answers with the three tools above. If it does not, the address is wrong or your network is in the way.

  • The transport is Streamable HTTP over POST. There is no event stream, so a GET answers 405 — which is what the protocol says to do, and clients carry on.
  • No session is issued. Every call stands alone, so there is nothing for a client to lose and reconnect.
Something here wrong, or missing?Tell us →