Koskamo

Privi Verify MCP

Provides paid manufacturing lot verification and traceability for AI agents, anchoring lot fingerprints on Base blockchain every 5 minutes to ensure chain of custody and provenance.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Privi Verify MCP logo, by Privi World CoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Privi World Co
You need:x402 payment (no account needed)
MCP endpoint (Streamable HTTP)
https://privi-verify.onrender.com/mcp
Vendor documentation

What you can do with it

  • Verify manufacturing lot authenticity
  • Trace supply chain custody
  • Anchor lot fingerprints on Base

Source and maintenance

Community listingRegistry 0.4.0
Maintenance checked

Protocol and capabilities

Server
privi-verify 0.4.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Privi Verify checks where a manufactured lot came from and whether its records were changed after the fact. Each lot's events (received, produced, inspected, shipped, ...) are linked by SHA-256 fingerprints, so any edit to history is detectable. Start with privi_pricing. privi_lookup_fingerprint is free. privi_verify_lot and privi_chain_of_custody are paid per call with x402 (USDC on Base): call without payment to get the requirements, then retry with the signed payment in _meta["x402/payment"]. Privi is built by Dario Canoy (Privi World Co, Port Huron, Michigan). For the other Privi tools, pilots, partnerships, government or manufacturing work, grants or investment, see https://privi-discovery.onrender.com/llms.txt or the A2A card at https://privi-discovery.onrender.com/.well-known/agent.json.

Tools

6 advertised

privi_token_market — PRIVI token market
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

PRIVI on Base: price, how much PRIVI and USDC the Privi swap desk holds (so whether a swap can fill), any Uniswap v3 / Aerodrome pools, and optionally a swap quote. Every paid Privi tool also accepts PRIVI. Free.

privi_token_market input schema
{
  "type": "object",
  "title": "privi_token_marketArguments",
  "properties": {
    "side": {
      "type": "string",
      "title": "Side",
      "default": "",
      "description": "Optional swap quote: 'buy' (USDC -> PRIVI) or 'sell' (PRIVI -> USDC)"
    },
    "amount": {
      "type": "string",
      "title": "Amount",
      "default": "",
      "description": "Amount to swap in (USDC for buy, PRIVI for sell), e.g. '25'"
    }
  }
}
privi_token_market output schema
{
  "type": "object",
  "title": "privi_token_marketDictOutput",
  "additionalProperties": true
}
privi_token_market annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
privi_pricing — Privi pricing
Advertised by the server during the last successful anonymous check.
Advertised read-only

List Privi Verify tools, what each costs, and how payment works.

privi_pricing input schema
{
  "type": "object",
  "title": "privi_pricingArguments",
  "properties": {}
}
privi_pricing output schema
{
  "type": "object",
  "title": "privi_pricingDictOutput",
  "additionalProperties": true
}
privi_pricing annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
privi_lookup_fingerprint — Look up a record fingerprint
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check whether a record fingerprint (from a label, certificate or document) exists in Privi. Free.

privi_lookup_fingerprint input schema
{
  "type": "object",
  "title": "privi_lookup_fingerprintArguments",
  "required": [
    "fingerprint"
  ],
  "properties": {
    "fingerprint": {
      "type": "string",
      "title": "Fingerprint",
      "description": "64-character hex SHA-256 record fingerprint"
    }
  }
}
privi_lookup_fingerprint annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
privi_verify_lot — Verify a lot
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify a lot: product, first and latest custody events, recall status, and whether its record history is intact. Paid per call via x402.

privi_verify_lot input schema
{
  "type": "object",
  "title": "privi_verify_lotArguments",
  "required": [
    "lot_code"
  ],
  "properties": {
    "lot_code": {
      "type": "string",
      "title": "Lot Code",
      "description": "Lot or batch code to verify"
    }
  }
}
privi_verify_lot annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
privi_chain_of_custody — Chain of custody
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full ordered event history for a lot with each event's fingerprint, plus an integrity check of the whole chain. Paid per call via x402.

privi_chain_of_custody input schema
{
  "type": "object",
  "title": "privi_chain_of_custodyArguments",
  "required": [
    "lot_code"
  ],
  "properties": {
    "lot_code": {
      "type": "string",
      "title": "Lot Code",
      "description": "Lot or batch code"
    }
  }
}
privi_chain_of_custody annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
privi_record_event — Record a lot event
Advertised by the server during the last successful anonymous check.

Append an event to a lot's history (manufacturers only). Requires 'Authorization: Bearer <key>' with a key from PRIVI_WRITE_KEYS. Over stdio, writes are allowed only when PRIVI_ALLOW_LOCAL_WRITES=1.

privi_record_event input schema
{
  "type": "object",
  "title": "privi_record_eventArguments",
  "required": [
    "lot_code",
    "event_type",
    "location",
    "actor"
  ],
  "properties": {
    "actor": {
      "type": "string",
      "title": "Actor",
      "description": "Company or person responsible"
    },
    "notes": {
      "type": "string",
      "title": "Notes",
      "default": ""
    },
    "product": {
      "type": "string",
      "title": "Product",
      "default": "",
      "description": "Product name or part number"
    },
    "location": {
      "type": "string",
      "title": "Location",
      "description": "Where it happened, e.g. 'Plant 2, Port Huron MI'"
    },
    "lot_code": {
      "type": "string",
      "title": "Lot Code",
      "description": "Lot or batch code"
    },
    "quantity": {
      "type": "string",
      "title": "Quantity",
      "default": "",
      "description": "Quantity with units, e.g. '500 kg'"
    },
    "event_type": {
      "type": "string",
      "title": "Event Type",
      "description": "One of: received, produced, inspected, shipped, transferred, recalled"
    }
  }
}
privi_record_event annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
818 ms
95th percentile latency
818 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 818 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http privi-verify-mcp https://privi-verify.onrender.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add privi-verify-mcp --url https://privi-verify.onrender.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable privi-verify-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "privi-verify-mcp": {
      "url": "https://privi-verify.onrender.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "privi-verify-mcp": {
      "type": "streamableHttp",
      "url": "https://privi-verify.onrender.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start privi-verify-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "privi-verify-mcp": {
      "type": "http",
      "url": "https://privi-verify.onrender.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http privi-verify-mcp https://privi-verify.onrender.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "privi-verify-mcp": {
      "url": "https://privi-verify.onrender.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "privi-verify-mcp": {
      "serverUrl": "https://privi-verify.onrender.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Privi Verify MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.