# pulse-verity [Health: Active]

**Category:** 💰 Finance & Fintech  
**Repository:** https://github.com/PulseBet/pulse-verity  
**GitHub Stars:** 4  
**npm Downloads (last month):** 1233  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/pulse-verity

## Description
Read-only access to signed, verifiable crypto index prices from the Pulse Verity Index

## Tools
Capabilities this server exposes over MCP:

- **get_index_price** — Get a current signed crypto index price from /api/index/v1/price. Returns symbol, price, optional priceText, at, grade, signature, kid and sig. Preserve priceText exactly for verify_print. Optional tier, confidence, dispersionBps, interval, sources, engine and cadence describe the observation. Pass the whole print including v2 to verify_print; require recordValid=true before trusting quality fields. Coverage changes: use list_index_assets to discover assets. A stale or unavailable response means no current price, never zero. Without a developer key, only limited daily BTC, ETH and SOL samples are served.
- **get_index_batch** — Read up to 100 crypto symbols in one /api/index/v1/batch request. Returns observations with individually signed successful rows and per-symbol errors for unavailable rows. Your plan may allow fewer symbols per request: get_account_status shows batchMaxSymbols, and a larger request is refused with code TOO_MANY_SYMBOLS, batchLimit and requested, so split it. Verify each successful row with verify_print and require recordValid=true before trusting its quality fields. Surrounding batch metadata is unsigned. No automatic retries. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **list_index_assets** — Read one bounded page from /api/index/v1/verity/catalog. Discover crypto symbols and their current coverage status and measured cadence. Catalog rows, prices and metadata are unsigned: use get_index_price or get_index_batch for signed receipts. Availability changes; total is a catalog count, not a count of fresh prices. No automatic pagination. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **get_recorded_print** — Get the recorded signed index print nearest a requested time from /api/index/v1/print. Accepts ISO-8601 or epoch milliseconds. Check deltaMs: it is the distance between your requested time and the sampled print. Sampling and retention are bounded; a recorded print need not equal a separate live read. Preserve the whole print, including priceText, kid and v2, for verify_print. Require recordValid=true before trusting quality fields. Request-envelope fields such as deltaMs are unsigned. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **get_settlement_print** — The earlier name of get_recorded_print, kept so existing integrations keep working; prefer get_recorded_print. Same input, output and behaviour. Get the recorded signed index print nearest a requested time from /api/index/v1/print. Accepts ISO-8601 or epoch milliseconds. Check deltaMs: it is the distance between your requested time and the sampled print. Sampling and retention are bounded; a recorded print need not equal a separate live read. Preserve the whole print, including priceText, kid and v2, for verify_print. Require recordValid=true before trusting quality fields. Request-envelope fields such as deltaMs are unsigned. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **get_index_history** — Read one page of index history for a crypto symbol from /api/index/v1/history: candles (open, high, low, close per interval), summary metrics, pagination and, for dataset=verified, verifiedObservations. dataset=verified (default) is built from prints Pulse calculated and signed live; dataset=reconstructed is rebuilt history, not signed at the historical time, served at interval 1h or 1d. Candles, metrics and surrounding metadata are unsigned. Each verifiedObservations row carries symbol, price (the exact signed text), at, grade, signature and kid; pass those fields to verify_print to check a row, which authenticates its price fields only (history rows carry no v2 block). A null kid can be passed as it is or left out; a row whose signature or grade is null cannot be verified. The account's plan sets how far back history reaches: when the request started earlier, rangeClamped is true and from is where the page begins. limit (1 to 1000, default 200) bounds the rows on one page. For dataset=verified at interval 1h or 1d it is at most 250: a page there can count hours, and each hour can carry up to four signed prints (open, high, low and close), so verifiedObservations can hold up to four rows per hour. For the next page pass pagination.nextCursor as cursor with the same symbol, dataset and interval. from and to are ISO-8601 times; the default window is the 30 days before to. Pass assetId, written as the server issues it (native:<namespace>:<id>, or contract:<network>:<address> such as contract:eip155:1:0x...), when a symbol identifies more than one asset. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **get_account_status** — Read this developer key's Pulse Verity plan and usage from /api/index/v1/account: plan, used (calls counted this UTC month), limit, remaining, resetAt, perMinute, batchMaxSymbols, capacityAction and upgradeUrl (the plans page). The monthly allowance is account-wide: every key and connected app on the account shares it; perMinute applies to each key. This call does not count toward the allowance. The key itself is never returned. Needs a developer key (PULSE_API_KEY) or the hosted server.
- **verify_print** — Verify a signed print locally with ECDSA P-256/SHA-256. Legacy valid authenticates only the v1 canonical price fields. Pass the whole print including v2 to authenticate its complete live, archive or daily-close index record; agents using sources, confidence, interval or cadence must require recordValid=true. Live records sign 18 fields; archive records sign 13 without freshness ages, and daily-close records add signed assetId and closeDay. v2.signedFields lists exactly what is authenticated. kind selects the format and is not signed. Added non-null freshness ages invalidate archived verification. verificationScope is full-record only when both signatures and all required fields match, price-only for a valid v1 print without v2, or invalid otherwise. metadataSigned equals recordValid. deltaMs and surrounding metadata remain unsigned. Public keys come from /api/index/v1/pubkey, cached five minutes with refresh at most every 30 seconds. Each supplied kid selects only its exact published key; v1 prints without kid (or with kid null, as some history rows carry) use the bounded ring. No API key is sent to the key endpoint. Invalid verification can mean alteration or a key no longer published. Works without a developer key.
- **submit_verity_feedback** — Submit a reproducible Verity API or MCP bug, missing capability or data-quality report for human review. Requires a developer key (PULSE_API_KEY) or the hosted server, and an enabled feedback service. Include the failed call's requestId when available. Do not send secrets, personal information or conversation transcripts. Saves a private report; does not change prices, start trades or open or merge a PR. Returns a tracking receipt only after storage succeeds.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "pulse-verity": {
    "command": "npx",
    "args": ["-y","pulse-verity"],
    "env": {
      "PULSE_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `PULSE_API_KEY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What pulse-verity MCP server does

The pulse-verity MCP server gives an AI agent access to the Pulse Verity Index, which provides signed cryptocurrency index prices. Its primary operations read current values, retrieve several symbols at once, browse the available asset catalog, and find a recorded signed print near a specified time.

The package also includes local verification for price receipts and their signed quality fields using the published public key. This lets an agent check a returned print without sending the verification request through an authenticated service. A separate feedback operation submits a private API report for human review and returns a tracking receipt.

Only feedback changes remote state, and it does not trade, transfer funds, or modify prices. The package does not include Pulse platform engine code.

## Tools and capabilities

The available tools are:

- `get_index_price(symbol)` returns the current signed index value.
- `get_index_batch(symbols)` accepts 1–100 symbols and reports successful signed rows alongside errors for individual symbols.
- `list_index_assets(limit, offset, band?, status?)` returns one catalog page, including coverage and measured cadence.
- `get_settlement_print(symbol, at)` finds the recorded signed print nearest to a requested moment.
- `verify_print(print)` checks a price and its signed quality fields locally against the published public key.
- `submit_verity_feedback(report)` sends a private report for human review and returns a receipt.

The pulse-verity MCP server can start without configuration. In that mode, the free sample supports BTC, ETH, and SOL current-price requests. A free developer key expands access to catalog, batch, and settlement-print requests, subject to usage limits. Signature verification does not require a key.

## Setup and configuration

For local use, run `npx -y pulse-verity` through an MCP client's stdio configuration. Set `PULSE_API_KEY` in the client's private environment when keyed access is needed. The key is optional for the sample data and should not be placed in repository files or chat messages.

The hosted endpoint is `https://mcp.thepulse.markets/api/index/mcp`. Remote clients can authenticate with a bearer developer key, while Claude's hosted connection uses OAuth 2.1 with dynamic registration and PKCE. Hosted calls count against the key in the same way as REST calls.

The repository documents configurations for Claude Desktop, Cursor, Grok Build, Gemini CLI, Codex CLI, Windsurf, VS Code, and Claude Code. Cursor, Grok Build, and Gemini CLI package or launch the pinned `pulse-verity@1.3.1` release; those local routes require Node.js and npm. Claude Desktop can use the supplied `.mcpb` bundle.

## Limitations and notes

Without a key, only the BTC, ETH, and SOL sample price path is available. Catalog, batch, and settlement-print access depends on a free developer key and service limits. Feedback additionally requires a developer key and an enabled feedback service.

The local process makes GET requests to Pulse's MCP and index endpoints for data and public-key reads. Feedback uses POST. A configured key is sent only to the Pulse origin for keyed requests. The documented server does not read project files or send separate telemetry.

The pulse-verity MCP server is for index data and verification; it is not a trading or fund-transfer interface. Hosted plugin and marketplace availability can depend on the relevant client or directory review process.

_Full upstream README: https://allmcps.com/mcp/pulse-verity/readme_

