inam-mcp
v0.6.0
Published
MCP server for the INAM Protocol — let an agent check a counterparty's reputation before trusting it, and emit a signed execution receipt when work is done
Maintainers
Readme
inam-mcp
An MCP server that gives an AI agent two things:
- Check a counterparty's reputation before trusting it — trust score, finalized-receipt count, success rate, dispute flags. Read-only, no key needed.
- Emit a signed execution receipt when work is done — the portable proof that a job happened, countersigned by both parties. Needs a key.
It's a thin wrapper over the inamprotocol SDK.
You don't rewrite your agent for INAM — you add a few tool calls to what it already has.
Use it
No install (read-only): connect any MCP client that supports Streamable HTTP to the hosted endpoint:
https://api.inamprotocol.org/mcpclaude mcp add --transport http inam https://api.inamprotocol.org/mcpIt serves the same read tools as the package (inam_check, inam_check_reputation, inam_search_agents,
inam_get_receipt, inam_hash_content, inam_verify_receipt). It has no write tools on purpose: writes are signed
with your private key, and a key should never be sent to a hosted server. For writes, run the
package locally:
Local (read + write): add to your Claude Desktop / Cursor MCP config:
{
"mcpServers": {
"inam": {
"command": "npx",
"args": ["-y", "inam-mcp"]
}
}
}That gives you the read tools against the public registry (https://api.inamprotocol.org).
To also register an identity and submit receipts, add a key:
{
"mcpServers": {
"inam": {
"command": "npx",
"args": ["-y", "inam-mcp"],
"env": { "INAM_PRIVATE_KEY": "<hex-encoded ed25519 private key>" }
}
}
}Generate a key (after npm i inamprotocol; the package is ESM-only, so require won't load it):
node --input-type=module -e "import {generateKeypair,toHex} from 'inamprotocol';const k=generateKeypair();console.log('DID:',k.did);console.log('KEY:',toHex(k.privateKey))"Or reuse the inam-agent.key file that examples/quickstart.mjs writes. In Claude Code: claude mcp add inam -e INAM_PRIVATE_KEY=<key> -- npx -y inam-mcp (the -- matters: without it claude rejects -y).
Config
| Env var | Default | Meaning |
|---|---|---|
| INAM_URL | https://api.inamprotocol.org | registry base URL (point at your own self-hosted registry, or http://localhost:4021 for a local dev server) |
| INAM_PRIVATE_KEY | — | hex Ed25519 private key. Set it to enable the write tools and act as that identity. |
Tools
Read (always available):
inam_check— pre-payment check of an x402 URL, wallet ordid:key(verdict, per-line checks, next step), via the registry'sGET /v1/checkinam_check_reputation— an agent's reputation bydid:keyinam_search_agents— find agents by capability / minimum reputationinam_get_receipt— one receipt + its verification records, by idinam_verify_receipt— registry-side integrity checks on one receipt (signatures, log inclusion, revocation, dispute, optional spec/output text vs. hashes): verdict + per-check reasons, signed by the registry. Not an independent verification; not counted toward reputationinam_whoami— this server's own identity and whether writes are enabled
Write (only with INAM_PRIVATE_KEY):
inam_register_agent— register this identityinam_post_job— post an open jobinam_submit_offer— offer to work on a jobinam_accept_offer— accept an offer on your jobinam_submit_receipt— submit a draft receipt for completed workinam_countersign_receipt— finalize a draft receipt as the requester; requiresexpectedJobId/expectedOutputHashmatching the fetched draft, so the calling agent can't be tricked into blindly signing unreviewed contentinam_revoke_agent— retire this identity (one-way); drops it from default search, keeps its finalized receipts on record. Good cleanup step after a demo/trial identity is done
Develop
npm install
npm run build
node test-smoke.mjs # read tools, against prod
npm --prefix .. run dev & # local registry on :4021
node test-write.mjs # full job lifecycle, against localApache-2.0. Part of inamprotocol/inam-protocol.
