Quickstart
Nitrograph exposes the same four capabilities across every surface. Pick the one that matches where your agent runs. Discovery needs no account, no key, no signup - paid invocations take one key, below.
Fastest path: OAuth connect or self-pairing
MCP hosts with OAuth support (Claude Code, Codex) need only the server URL -
https://api.nitrograph.com/mcp - and their built-in Authenticate flow:
browser consent, spend caps you set, tokens that refresh themselves, no key
in any config file.
Or: let your agent pair itself
If your agent is already connected to the Nitrograph MCP
(https://api.nitrograph.com/mcp), you don't need to copy keys around. Tell
it to authenticate: it calls nitrograph_authenticate, gives you a short
code and nitrograph.com/pair, you sign in and
approve once (~30 seconds, no card), and the agent receives its own
ng_live_ key - capped at $1/call, $20/day, $200/month, revocable anytime
from API Keys. The manual recipe
below does the same thing by hand.
0. Connect your agent (for paid calls)
Discovery is free. To let your agent call and pay for services - validated results, refunds on failure, signed receipts - connect it once. No card, no key to copy, and the first certified call is free: pairing or OAuth connect seeds a one-time $1 certified-only credit.
- OAuth connect (Claude Code, Codex, any host with an Authenticate
flow): add
https://api.nitrograph.com/mcpas an MCP server and pick Authenticate. Consent opens in your browser; the agent holds tokens that refresh themselves. - Or pair: ask the agent to authenticate. It calls
nitrograph_authenticate, shows a short code and nitrograph.com/pair, you sign in and approve once (~30 seconds), and the agent receives its ownng_live_key - $1/call, $20/day, $200/month by default, revocable from Agents & Keys. - Make the first call (below). Add credits from the dashboard only when you want more than the free certified call or an uncertified service.
Scripts and CI that cannot do OAuth or pairing can still create a key manually and set it as an environment variable, whatever surface you use below:
export NITROGRAPH_API_KEY=ng_live_...
Either way, every surface on this page can then invoke paid services. Calls are quoted up front, held, and only charged when the response validates - a failed call is refunded automatically.
1. Install
Option A, MCP (recommended inside an agent host)
Register this URL as an MCP server in your client:
https://api.nitrograph.com/mcp
That is the whole install. Streamable HTTP, stateless, no npm, no subprocess. Works in Claude Code, Cursor, Windsurf, Claude Desktop, Hermes, or any other client that supports remote MCP servers.
For clients that only support stdio MCP, run:
npx nitrograph
The installer detects installed clients (Claude Desktop, Cursor, Windsurf, Claude Code) and wires in a local stdio server. See the support matrix for the full list.
Option B, Claude Code plugin
/plugin marketplace add nitrographtech/claude-plugins
/plugin install nitrograph@nitrograph
This installs the MCP server, Nitrograph skill, and /discover
command for Claude Code.
Option C, Codex plugin
codex plugin marketplace add nitrographtech/cli --sparse .agents/plugins
codex plugin marketplace upgrade nitrograph-plugins
Restart Codex, open the plugin directory, select Nitrograph Plugins, and install Nitrograph.
Option D, Agent harness (for agent code)
npm i nitrograph
import { Nitrograph } from "nitrograph";
const ng = new Nitrograph();
const { results } = await ng.discover("b2b lead enrichment");
const detail = await ng.serviceDetail(results[0].slug);
Typed TypeScript, no MCP host required. Full reference at Agent harness.
Option E, Raw HTTP
If you are not running Node, jump to the HTTP API and
curl the endpoints directly.
2. Call nitrograph_discover
Ask your agent to find a service for a task. For example:
"find 500 CRO leads at 50-200 employee SaaS companies"
Under the hood your agent calls:
nitrograph_discover({ "query": "b2b lead enrichment", "limit": 10 })
It returns a ranked list of services with scores, rails, and cost
estimates. filters is optional - omit it for an unconstrained search,
and when you do constrain, nest only the keys you want (rail,
max_cost numeric USD, min_trust 0-100, category). Do not send an
"any" sentinel or root-level filters - the live schema rejects them.
max_cost: 0 means free-only.
3. Call nitrograph_service_detail
Before you call the service, load its service map: the full integration surface plus every gotcha and proven pattern our probe fleet has mapped:
nitrograph_service_detail({
"slug": "apollo",
"task": "b2b lead enrichment"
})
You get the endpoints, the auth shape, the cost contract, and the operational memory, version drift, schema quirks, undocumented caps, param combinations that silently return empty. This is the part that saves you a debugging cycle.
4. Invoke through Nitrograph
Run the call through managed invocation - nitrograph_invoke_service
or POST /v1/invoke with the slug discover printed (pass a
route_cards[].path as endpoint to pick a specific route). The call
is quoted, held against prepaid credits, paid upstream, validated,
refunded on failure, and receipted - and outcome telemetry is recorded
automatically, no separate report needed. Your first certified call
is free: pairing or OAuth connect seeds a one-time $1 certified-only
credit.
Calling the provider directly (its own auth header, x402 paywall, or
MPP session) remains supported as the fallback when you'd rather not
route payment through Nitrograph - on that path, report the outcome
with nitrograph_report_outcome so the graph still learns.
That is it
See Concepts for the model underneath, or MCP tools for the complete tool reference.