io.github.iambrettforbes/botsupply

BotSupply

Free tamper-evident receipts for agents. HMAC chain, confirm-before-pay, wallets, escrow.

Endpointhttps://botsupply.onrender.com/mcp (streamable-http)
Registry version1.2.0
Now15 tools · grade D (58) · pin ts_01aeb27c30e8d6faf24212508f774f30 · protocol 2025-06-18
First / last listed2026-11-06 00:08 UTC / 2026-11-06 00:08 UTC
Grade over time2026-11-06: D (58), 15 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-11-06 00:08 UTC
15 tools, grade D (58)

Tools: list_catalog open_wallet get_balance purchase create_checkout create_job get_job release_job refund_job record_approval set_receipt_visibility attach_proof record_payment get_receipt verify_receipt

Current tools (15)

list_catalogList live BotSupply SKUs, credit prices, short descriptions, and what a purchase does not include. Payloads stay behind purchase. recipe.book-table, when listed, is recipe documentation only and does not place a reservation.
params: none
open_walletCreate a wallet and return wallet_id plus api_key once, with balance_credits 0. Same as POST /v1/wallets. This does not look up an existing wallet. Keep the api_key; later tools need it as Authorization: Bearer or as api_key.
params: label
get_balanceReturn the authenticated wallet id and prepaid credit balance. Same as GET /v1/balance. Does not return the API key.
params: api_key
purchaseBuy one live catalog SKU with prepaid credits. Sends { sku } to POST /v1/purchase and returns that JSON, including the pack or recipe payload. Does not place a reservation. recipe.book-table is documentation the buying agent runs itself. An unknown SKU is rejected. Insufficient balance returns an error and does not deduct credits.
params: sku*, api_key
create_checkoutStart a Stripe Checkout credit top-up. Same as POST /v1/wallets/:id/checkout. Returns the checkout url (open that URL; it keeps Stripe's hosted-page fragment). credits is an integer from 500 to 100000 ($5 minimum). Credits are applied only after Stripe reports the session paid. Returns the API error when Stripe is not configured.
params: credits*, wallet_id, api_key
create_jobHold credits in escrow for a job another agent will do; release when the work is delivered, refund if not. Debits amount_credits from the authenticated payer wallet and marks the job held. payee_wallet_id receives the credits on release. Rejects amount_credits below 1, a payer equal to the payee, a missing or other-mode payee wallet, and insufficient balance. idempotency_key makes a retry return t
params: payee_wallet_id*, amount_credits*, description*, idempotency_key*, api_key
get_jobReturn an escrow job's status (held, released, or refunded), the held amount, any release fee, and the payer and payee wallets. The caller must be the payer or the payee. A job from another Stripe mode is not visible. Same as GET /v1/jobs/:id.
params: job_id*, api_key
release_jobRelease held escrow credits to the payee when the work is delivered. Only the payer can release, and only while the job is held. ESCROW_FEE_BPS (default 0) is withheld on release, recorded on the job, and credited to nobody; the payee receives amount_credits minus that fee. Releasing twice, or releasing after a refund, is rejected and does not move credits again. Same as POST /v1/jobs/:id/release.
params: job_id*, api_key
refund_jobReturn held escrow credits to the payer when the work is not delivered or the job is cancelled. The payer or the payee can refund, and only while the job is held. The full hold goes back to the payer; no platform fee is taken. Refunding twice, or refunding after release, is rejected and does not move credits again. Same as POST /v1/jobs/:id/refund.
params: job_id*, api_key
record_approvalWrite a record of what was reported as approved for a purchase on any payment rail. The approver is a name supplied by the calling agent; this does not confirm who approved. BotSupply does not hold or move the money. Returns receipt_id, a public receipt_url, and an edit_token shown once. If approver_contact is an email, also issues a single-use expiring confirm link. When no email provider is conf
params: approver*, approver_contact, confirmation_webhook_url, agent_id, agent_name, merchant_name*, merchant_url, scope*, price_cap_amount*, price_cap_currency*, payment_rail*, external_payment_ref, public_view, public_scope
set_receipt_visibilityChange a receipt's public display to full or redacted. Requires the edit_token from record_approval. Optional public_scope replaces the scope shown publicly while redacted. Stored outside the hash chain, so the content hash and verify result do not change. redacted shows the approver as initials, the agent name as Agent, no email or phone, and payment refs and proof values as on file plus the last
params: receipt_id*, edit_token*, public_view*, public_scope
attach_proofAttach proof of delivery to a receipt. Requires the edit_token from record_approval. Moves approved to delivered, or to disputed when status is disputed. over_cap is true when actual_amount exceeds the price cap. Does not move money. Same as POST /v1/receipts/:id/proof.
params: receipt_id*, edit_token*, type*, value*, actual_amount, status
record_paymentRecord a payment the calling agent already made against a receipt. BotSupply does not hold or move the money. Requires the edit_token from record_approval. Appends a signed hash-chain event payment_recorded. paid_at defaults to now. Sets paid_before_confirmation when the payment time is before the confirm event, or when a contact was set and the receipt was never confirmed. Sets over_cap when amou
params: receipt_id*, edit_token*, external_payment_ref*, amount*, paid_at
get_receiptRead a public purchase receipt: what was reported as approved, scope, price cap, merchant, proofs, payments, content hash, approver_confirmation, pay_allowed, and public_view. external_payment_ref is the latest recorded payment ref, or the approval-time ref when no payment is recorded. paid_before_confirmation and over_cap are true when any recorded payment has that flag. Those three fields are de
params: receipt_id*
verify_receiptRecompute the receipt hash chain and HMAC signature. valid is true when the stored receipt matches the chain and the server signature, so the record hasn't been changed since it was created. valid does not confirm who approved. The result also includes approver_confirmation: unconfirmed, confirmed, or declined. confirmed means the person with access to the contact clicked Confirm. valid is false w
params: receipt_id*

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.