pulse_verify_print

Pack: pulse-verity · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/pulse_verify_print for the schema, then POST the same URL with its arguments for the data.

Check whether a Pulse signed price print is authentic and unaltered — pass a print back exactly as a Pulse tool returned it and this recomputes the ECDSA P-256 / SHA-256 signature over the canonical string, entirely OFFLINE with no network call to Pulse. WHAT A valid:true RESULT PROVES: that Pulse asserted this exact price, for this symbol, at this timestamp, at this grade, and that nobody altered any of those fields in transit — it detects a single changed digit of price or a one-millisecond shift in the timestamp. WHAT IT DOES NOT PROVE: that the price is CORRECT or reflects the true market — this checks Pulse’s signature, not the world, so a print can verify perfectly and still be a price Pulse itself got wrong. The verification is computed here, not asked of Pulse, so Pulse cannot vouch for a print it never signed and an offline or compromised source cannot turn an invalid print into a valid one. Needs NO API key. Example: pulse_verify_print({ symbol: “BTC”, priceText: “76051.0676303142”, price: 76051.0676303142, at: “2026-09-16T23:39:30.524Z”, grade: “consensus”, signature: “wiD005d9…”, kid: “pvi-Sl40p5Gj2t_-JyKUhxyg” }).

Parameters

NameTypeRequiredDescription
symbolstringyesFrom the print, unchanged.
pricenumbernoFrom the print. Used only if priceText is absent.
priceTextstringnoThe price EXACTLY as Pulse served it. This is what was signed — prefer it always.
atstringyesFrom the print, unchanged. A 1ms difference invalidates the signature.
gradestringyesFrom the print: consensus, blended or indicative.
signaturestringyesBase64 signature from the print.
kidstringnoKey id from the print; selects which public key to check against.
sigstringnoScheme tag from the print (pulse-index-v1).

Example call

Arguments

{
  "symbol": "BTC",
  "price": 86163.21518729837,
  "priceText": "86163.21518729837",
  "at": "2026-09-22T22:04:06.151Z",
  "grade": "consensus",
  "signature": "vI57zfSrNW13+kBdRlhLpxsv0pKHVStIRWvXNofS6lgMDl3QaJuxB987ap8nOph3mD/QXNQw1H1YXXDfCXqcxA==",
  "kid": "pvi-Sl40p5Gj2t_-JyKUhxyg"
}

curl

curl -X POST https://gateway.pipeworx.io/pulse-verity/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"pulse_verify_print","arguments":{"symbol":"BTC","price":86163.21518729837,"priceText":"86163.21518729837","at":"2026-09-22T22:04:06.151Z","grade":"consensus","signature":"vI57zfSrNW13+kBdRlhLpxsv0pKHVStIRWvXNofS6lgMDl3QaJuxB987ap8nOph3mD/QXNQw1H1YXXDfCXqcxA==","kid":"pvi-Sl40p5Gj2t_-JyKUhxyg"}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('pulse_verify_print', {
  "symbol": "BTC",
  "price": 86163.21518729837,
  "priceText": "86163.21518729837",
  "at": "2026-09-22T22:04:06.151Z",
  "grade": "consensus",
  "signature": "vI57zfSrNW13+kBdRlhLpxsv0pKHVStIRWvXNofS6lgMDl3QaJuxB987ap8nOph3mD/QXNQw1H1YXXDfCXqcxA==",
  "kid": "pvi-Sl40p5Gj2t_-JyKUhxyg"
});

Response shape

Always returns: valid, symbol, at, grade, settleable, kid_used, key_source, signature_bytes, canonical_string, price_field_used, verification, source

FieldTypeDescription
validbooleanTrue only if the signature matches the canonical string exactly
symbolstringEchoed from the input print, 2nd field of the canonical string
atstringEchoed from the input print, 4th field of the canonical string
gradestringEchoed from the input print, 5th field of the canonical string
settleablebooleanTrue only for consensus/blended grades
kid_usedstringKey id actually used to verify, resolved from input or the ring
key_sourcestringWhether the verification key came from cache or a fresh ring fetch
signature_bytesnumberLength of the decoded signature, for sanity-checking the input
canonical_stringstringThe exact bytes checked: pulse-index-v1\n{symbol}\n{priceText}\n{at}\n{grade}
price_field_usedstringWhether priceText (signed) or a String(price) fallback was used
verificationstringStates the algorithm and that Pulse is never asked to vouch for a print
sourcestringConstant: Pulse Verity Index (thepulse.markets)
fallback_warningstringPresent only when priceText was omitted and price was used instead — flags that JS float formatting could diverge from the signed wire text.
grade_notestringPlain-language explanation of what the returned grade means for settlement.
invalid_notestringPresent only when valid is false — explains that the signature does not match the print and it must not be settled against.
Full JSON Schema
{
  "type": "object",
  "properties": {
    "valid": {
      "type": "boolean",
      "description": "True only if the signature matches the canonical string exactly"
    },
    "symbol": {
      "type": "string",
      "description": "Echoed from the input print, 2nd field of the canonical string"
    },
    "at": {
      "type": "string",
      "description": "Echoed from the input print, 4th field of the canonical string"
    },
    "grade": {
      "type": "string",
      "description": "Echoed from the input print, 5th field of the canonical string"
    },
    "settleable": {
      "type": "boolean",
      "description": "True only for consensus/blended grades"
    },
    "kid_used": {
      "type": "string",
      "description": "Key id actually used to verify, resolved from input or the ring"
    },
    "key_source": {
      "type": "string",
      "description": "Whether the verification key came from cache or a fresh ring fetch"
    },
    "signature_bytes": {
      "type": "number",
      "description": "Length of the decoded signature, for sanity-checking the input"
    },
    "canonical_string": {
      "type": "string",
      "description": "The exact bytes checked: pulse-index-v1\\n{symbol}\\n{priceText}\\n{at}\\n{grade}"
    },
    "price_field_used": {
      "type": "string",
      "description": "Whether priceText (signed) or a String(price) fallback was used"
    },
    "verification": {
      "type": "string",
      "description": "States the algorithm and that Pulse is never asked to vouch for a print"
    },
    "source": {
      "type": "string",
      "description": "Constant: Pulse Verity Index (thepulse.markets)"
    },
    "fallback_warning": {
      "type": "string",
      "description": "Present only when priceText was omitted and price was used instead — flags that JS float formatting could diverge from the signed wire text."
    },
    "grade_note": {
      "type": "string",
      "description": "Plain-language explanation of what the returned grade means for settlement."
    },
    "invalid_note": {
      "type": "string",
      "description": "Present only when valid is false — explains that the signature does not match the print and it must not be settled against."
    }
  },
  "required": [
    "valid",
    "symbol",
    "at",
    "grade",
    "settleable",
    "kid_used",
    "key_source",
    "signature_bytes",
    "canonical_string",
    "price_field_used",
    "verification",
    "source"
  ]
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the pulse-verity pack
{
  "mcpServers": {
    "pulse-verity": {
      "url": "https://gateway.pipeworx.io/pulse-verity/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 27, 2026