For agents
Written for the model reading this, not only the person who deployed it. How to connect, what each failure means, and how to treat the answers so what you report can be defended. Also available as JSON and llms.txt.
Connecting
Every server speaks Streamable HTTP MCP at
https://mcp.nexlab.net/mcp/<slug>. One key works for every server you are
subscribed to.
{
"mcpServers": {
"planet-watch": {
"type": "streamable-http",
"url": "https://mcp.nexlab.net/mcp/planet-watch",
"headers": { "Authorization": "Bearer nxl_…" }
}
}
}
The key may also be sent as X-API-Key. Create one on your
account page.
Or one endpoint for all of them
Drop the slug and https://mcp.nexlab.net/mcp answers for everything that key reaches.
Tools arrive namespaced as <server>__<tool>, so two servers with a
search tool stay distinct, and each call is metered against the server it
belongs to.
{
"mcpServers": {
"nexlab": {
"type": "streamable-http",
"url": "https://mcp.nexlab.net/mcp",
"headers": { "Authorization": "Bearer nxl_…" }
}
}
}
Call tools/list again after buying a subscription — the list follows your
entitlement rather than a config file. initialize and tools/list
are free; only tools/call is billed. A server that cannot be reached drops out
of the list for that request instead of failing the whole call.
Errors here are JSON-RPC rather than HTTP: -32001 means no
entitlement to that server, -32002 means the allowance or the balance will not
cover the call. The data object carries the server and where to fix it.
What the errors mean
Failures are typed, deliberately. If you get a status here, it tells you what to do next rather than leaving you to guess — that distinction is the reason this marketplace exists.
| Status | Code | What to do |
|---|---|---|
| 401 | api_key_required | Send the Authorization header. |
| 401 | invalid_api_key | The key is unknown or revoked. Do not retry. |
| 403 | not_subscribed | Subscribe to that server. Other servers still work. |
| 402 | quota_exceeded | Monthly quota spent. Retrying will not help until next month, an upgrade, or pay-as-you-go. |
| 402 | insufficient_funds | Pay-as-you-go is on but the balance is too low. Retrying will not help until it is topped up. |
| 404 | unknown_server | Wrong slug. Check the catalogue. |
| 503 | server_disabled | Deactivated by the operator. Not a fault, and not worth retrying. |
| 503 | server_unavailable | That server failed to load. Others are unaffected — degrade, do not abort. |
| 502 | upstream_unreachable | A proxied server did not answer. Safe to retry once. |
A redirect or a fault on our side refunds the call rather than charging your quota for our bug.
How to reason about the answers
These servers are built to be cited, not just called. Two conventions hold across the fleet:
- Provenance is part of the response. Most tools return a
provenanceblock naming only the sources behind that specific answer, each with its material and caveats. Quote the source, not the server. - Caveats are load-bearing. When a response says data is volunteer-collected, model output, advisory-only, or US-only, that is a limit on what the answer can support — not boilerplate. Repeat it to the user when it changes the meaning.
Where a tool cannot answer, it says so and why. An empty result and a refused upstream are distinguishable on purpose; do not report the second as the first.
Rate and quota behaviour
Quota is per server per calendar month and is consumed by the call that checks it, so concurrent calls cannot share the last slot. Cold servers take about ten seconds on the first request and roughly 0.2s warm — if you are benchmarking, discard the first call.
One credential
You hold one key and it reaches every server you are subscribed to. You are never asked for
a third-party credential: where a source requires one, the server holds it and the access is
part of what you are paying for. If a tool ever returns something resembling
needs_api_key, that is a bug — please report it.
Rotate or revoke your key on the account page; revocation takes effect immediately.
Catalogue
/api/catalogue lists every server with slug, summary, price, tool count and availability. /health reports which are loaded. Both are unauthenticated and safe to poll politely.