addrbookFor publishers
← The evidence ledger

Evidence row 308565

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 5cdaa74d-2c16-44dc-abe3-972eaeca4231
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
fb07b36f0957395c0a135338a3410e563ec5ddc0204c357344710ecb439e9a95
Leaf
0x9080ee9694f7a09b741d385f542e39c0ed73f9128859685feff525d895e1d37a

What was observed

{
  "count": 10,
  "tools": [
    {
      "description": "Run audio analysis on a public audio URL. Requires estimate_cost to be called first (job_estimate_id). Requires PULSE_API_KEY. Before calling, you MUST confirm with the user that they have a lawful basis to submit this audio for analysis. For a user-requested folder, project, playlist, or batch, one confirmation can cover every track in that scope. Returns job_id — poll get_job_status for results. If processing or payment returns estimate_pricing_changed, get a fresh free estimate with estimate_cost, present the new price, and wait for explicit user approval before processing or payment. Never silently retry analysis or purchase.",
      "inputSchema": {
        "properties": {
          "attestation_confirmed": {
            "description": "Set to true ONLY after the user has confirmed they have rights, permission, lawful access, or another legal basis to submit this audio, or the current user-requested batch/folder/project containing it, for analysis.",
            "type": "boolean"
          },
          "audio_url": {
            "description": "Public URL of the audio file.",
            "type": "string"
          },
          "job_estimate_id": {
            "description": "The job_estimate_id returned by estimate_cost. Must not have passed the returned expires_at timestamp.",
            "type": "string"
          },
          "tools": {
            "description": "Analysis tools to run. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.",
            "items": {
              "enum": [
                "bpm",
                "key",
                "waveform"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "audio_url",
          "tools",
          "job_estimate_id",
          "attestation_confirmed"
        ],
        "type": "object"
      },
      "name": "analyze_track"
    },
    {
      "description": "Estimate audio analysis cost anonymously and free before committing. Read analysis_options for eligible anonymous one-off Checkout, trial duration fit and key-based banked-token use; these do not verify balance or trial entitlement. Eligible quotes can include checkout.upfront_payment_estimate from the current charge builder; this is not a reserved price or a saved-link charge. Review the hosted amount before payment. Returns estimated dollars, job_estimate_id and expires_at. Review the estimate before spending; final cost depends on measured duration and completed analysis, and Checkout can collect a buffered amount with refund thresholds. If processing or payment returns estimate_pricing_changed, get a fresh free estimate, present the new price, and wait for explicit user approval before processing or payment. Never silently retry analysis or purchase.",
      "inputSchema": {
        "properties": {
          "audio_url": {
            "description": "Publicly accessible URL of the audio file (MP3, WAV, FLAC, OGG, Opus).",
            "type": "string"
          },
          "tools": {
            "description": "Analysis tools to price. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.",
            "items": {
              "enum": [
                "bpm",
                "key",
                "waveform"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "audio_url",
          "tools"
        ],
        "type": "object"
      },
      "name": "estimate_cost"
    },
    {
      "description": "Resume a saved analysis job anonymously, including after interrupted Checkout or reconnection. Read continuation for human payment, bounded polling, result review or support. Preserve job_id; never create a replacement purchase to resume it. Checkout refund_status_source=local_ledger reflects durable Pulse reconciliation at refund_checked_at, not a fresh provider query; unconfirmed or needs_review must not be treated as a completed refund. Analysis cost is distinct from net payment. Completed/partial status and cost fields do not prove payment or refund settlement. Terminal Checkout result pages show billing separately; during recovery use the optional receipt API on demand; receipt_api_url is a separate on-demand read, not another MCP tool. Returns available results and provenance. Usable completed/partial results can include studio_notes: ready-to-save project notes with review warnings and failed tools. Notes are analysis snapshots, not payment/refund receipts; keep private job references and preserve review context.",
      "inputSchema": {
        "properties": {
          "include_waveform_data": {
            "description": "Optional. Defaults to false so chat agents receive a compact waveform summary plus result_url. Set true only if raw waveform samples are needed.",
            "type": "boolean"
          },
          "include_waveform_image": {
            "description": "Optional. Defaults to true. When the job has waveform data, include a server-rendered SVG as MCP image content so the client can display it without fetching a URL.",
            "type": "boolean"
          },
          "job_id": {
            "description": "The job_id returned by analyze_track or request_payment_link.",
            "type": "string"
          }
        },
        "required": [
          "job_id"
        ],
        "type": "object"
      },
      "name": "get_job_status"
    },
    {
      "description": "Get a released sample’s metadata, exact licence, attribution, preview and WAV download URLs. Free; no account or tokens required. Keep attribution when using the sample in a song.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pol_id": {
            "maxLength": 100,
            "pattern": "^pol-[a-z0-9][a-z0-9.-]*$",
            "type": "string"
          }
        },
        "required": [
          "pol_id"
        ],
        "type": "object"
      },
      "name": "get_open_loop"
    },
    {
      "description": "Check the banked token balance for the authenticated Pulse account. Requires PULSE_API_KEY.",
      "inputSchema": {
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "get_token_balance"
    },
    {
      "description": "List the available Pulse token packs (tier label, token count, price). Use before purchase_token_pack to show options to the user.",
      "inputSchema": {
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "list_token_packs"
    },
    {
      "description": "Create a Stripe Checkout session for a Pulse token pack. Returns payment_url — DO NOT submit it programmatically; surface it to the user so they can complete payment in their browser. Once paid, banked tokens are credited automatically. Requires PULSE_API_KEY.",
      "inputSchema": {
        "properties": {
          "pack": {
            "description": "Token pack tier",
            "enum": [
              "1K",
              "10K",
              "50K",
              "200K"
            ],
            "type": "string"
          }
        },
        "required": [
          "pack"
        ],
        "type": "object"
      },
      "name": "purchase_token_pack"
    },
    {
      "description": "Create anonymous one-off Stripe Checkout; no Pulse account or API key required. First read estimate_cost.analysis_options.checkout for admission minimum and billing guidance. Obtain explicit human approval to create the link and confirm a lawful basis for the audio; one rights confirmation can cover a requested batch/folder/project. Save job_id, payment_url and continuation.review_url privately; a lost Checkout link requires support, not a replacement purchase. Present payment_url and the upfront charged_display when returned for human review/payment. A reused link may omit charge fields; review its hosted amount rather than treating cost_display as the charge. Analysis begins automatically after payment; poll get_job_status with job_id. If estimate_pricing_changed is returned, get a fresh free estimate and new explicit approval. Never silently retry analysis or purchase. Below-admission quotes may offer minimum_charge_offer: show its upfront estimate and minimum final cost, then obtain explicit acceptance before passing accept_minimum_charge:true and max_upfront_amount_cents equal to the approved upfront ceiling. Never infer consent from rights confirmation. An exceeded cap needs fresh human review, not an automatic retry. If an existing Claude connector is missing accept_minimum_charge (boolean) or max_upfront_amount_cents (integer), refresh its tools list and start a fresh conversation using that same connector, preserving its URL/key/approval permissions and the original saved job/payment link. Stop if fields remain missing; never create a replacement purchase or new key for recovery. Two scoped existing-connector Claude Checkout workflows, including minimum-charge acceptance, were validated; anonymous initialization, OAuth, trial/banked workflows, other hosts and live cap rejection are not certified.",
      "inputSchema": {
        "properties": {
          "accept_minimum_charge": {
            "description": "Optional. Set true only after explicit human acceptance of minimum_charge_offer.minimum_final_cost_usd and its estimated upfront payment. Rights confirmation alone is not spending approval.",
            "type": "boolean"
          },
          "attestation_confirmed": {
            "description": "Set to true ONLY after the user has confirmed they have rights, permission, lawful access, or another legal basis to submit this audio, or the current user-requested batch/folder/project containing it, for analysis.",
            "type": "boolean"
          },
          "job_estimate_id": {
            "description": "The job_estimate_id returned by estimate_cost.",
            "type": "string"
          },
          "max_upfront_amount_cents": {
            "description": "Optional approved upfront USD ceiling in whole cents; required for minimum-charge acceptance. The gateway rejects a higher charge before creating a purchase. Do not raise it without renewed human approval.",
            "maximum": 9007199254740991,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "job_estimate_id",
          "attestation_confirmed"
        ],
        "type": "object"
      },
      "name": "request_payment_link"
    },
    {
      "description": "Find released original synthesis kits and individually auditioned source samples by keyword, pack, BPM, key and licence. Automated checks are not listening review. Free; no account or tokens required. Source tags are creator hints. Preserve attribution when required and follow each sample’s licence.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "bpm_max": {
            "maximum": 400,
            "minimum": 1,
            "type": "number"
          },
          "bpm_min": {
            "maximum": 400,
            "minimum": 1,
            "type": "number"
          },
          "key": {
            "maxLength": 64,
            "type": "string"
          },
          "license": {
            "enum": [
              "CC0-1.0",
              "CC-BY-3.0"
            ],
            "type": "string"
          },
          "limit": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "offset": {
            "maximum": 10000,
            "minimum": 0,
            "type": "integer"
          },
          "pack": {
            "maxLength": 200,
            "type": "string"
          },
          "q": {
            "description": "Search sample titles, pack names and source tags.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_open_loops"
    },
    {
      "description": "Start a temporary, email-free Pulse trial for one URL analysis. Read trial_policy and trial_allowance for the actual duration cap and remaining attempts; an existing trial key may have a lower cap. One completed/partial analysis consumes the allowance regardless of remaining tokens. A failed analysis may retry only when attempts remain. No Stripe Checkout session is created. Store the returned private API key in the client or a trusted local environment; never repost it in logs, screenshots, shared chats or issues. Confirm rights, permission, lawful access, or another legal basis before analysis. The original CC0 demo is https://pulse.studiosphere.space/assets/pulse-demo.mp3 (180 seconds); use it only if it fits the returned cap.",
      "inputSchema": {
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "start_trial"
    }
  ]
}

What the leaf hashes

{"body":"fb07b36f0957395c0a135338a3410e563ec5ddc0204c357344710ecb439e9a95","id":308565,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793058342023208,"prev":null,"subject":"5cdaa74d-2c16-44dc-abe3-972eaeca4231","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x908110e4856203d89e40decb03aab2a78558f561a5d357a07479ae55453536f7
  2. 0xc37215750d3a73bba8a74b350af5622c853f534df7122164123928bcff7891cc
  3. 0x505e1901e10b1f6fa7df21fb3a2733ab52764e4439edefbc8faed4386cd23085
  4. 0x1ce77e99f77d94df850243331221c3a5472716157b8362fb70277187f9eedf78
  5. 0xc7b9e8b51093fc6a2fc8266ad1f07a7ed3d24c51d88002baa99a5f094a6b2b7c
  6. 0xee4df6c6160232cf1e5faf3a5df7a30844071c4997e2761487819eb299ecb8d2
  7. 0x486a1242c9d72988bb4fd3cd8ca949fbd75a88a2f5f4000f3430c950fdbb6da4
  8. 0x41ce94c4a549a2d7da77f3f5d89096b2d8c5617ffd48f52ce35cca832f022f2e
  9. 0x957ebc7023975d8dcec4401284c254f8b3fe230b729fef0aaf533a85e7cfd531
  10. 0xaceb83c372739bd98e77173713a458afd2092803e86ac0b8b2afe3eb94ca90c0
  11. 0xc41c5ee73cf254bf3fe8e9a8475b0931c3223f7331f30010bc3a5e2a753329d6
  12. 0x4634efb8094d1dd2874013b832ad8653e49400f57bf98efdcc5f925ed08d0f5b
  13. 0xc0cb184c9bdf71abcf18fda97bd59289153d120dbf8fee9f517b63bf303deb95
  14. 0xf0edabbb9ba0d643e5505d19d07637eb6f6aed0a1c7356af43ae7d84ae9ef0c5
  15. 0xf0bd63870f0bb378fa300bd33563050dcb7b3e02b44eb3ee550c1c534ec4b246
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON