Skip to main content
Glama
PulseBet

pulse-verity

Get Recorded Print (earlier name)

get_settlement_print
Read-onlyIdempotent

Fetches the signed index print recorded nearest a requested time for offline price verification. Check deltaMs to see how far the sampled print is from your requested time.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
atYes
symbolYesCrypto ticker symbol, e.g. BTC, ETH, SOL

Output Schema

NameRequiredDescriptionDefault
atNo
v2No
kidNo
sigNo
kindNo
noteNo
tierNo
errorNo
gradeNo
priceNo
engineNo
getKeyNo
sampleNo
symbolNo
assetIdNo
cadenceNo
deltaMsNo
sourcesNo
successNo
closeDayNo
intervalNo
priceTextNo
requestIdYesIdentifier for this MCP call; not a signed price field.
signatureNo
confidenceNo
dispersionBpsNo
qualityRecordedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.3.6
    • addedOutput schema / properties / error / properties / batchLimit
      Added value: +{
      +  "maximum": 100000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / error / properties / plan
      Added value: +{
      +  "enum": [
      +    "Developer",
      +    "Basic",
      +    "Builder",
      +    "Commercial",
      +    "Enterprise"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / error / properties / requested
      Added value: +{
      +  "maximum": 100000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  2. Changed6 schema fields changedv1.3.3
    • addedOutput schema / properties / error / properties / capacityAction
      Added value: +{
      +  "enum": [
      +    "review_plans",
      +    "contact_support"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / error / properties / getKeyUrl
      Added value: +{
      +  "maxLength": 256,
      +  "pattern": "^https:\\/\\/thepulse\\.markets\\/developers(?:[/?#][^\\s]*)?$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / error / properties / hostedServerUrl
      Added value: +{
      +  "const": "https://mcp.thepulse.markets/api/index/mcp",
      +  "type": "string"
      +}
    • changedOutput schema / properties / error / properties / nextAction / enum
      Previous value: -[
      -  "wait",
      -  "review_access",
      -  "check_limits",
      -  "reconnect",
      -  "check_input",
      -  "choose_another_symbol",
      -  "report_issue"
      -]New value: +[
      +  "wait",
      +  "review_access",
      +  "check_limits",
      +  "reconnect",
      +  "check_input",
      +  "choose_another_symbol",
      +  "report_issue",
      +  "get_key"
      +]
    • addedOutput schema / properties / error / properties / resetAt
      Added value: +{
      +  "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}Z$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / error / properties / upgradeUrl
      Added value: +{
      +  "const": "https://thepulse.markets/developers#/portal/pricing",
      +  "type": "string"
      +}
  3. Changed5 schema fields changedv1.3.1
    • addedOutput schema / properties / assetId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 160,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / cadence / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "band": {
      -        "enum": [
      -          "real-time",
      -          "five-second",
      -          "ten-second",
      -          "slow",
      -          "unavailable"
      -        ],
      -        "type": "string"
      -      },
      -      "calculatedAgeMs": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/confidence/anyOf/0"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "newestSourceAgeMs": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/confidence/anyOf/0"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "oldestSourceAgeMs": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/confidence/anyOf/0"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "p50UpdateMs": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/confidence/anyOf/0"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "p95UpdateMs": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/confidence/anyOf/0"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "updatesLast120s": {
      -        "$ref": "#/properties/sources/anyOf/0"
      -      }
      -    },
      -    "required": [
      -      "band",
      -      "calculatedAgeMs",
      -      "newestSourceAgeMs",
      -      "oldestSourceAgeMs",
      -      "p50UpdateMs",
      -      "p95UpdateMs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "band": {
      +        "enum": [
      +          "real-time",
      +          "five-second",
      +          "ten-second",
      +          "slow",
      +          "unavailable"
      +        ],
      +        "type": "string"
      +      },
      +      "calculatedAgeMs": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/confidence/anyOf/0"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "newestSourceAgeMs": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/confidence/anyOf/0"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "oldestSourceAgeMs": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/confidence/anyOf/0"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "p50UpdateMs": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/confidence/anyOf/0"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "p95UpdateMs": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/confidence/anyOf/0"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "updatesLast120s": {
      +        "$ref": "#/properties/sources/anyOf/0"
      +      }
      +    },
      +    "required": [
      +      "band"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / closeDay
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "const": "daily-close",
      +  "type": "string"
      +}
    • addedOutput schema / properties / qualityRecorded
      Added value: +{
      +  "type": "boolean"
      +}
  4. Changed1 schema field changedv1.3.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "at": {
      +      "maxLength": 40,
      +      "type": "string"
      +    },
      +    "cadence": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "band": {
      +              "enum": [
      +                "real-time",
      +                "five-second",
      +                "ten-second",
      +                "slow",
      +                "unavailable"
      +              ],
      +              "type": "string"
      +            },
      +            "calculatedAgeMs": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "newestSourceAgeMs": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "oldestSourceAgeMs": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "p50UpdateMs": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "p95UpdateMs": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "updatesLast120s": {
      +              "$ref": "#/properties/sources/anyOf/0"
      +            }
      +          },
      +          "required": [
      +            "band",
      +            "calculatedAgeMs",
      +            "newestSourceAgeMs",
      +            "oldestSourceAgeMs",
      +            "p50UpdateMs",
      +            "p95UpdateMs"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "confidence": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "deltaMs": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "dispersionBps": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/properties/confidence/anyOf/0"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "engine": {
      +      "anyOf": [
      +        {
      +          "maxLength": 64,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "error": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "accountUrl": {
      +          "const": "https://thepulse.markets/developers/access",
      +          "type": "string"
      +        },
      +        "code": {
      +          "pattern": "^[A-Z][A-Z0-9_]{0,79}$",
      +          "type": "string"
      +        },
      +        "nextAction": {
      +          "enum": [
      +            "wait",
      +            "review_access",
      +            "check_limits",
      +            "reconnect",
      +            "check_input",
      +            "choose_another_symbol",
      +            "report_issue"
      +          ],
      +          "type": "string"
      +        },
      +        "retryAfterSeconds": {
      +          "maximum": 86400,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "nextAction"
      +      ],
      +      "type": "object"
      +    },
      +    "getKey": {
      +      "maxLength": 256,
      +      "type": "string"
      +    },
      +    "grade": {
      +      "enum": [
      +        "consensus",
      +        "blended",
      +        "indicative",
      +        "composite",
      +        "single-source"
      +      ],
      +      "type": "string"
      +    },
      +    "interval": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "lower": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "upper": {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/confidence/anyOf/0"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "lower",
      +            "upper"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "kid": {
      +      "pattern": "^[A-Za-z0-9._:-]{1,64}$",
      +      "type": "string"
      +    },
      +    "note": {
      +      "maxLength": 2048,
      +      "type": "string"
      +    },
      +    "price": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "priceText": {
      +      "maxLength": 100,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "requestId": {
      +      "description": "Identifier for this MCP call; not a signed price field.",
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "sample": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "sig": {
      +      "const": "pulse-index-v1",
      +      "type": "string"
      +    },
      +    "signature": {
      +      "maxLength": 88,
      +      "minLength": 88,
      +      "pattern": "^[A-Za-z0-9+/]{86}==$",
      +      "type": "string"
      +    },
      +    "sources": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "success": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "symbol": {
      +      "pattern": "^[A-Za-z0-9]{1,20}$",
      +      "type": "string"
      +    },
      +    "tier": {
      +      "anyOf": [
      +        {
      +          "maxLength": 20,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "v2": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "canonical": {
      +          "maxLength": 8192,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "kid": {
      +          "$ref": "#/properties/kid"
      +        },
      +        "sig": {
      +          "const": "pulse-index-v2",
      +          "type": "string"
      +        },
      +        "signature": {
      +          "$ref": "#/properties/signature"
      +        }
      +      },
      +      "required": [
      +        "sig",
      +        "canonical",
      +        "signature",
      +        "kid"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "requestId"
      +  ],
      +  "type": "object"
      +}
  5. First observedv1.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses that sampling and retention are bounded, that a recorded print need not equal a live read, that envelope fields like deltaMs are unsigned, and that a developer key (PULSE_API_KEY) or the hosted server is required. These are exactly the behavioral caveats annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the deprecation/alias fact first, then behavior, then caveats — a good ordering. It runs long and the 'Same input, output and behaviour' sentence is slightly redundant, but nearly every sentence carries distinct operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return fields, yet it still flags the critical ones (deltaMs, recordValid, priceText/kid/v2). Auth, sampling limits, and the live-vs-recorded distinction are all covered, leaving no material gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% — symbol is documented but `at` is not — and the description rescues that by saying `at` accepts ISO-8601 or epoch milliseconds. It also explains deltaMs semantics, though it does not cover the string length/character constraints visible only in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the recorded signed index print nearest a requested time from /api/index/v1/print') and explicitly frames itself as the legacy alias of get_recorded_print. An agent can tell exactly what it returns and how it differs from the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'prefer get_recorded_print' and why this one still exists. It also gives conditional guidance: 'Check deltaMs', 'Require recordValid=true before trusting quality fields', and 'Preserve the whole print ... for verify_print', which routes downstream behavior concretely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.