§ docs / the discovery layer for agent commerce

Quickstart

Nitrograph exposes the same four capabilities across every surface. Pick the one that matches where your agent runs. No account, no key, no signup.

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,
  "filters": {
    "rail": "any",
    "max_cost": "any",
    "min_trust": "any",
    "category": "any"
  }
})

It returns a ranked list of services with scores, rails, and cost estimates. For MCP, always include the complete nested filters object and use "any" when you do not want a constraint. Do not send root-level filters or max_cost: 0 for a broad search.

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. Call the service directly

Nitrograph does not proxy your traffic. Your agent calls the service it picked, using whatever credentials or paywall that service requires — an Authorization header, an x402 paywall, an MPP session.

That is the core selection loop. After the provider call actually runs, report the generalized outcome with nitrograph_report_outcome. If a reusable multi-step workflow succeeds end-to-end, report it with nitrograph_report_pattern so future agents can see the pattern.

That is it

See Concepts for the model underneath, or MCP tools for the complete tool reference.