protogrid

Search / io.github.iambrettforbes/botsupply

BotSupply

R0· no sign-in

Verifiable purchase receipts for agents: record approval and proof. Wallets and escrow (test mode).

v1.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality90strong
Trust80of 100
Uptime, 30 days100%
Latency p50344 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "botsupply": {
      "type": "http",
      "url": "https://botsupply.onrender.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BOTSUPPLY_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http botsupply https://botsupply.onrender.com/mcp --header "Authorization: Bearer ${BOTSUPPLY_TOKEN}"
[mcp_servers.botsupply]
url = "https://botsupply.onrender.com/mcp"
bearer_token_env_var = "BOTSUPPLY_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "botsupply": {
      "type": "remote",
      "url": "https://botsupply.onrender.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:BOTSUPPLY_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "botsupply": {
      "type": "http",
      "url": "https://botsupply.onrender.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BOTSUPPLY_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=botsupply&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYm90c3VwcGx5Lm9ucmVuZGVyLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtCT1RTVVBQTFlfVE9LRU59In19"
}
{
  "servers": {
    "botsupply": {
      "type": "http",
      "url": "https://botsupply.onrender.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BOTSUPPLY_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "botsupply": {
      "httpUrl": "https://botsupply.onrender.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BOTSUPPLY_TOKEN}"
      }
    }
  }
}
extensions:
  "botsupply":
    enabled: true
    name: "botsupply"
    type: streamable_http
    uri: "https://botsupply.onrender.com/mcp"
    headers:
      "Authorization": "Bearer ${BOTSUPPLY_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${BOTSUPPLY_TOKEN}. The registry never accepts secret values.

Quality 90 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations13 of 13 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,766 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes9 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

13 tools, about 2,766 tokens to load them all · tool set d7073702d1d3 · tools last changed 2026-10-19 · checked 2026-10-20 15:57 UTC

Tool changes

  • verify_receiptadded

    Recompute the receipt hash chain and HMAC signature. valid is true when the stored receipt matches the chain and the server signature. valid is false when a row was altered. Same as GET /v1/receipts/:id/verify.

  • get_receiptadded

    Read a public purchase receipt: approval, scope, price cap, merchant, proofs, and content hash. No API key. The approver contact and the edit token are not included. Same as GET /v1/receipts/:id.

  • attach_proofadded

    Attach 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.

  • record_approvaladded

    Record a human's approval of a purchase on any payment rail. BotSupply does not hold or move the money. Returns receipt_id, a public receipt_url, and an edit_token shown once. No wallet or API key. Rate limited per IP. Same as POST /v1/receipts.

  • refund_jobadded

    Return 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.

  • release_jobadded

    Release 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.

  • get_jobadded

    Return 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.

  • create_jobadded

    Hold 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 the same job without debiting twice. Same as POST /v1/jobs.

  • create_checkoutchangeddescription, input schema
    before

    Start 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 100 to 100000. Credits are applied only after Stripe reports the session paid. Returns the API error when Stripe is not configured.

    after · 92% of words in common

    Start 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.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+website +reachable +uptime-100% +updated-1d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://botsupply.onrender.com/mcp streamable-httpnoneyes100%344 ms2026-07-282026-10-20

Tools (13)

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.
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.
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 the same job without debiting twice. Same as POST /v1/jobs.
get_balanceread-onlyReturn the authenticated wallet id and prepaid credit balance. Same as GET /v1/balance. Does not return the API key.
get_jobread-onlyReturn 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.
get_receiptread-onlyRead a public purchase receipt: approval, scope, price cap, merchant, proofs, and content hash. No API key. The approver contact and the edit token are not included. Same as GET /v1/receipts/:id.
list_catalogread-onlyList 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.
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.
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.
record_approvalRecord a human's approval of a purchase on any payment rail. BotSupply does not hold or move the money. Returns receipt_id, a public receipt_url, and an edit_token shown once. No wallet or API key. Rate limited per IP. Same as POST /v1/receipts.
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.
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.
verify_receiptread-onlyRecompute the receipt hash chain and HMAC signature. valid is true when the stored receipt matches the chain and the server signature. valid is false when a row was altered. Same as GET /v1/receipts/:id/verify.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.iambrettforbes/botsupply",
  "title": "BotSupply",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://botsupply.onrender.com/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Optional. 'Bearer <wallet API key>' returned once by open_wallet. Required for get_balance, purchase, create_checkout unless api_key is passed as a tool argument."
        }
      ]
    }
  ],
  "version": "1.1.0",
  "websiteUrl": "https://github.com/iambrettforbes/Botsupply-",
  "description": "Verifiable purchase receipts for agents: record approval and proof. Wallets and escrow (test mode)."
}