NNexlab MCP

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.

StatusCodeWhat to do
401api_key_requiredSend the Authorization header.
401invalid_api_keyThe key is unknown or revoked. Do not retry.
403not_subscribedSubscribe to that server. Other servers still work.
402quota_exceededMonthly quota spent. Retrying will not help until next month, an upgrade, or pay-as-you-go.
402insufficient_fundsPay-as-you-go is on but the balance is too low. Retrying will not help until it is topped up.
404unknown_serverWrong slug. Check the catalogue.
503server_disabledDeactivated by the operator. Not a fault, and not worth retrying.
503server_unavailableThat server failed to load. Others are unaffected — degrade, do not abort.
502upstream_unreachableA 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:

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.