{
  "markdown": "# Pulse Verity Index\n\n`pulse-verity` connects an AI agent to the **Pulse Verity Index**: signed,\nverifiable crypto index prices through the Model Context Protocol (MCP).\n\nIt exposes five read-only tools:\n\n| Tool | Purpose |\n|---|---|\n| `get_index_price(symbol)` | Return the current signed index value. |\n| `get_index_batch(symbols)` | Read 1–100 symbols with signed successful rows and per-symbol errors. |\n| `list_index_assets(limit, offset, band?, status?)` | Discover one catalog page with coverage and measured cadence. |\n| `get_settlement_print(symbol, at)` | Return the recorded signed print nearest a moment. |\n| `verify_print(print)` | Verify a print locally with ECDSA and the published public key. |\n\nThere are no write tools. This package contains no Pulse platform engine code.\nIt only calls the public Pulse Verity Index API. The developer supplies their\nown API key through `PULSE_API_KEY`.\n\n## Install\n\nCreate a developer API key at\n[thepulse.markets/developers](https://thepulse.markets/developers), then add the\nserver to your MCP client:\n\n```bash\nclaude mcp add pulse-verity \\\n  --env PULSE_API_KEY=pidx_your_key_here \\\n  -- npx -y pulse-verity\n```\n\nFor any stdio MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"pulse-verity\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"pulse-verity\"],\n      \"env\": { \"PULSE_API_KEY\": \"pidx_your_key_here\" }\n    }\n  }\n}\n```\n\n## Security boundary\n\n- Read-only MCP tools only.\n- API origin pinned to the public Pulse Verity Index API.\n- Developer key read from local configuration and sent only to that API.\n- Print verification happens locally using ECDSA P-256/SHA-256.\n- HTTP requests use a 15-second timeout, a 1 MiB response limit and no redirects.\n- Verification accepts at most 16 published keys; refreshes coalesce and are limited to once per 30 seconds.\n- API failures do not echo remote bodies, headers or transport errors. Returned credentials are redacted.\n- No wallet, account, platform-engine, venue-level, or private repository code.\n\nSee [SECURITY.md](SECURITY.md) for reporting instructions.\n\n## Signed prices and catalog data\n\nPrice and batch tools use the existing signed `/api/index/v1/price` and\n`/api/index/v1/batch` endpoints. A successful row can include `priceText`, `kid`,\n`tier`, `confidence`, `dispersionBps`, `interval`, `sources`, `engine` and\n`cadence`. Preserve `priceText` and `kid` when passing it to `verify_print`.\n\nThe immutable `pulse-index-v1` signature authenticates only this payload:\n\n```text\npulse-index-v1\n<symbol>\n<priceText if present, otherwise String(price)>\n<at>\n<grade>\n```\n\n`verify_print` rejects conflicting `price` and `priceText` values. It selects\nthe published public key matching `kid`; legacy prints without `kid` are tried\nagainst the bounded published key ring. The ring is cached for five minutes,\nwith a bounded refresh after a failed check. Legacy public-key responses\ncontaining only `publicKeyPem` still work for prints without `kid`. Verification\nis local, but the public keys are initially trusted through Pulse's pinned\nHTTPS endpoint. A key that is no longer published cannot verify an old print\nthrough this tool.\n\n`valid: true` authenticates the canonical price fields. It does not authenticate\n`kid`, quality, confidence, dispersion, interval, source counts, cadence, batch\nstatus or archive `deltaMs`. Check `deltaMs` before using a sampled historical\nprint for a particular moment.\n\nThe asset tool calls `/api/index/v1/verity/catalog`. It defaults to 50 rows,\naccepts `limit` from 1 to 100 and `offset` from 0 to 100000, and never fetches\nadditional pages automatically. Its rows and any displayed prices are unsigned.\nUse the price or batch tool to obtain signed receipts. Catalog coverage changes;\na listed asset or a catalog total does not guarantee a fresh price. Unavailable\nprices are not zero. API tier limits can be lower than the tool's batch limit.\n\n## Verify locally\n\n```bash\nnpm ci\nnpm test\n```\n\nThe offline suite compiles this small MCP package, exercises exact-price and\nrotated-key verification, tests MCP tool bounds and mocked HTTP limits, and runs\nthe Pulse WORDS vocabulary gate. It needs no API key or live market-data calls.\n\n## Alternate install names\n\nUse `pulse-verity` for supported installs and updates. Other similarly named\npackages are not a guarantee of availability or release parity.\n\n## License\n\nMIT\n",
  "bytes": 4360,
  "sha": "57553042f7ae9cc44e22a407bdf804259dae07a30ea0c53847f33851ee633e56",
  "repo_slug": "pulsebet/pulse-verity",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_pulsebet_pulse_verity_756c2e90/readme"
}