accueil / serveurs / Finance & Paiement / io.github.iambrettforbes/botsupply
io.github.iambrettforbes/botsupply
serveur MCP (Model Context Protocol) · botsupply 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.iambrettforbes/botsupply est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.iambrettforbes/botsupply » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 13 outils
- attach_proof≈ 360 tokens
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.
Paramètres, retour & exemple (6)
Paramètrestype· string · requis
Proof kind. Examples: order_confirmation, tracking, url, hash.value· string · requis
The proof itself: confirmation id, tracking number, URL, or hash.status· string · optionnel · delivered | disputed
Omit to mark an approved receipt delivered. Pass disputed to dispute it.edit_token· string · requis
Secret returned once by record_approval. Required to attach proof.receipt_id· string · requis
Receipt id from record_approval (rcpt_…).actual_amount· ? · optionnel
Amount actually charged. over_cap is true when this is above the price cap.
Exemple d'appel{"name": "attach_proof", "arguments": {"type": "texte", "value": "texte", "edit_token": "texte", "receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_checkout≈ 280 tokens
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.
Paramètres, retour & exemple (3)
Paramètresapi_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.credits· integer · requis
Credits to buy. 1 credit = $0.01 USD. Minimum 500 credits ($5). Same limits as POST /v1/wallets/:id/checkout.wallet_id· string · optionnel
Wallet to credit. Defaults to the wallet that owns the API key.
Exemple d'appel{"name": "create_checkout", "arguments": {"credits": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_job≈ 405 tokens
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.
Paramètres, retour & exemple (5)
Paramètresapi_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.description· string · requis
What the payee is being paid to do.amount_credits· integer · requis
Credits to debit from the authenticated payer wallet and hold until release or refund.idempotency_key· string · requis
Caller-chosen key scoped to the payer. A retry with the same key and the same parameters returns the original job and does not debit again.payee_wallet_id· string · requis
Wallet that receives the credits when the payer releases the job.
Exemple d'appel{"name": "create_job", "arguments": {"description": "texte", "amount_credits": 1, "idempotency_key": "texte", "payee_wallet_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_balance≈ 140 tokens
Return the authenticated wallet id and prepaid credit balance. Same as GET /v1/balance. Does not return the API key.
Paramètres, retour & exemple (1)
Paramètresapi_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.
Exemple d'appel{"name": "get_balance", "arguments": {"api_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_job≈ 202 tokens
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.
Paramètres, retour & exemple (2)
Paramètresjob_id· string · requis
Escrow job id returned by create_job (job_…).api_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.
Exemple d'appel{"name": "get_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_receipt≈ 143 tokens
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.
Paramètres, retour & exemple (1)
Paramètresreceipt_id· string · requis
Public receipt id (rcpt_…).
Exemple d'appel{"name": "get_receipt", "arguments": {"receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_catalog≈ 122 tokens
List 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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_catalog", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - open_wallet≈ 151 tokens
Create 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.
Paramètres, retour & exemple (1)
Paramètreslabel· string · optionnel
Optional label, 1 to 80 characters. Same field as POST /v1/wallets.
Exemple d'appel{"name": "open_wallet", "arguments": {"label": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - purchase≈ 223 tokens
Buy 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.
Paramètres, retour & exemple (2)
Paramètressku· string · requis
Live catalog SKU. The field name is sku, not sku_id.api_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.
Exemple d'appel{"name": "purchase", "arguments": {"sku": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - record_approval≈ 526 tokens
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.
Paramètres, retour & exemple (11)
Paramètresscope· string · requis
What the human approved, in plain text.agent_id· string · optionnel
Optional id of the agent that will pay. Not a BotSupply API key.approver· string · requis
Display name or handle of the human who approved the purchase.agent_name· string · optionnel
Optional display name of the paying agent.merchant_url· string · optionnel
Optional http or https URL for the merchant.payment_rail· string · requis
How the agent will pay. Examples: stripe_link, card, x402, botsupply_wallet.merchant_name· string · requis
Merchant or seller name.approver_contact· string · optionnel
Optional email or phone. Stored only as a hash and never shown on the receipt.price_cap_amount· ? · requis
Maximum amount approved. A positive decimal, for example 25 or "19.95".price_cap_currency· string · requis
Currency code, 3 to 10 letters, for example USD or USDC.external_payment_ref· string · optionnel
Optional id from the payment rail. BotSupply does not look it up.
Exemple d'appel{"name": "record_approval", "arguments": {"scope": "texte", "approver": "texte", "payment_rail": "texte", "merchant_name": "texte", "price_cap_amount": "texte", "price_cap_currency": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - refund_job≈ 230 tokens
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.
Paramètres, retour & exemple (2)
Paramètresjob_id· string · requis
Escrow job id returned by create_job (job_…).api_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.
Exemple d'appel{"name": "refund_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - release_job≈ 243 tokens
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.
Paramètres, retour & exemple (2)
Paramètresjob_id· string · requis
Escrow job id returned by create_job (job_…).api_key· string · optionnel
Wallet API key (bsk_…). Optional when the MCP client sends Authorization: Bearer. The local stdio process also reads BOTSUPPLY_API_KEY.
Exemple d'appel{"name": "release_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - verify_receipt≈ 148 tokens
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.
Paramètres, retour & exemple (1)
Paramètresreceipt_id· string · requis
Public receipt id (rcpt_…).
Exemple d'appel{"name": "verify_receipt", "arguments": {"receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».