MCP server

Plug your agents straight in

A hosted Model Context Protocol endpoint at /mcp. A handful of tools, the whole catalogue behind them, and exactly the metering, rate limits and logging of the REST API — an MCP tool call is an API call.

Connect

One URL, your existing key

The endpoint is https://www.monocrawl.com/mcp (Streamable HTTP transport, stateless). Authenticate with the same x-api-key header as the REST API — or a Bearer token where your client only offers an Authorization field. There is nothing to install and no separate MCP credential.

Claude Code
claude mcp add --transport http monocrawl https://www.monocrawl.com/mcp \
  --header "x-api-key: mn_your_key_here"
Cursor — .cursor/mcp.json
{
  "mcpServers": {
    "monocrawl": {
      "url": "https://www.monocrawl.com/mcp",
      "headers": { "x-api-key": "mn_your_key_here" }
    }
  }
}

Other clients use different configuration formats. See the integration guide, including Codex’s TOML example.

Tools

A handful of tools, not four hundred

Agents work best discovering the catalogue at runtime instead of drowning in hundreds of tool schemas. Discovery is free, so a model can browse before it spends anything.

ToolArgumentsDoes
call_endpointplatform, endpoint, paramsExecute a /v1 operation. Billed on success; failures cost 0 and never return sandbox samples.
list_endpointsplatform?, search?The registered catalogue — ids, names, costs, parameters. Free.
get_endpointidOne operation in full, with a ready-to-run example. Free.
get_balancecredits_remaining and credits_lifetime. Free.
list_monitorsstatus?, limit?, cursor?A page of your monitors with status, schedule, last run and this month’s spend. Follow the cursor for more. Free.
get_monitoridOne monitor in full with recent runs and receipts. Free.
create_monitorquery | url | platform+endpoint, …, confirmWithout confirm: the plan and estimate, nothing created. With confirm: true, creates it (1 credit).
update_monitorid, status?, name?, schedule_minutes?, …Pause (status: paused), resume (active) or edit. Free.
run_monitorid, confirmWithout confirm: the monitor and its per-run estimate. With confirm: true, queues one check, charged up front at the estimate and settled against the completed check.
monitor_findingsid, unseen?, limit?, cursor?, mark_seen?Findings with evidence links and receipts. Free.
delete_monitorid, confirmWithout confirm: the monitor, untouched. With confirm: true, deletes it. Irreversible.

Tool calls routed into the API carry the standard envelope as structured content — credits_used, credits_remaining and request_id (balance can be absent on errors). Tool-validation errors can contain only isError and text; protocol errors use JSON-RPC error, not the API envelope. MCP calls production /v1: the result is real upstream/cache data or a typed error, never a sample fallback.

Guarantees

No side door

Same auth

Keys are validated identically to /v1 — revocation and per-key credit limits apply immediately.

Same rate limits

MCP traffic shares the per-key bucket: 600 requests/minute, 25 concurrent. Protocol requests such as initialize, ping and tools/list count too; notifications are acknowledged separately.

Same metering

call_endpoint bills exactly what the REST call would. Free endpoints stay free; failures and samples cost 0.

Same logging

Calls entering the API pipeline write a usage event, visible in your console usage log with its request_id.

Monitor confirmation

create_monitor, run_monitor and delete_monitor do nothing without confirm: true (the boolean). Called without it they return the plan, or the monitor as it stands. Ordinary call_endpoint requests execute immediately and may spend credits; there is no general server-side confirmation step. Configure approval in your MCP client if you require it for each call.

Your monitors only

Every monitor tool is scoped to the key’s account. Another account’s monitor id is a not-found, never a hint.

Wire format

Plain JSON-RPC, if you want it raw

The server answers single JSON-RPC 2.0 messages with plain JSON responses — no SSE stream, no session ids, so it behaves under serverless scaling and does not require a persistent server-side session. An in-flight request can still fail during a redeploy. Useful to know when smoke-testing from the shell:

smoke test
curl -X POST https://www.monocrawl.com/mcp \
  -H "x-api-key: mn_your_key_here" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
        "name":"call_endpoint",
        "arguments":{"platform":"github","endpoint":"profile","params":{"handle":"torvalds"}}
      }}'

JSON-RPC batch arrays are rejected (removed in MCP 2025-06-18), GET /mcp answers 405 because there is no server-push stream, and unknown methods return -32601. The server recognises protocol versions 2024-11-05, 2025-03-26 and 2025-06-18; an unrecognised version negotiates to its supported default.

First call in under a minute

150 free credits and a ready-made key the moment you sign up. No card.