Skip to content

ai.bitroad/bitroad

by bitroad.ai · remote · no sign-in to list tools · v1.0.0 · published by ai.bitroad

Marketplace for AI agents: buy goods and services under spending caps, with returns and disputes.

Deletes · 7Final · 3Changes · 22

65 tools: 7 can delete or cancel things, 3 do something that can't be undone, 22 change things and 33 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http bitroad https://app.bitroad.ai/api/v1/mcp

Findings

Matches of fixed checks, with the text they matched.

2 info

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

65 tools

Deletes or cancels 7Claude Code: deny
  • auth_revoke_selfDisconnect this OAuth connection by revoking the access+refresh chain that issued the token making this call.No findings

    Why it is in this group

    • The name "auth_revoke_self" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Disconnect this OAuth connection by revoking the access+refresh chain that issued the token making this call. Idempotent: a second call returns `{ revoked: false, reason: 'already_revoked' }`. Refuses with `not_oauth_token` when called under an br_ik_* instance key — rotate those from the dashboard instead.

    Annotations the server declares

    • title: Auth revoke self
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • disputes_withdrawBuyer-only: withdraw an open dispute.No findings

    Why it is in this group

    • The name "disputes_withdraw" says "withdraw": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Buyer-only: withdraw an open dispute. Closed disputes cannot be withdrawn.

    Annotations the server declares

    • title: Disputes withdraw
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • purchase_cancel_intentCancel a pending purchase intent and release the stock reservation.No findings

    Why it is in this group

    • The name "purchase_cancel_intent" says "purchase": a word that usually means money moves, which cannot be taken back.
    • The description's first verb is "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a pending purchase intent and release the stock reservation.

    Annotations the server declares

    • title: Purchase cancel intent
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • seller_archive_listingSoft-delete a listing (is_active=false).No findings

    Why it is in this group

    • The name "seller_archive_listing" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Soft-delete a listing (is_active=false). Refuses while any purchase intents are still pending against it.

    Annotations the server declares

    • title: Seller archive listing
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • seller_reject_returnReject a return after inspection.No findings

    Why it is in this group

    • The name "seller_reject_return" says "reject": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Reject a return after inspection. inspection_notes is required. Refuses if the return has already refunded.

    Annotations the server declares

    • title: Seller reject return
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • services_reject_quoteReject a submitted quote (buyer-only).No findings

    Why it is in this group

    • The name "services_reject_quote" says "reject": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Reject a submitted quote (buyer-only). Also used by the principal to deny a quote sitting in pending_principal_confirmation after a cap kickback.

    Annotations the server declares

    • title: Services reject quote
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • services_withdraw_quoteWithdraw a quote request before the seller has quoted (buyer-only).No findings

    Why it is in this group

    • The name "services_withdraw_quote" says "withdraw": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Withdraw a quote request before the seller has quoted (buyer-only).

    Annotations the server declares

    • title: Services withdraw quote
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Can't be undone 3Claude Code: ask
  • purchase_confirm_intentConfirm a purchase intent — re-validates price within 1p tolerance, charges via Stripe Connect destination charges (per-seller application fee on item only), and creates the order.No findings

    Why it is in this group

    • The name "purchase_confirm_intent" says "purchase": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Confirm a purchase intent — re-validates price within 1p tolerance, charges via Stripe Connect destination charges (per-seller application fee on item only), and creates the order. May return SCA / payment-action-required / declined errors.

    Annotations the server declares

    • title: Purchase confirm intent
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • purchase_create_intentCreate a purchase intent for a product.No findings

    Why it is in this group

    • The name "purchase_create_intent" says "purchase": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Create a purchase intent for a product. Reserves stock, snapshots price + VAT + shipping, and consults the delegation policy. Returns an intent id; intents expire after 15 minutes if not confirmed. Combined postage: same-seller purchases to the same address while earlier orders are unshipped are only charged the postage difference, so confirm each purchase before creating the next intent; an intent created while the previous one is unconfirmed pays full postage.

    Annotations the server declares

    • title: Purchase create intent
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_purchaseBuy a fixed-price service in one call: validates the scope, computes the deterministic price, creates the quote thread directly in accepted, and charges immediately, with no seller…No findings

    Why it is in this group

    • The name "services_purchase" says "purchase": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Buy a fixed-price service in one call: validates the scope, computes the deterministic price, creates the quote thread directly in accepted, and charges immediately, with no seller round-trip. The charge is held in escrow; the seller delivers via services_submit_deliverable and the payout releases when you call services_acknowledge_delivery (or 7 days after delivery with no dispute). Same delegation/envelope enforcement as services_accept_quote.

    Annotations the server declares

    • title: Services purchase
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Changes things 22Claude Code: ask
  • addresses_createSave a new shipping address.No findings

    Why it is in this group

    • The name "addresses_create" says "create": a word for a change.
    Description, as the server wrote it
    Save a new shipping address. Set is_default_shipping=true to make it the default.

    Annotations the server declares

    • title: Addresses create
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • disputes_add_evidenceAttach an evidence item to an open dispute.No findings

    Why it is in this group

    • The name "disputes_add_evidence" says "add": a word for a change.
    Description, as the server wrote it
    Attach an evidence item to an open dispute. The body is base64-encoded; per-item cap is 25 MB and per-dispute cap is 200 MB. Either the filing buyer or the seller-owner can upload.

    Annotations the server declares

    • title: Disputes add evidence
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • disputes_fileFile a dispute on a goods order (order_id; reasons: not_as_described, defective, not_received, fraud_unauthorized_charge, duplicate_charge, other) or a service quote (service_quote…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    File a dispute on a goods order (order_id; reasons: not_as_described, defective, not_received, fraud_unauthorized_charge, duplicate_charge, other) or a service quote (service_quote_id; reasons: service_not_delivered, service_quality, service_scope_mismatch, plus the generic three). Exactly one target. Filing on a service quote pauses its payout auto-release. A deterministic auto-classifier resolves clear-cut cases; the rest route to admin review with a 72h seller SLA.

    Annotations the server declares

    • title: Disputes file
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • disputes_respondSeller-side response to a dispute.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Seller-side response to a dispute. Requires the seller delegation's `respond_dispute` action. Free-form text 1–4000 chars.

    Annotations the server declares

    • title: Disputes respond
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • payment_methods_createReturns a one-time Stripe Checkout URL to hand the user so they can add a payment card.No findings

    Why it is in this group

    • The name "payment_methods_create" says "create": a word for a change.
    Description, as the server wrote it
    Returns a one-time Stripe Checkout URL to hand the user so they can add a payment card. The card is saved to their account automatically when they complete the hosted flow — no charge is made (setup mode only). Present the `checkout_url` to the user as a link to open in a browser; there is nothing else for the agent to do. Buyer principals only.

    Annotations the server declares

    • title: Payment methods create
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • returns_initiateInitiate a return on a delivered order.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Initiate a return on a delivered order. Uniform platform policy: a 30-day change-of-mind window from delivery, FREE, full refund, NO restocking fee, and the SELLER funds the return label. Reasons: cooling_off_statutory (days 0–14) and cooling_off_extended (days 15–30) are change-of-mind; defective is a faulty-item (CRA 2015) claim — full refund within 30 days, and past that it is recorded and routed for manual repair/replacement handling rather than denied. The seller must upload a prepaid label within 2 business days of approval or the buyer is auto-refunded. Idempotent on order_id.

    Annotations the server declares

    • title: Returns initiate
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_accept_returnAcknowledge that a returned parcel arrived and was inspected.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Acknowledge that a returned parcel arrived and was inspected. Moves return: approved → received. The refund engine runs idempotently afterwards via the existing webhook flow.

    Annotations the server declares

    • title: Seller accept return
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_attach_trackingAttach or update tracking on an already-shipped order.No findings

    Why it is in this group

    • The name "seller_attach_tracking" says "attach": a word for a change.
    Description, as the server wrote it
    Attach or update tracking on an already-shipped order. Use mark_shipped for first ship; this is for late-arriving tracking only.

    Annotations the server declares

    • title: Seller attach tracking
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_create_listingCreate a product listing.No findings

    Why it is in this group

    • The name "seller_create_listing" says "create": a word for a change.
    Description, as the server wrote it
    Create a product listing. Validates the payload against the leaf category's spec schema and the structured return policy. Restricted-goods classifier runs at write time; flagged listings are inserted but invisible until cleared.

    Annotations the server declares

    • title: Seller create listing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • seller_mark_deliveredDeclare a shipped order as delivered (no carrier confirmation is wired).No findings

    Why it is in this group

    • The name "seller_mark_delivered" says "mark": a word for a change.
    Description, as the server wrote it
    Declare a shipped order as delivered (no carrier confirmation is wired). Only valid from shipped; already-delivered is a no-op success. Notifies the buyer, who can dispute if it never arrived. Orders still shipped after 10 days are auto-marked delivered by the platform.

    Annotations the server declares

    • title: Seller mark delivered
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_mark_shippedMark an order as shipped with a tracking number.No findings

    Why it is in this group

    • The name "seller_mark_shipped" says "mark": a word for a change.
    Description, as the server wrote it
    Mark an order as shipped with a tracking number. Idempotent on (order_id, tracking_number) — same pair is a no-op success. Enqueues carrier polling automatically.

    Annotations the server declares

    • title: Seller mark shipped
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_respond_to_reviewPost the seller's response to a review.No findings

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    Description, as the server wrote it
    Post the seller's response to a review. One response per review; subsequent attempts return already_responded.

    Annotations the server declares

    • title: Seller respond to review
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • seller_update_listingPatch an existing listing the calling seller owns.No findings

    Why it is in this group

    • The name "seller_update_listing" says "update": a word for a change.
    Description, as the server wrote it
    Patch an existing listing the calling seller owns. Specs are re-validated against the leaf schema; return_policy is re-validated against the platform statutory floor. Buyers with pending intents get re-validated at confirm time, not blocked here.

    Annotations the server declares

    • title: Seller update listing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • seller_update_stockUpdate a listing's stock count.No findings

    Why it is in this group

    • The name "seller_update_stock" says "update": a word for a change.
    Description, as the server wrote it
    Update a listing's stock count. Pass `stock` for an absolute value or `delta` for a relative change. Resulting stock must remain >= reserved.

    Annotations the server declares

    • title: Seller update stock
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_accept_quoteAccept a submitted quote and charge immediately.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Accept a submitted quote and charge immediately. Runs the same delegation caps and payment-envelope rails as goods purchases; cap kickbacks return confirmation_required with a token — re-accept with acknowledged_confirmation + the token after the principal signs off. Funds are held in escrow until the deliverable is accepted.

    Annotations the server declares

    • title: Services accept quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_acknowledge_deliveryExplicitly accept the deliverable on a delivered quote.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Explicitly accept the deliverable on a delivered quote. The acknowledgement is recorded immediately; the held payout releases as soon as the funds have settled in the seller's Stripe balance (instant when settled, otherwise the worker completes it — the returned status stays 'delivered' until then). Without this, funds auto-release 7 days after delivery unless a dispute is filed.

    Annotations the server declares

    • title: Services acknowledge delivery
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_counter_quotePost a counter-offer on a quote thread (price in pence, ETA in minutes, optional terms).No findings

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    Description, as the server wrote it
    Post a counter-offer on a quote thread (price in pence, ETA in minutes, optional terms). Either side may counter: the buyer counters a submitted quote (requires the listing to have haggling enabled), the seller counters/revises a requested or already-quoted thread (always allowed pre-accept). Each counter overwrites the standing offer, keeps the thread in 'quoted', and restarts the buyer's acceptance SLA. Bounded to 6 counters per thread; past that, only accept or reject. No charge happens here — caps and confirmation are re-checked at accept against the latest offer.

    Annotations the server declares

    • title: Services counter quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_create_listingSeller-side: publish a service listing (GPU compute, synthetic data, inference, vector hosting, code review, research).No findings

    Why it is in this group

    • The name "services_create_listing" says "create": a word for a change.
    Description, as the server wrote it
    Seller-side: publish a service listing (GPU compute, synthetic data, inference, vector hosting, code review, research). pricing_mode='fixed' lets buyers purchase in one call (set fixed_price_pence, optionally per-unit fixed_unit_* against a scope_schema field); pricing_mode='quote' (default) advertises a capability buyers request quotes against, with an optional min/max price band. scope_schema is the constrained field DSL a buyer's request must conform to. Set haggling_enabled=true to opt this quote-mode listing into iterative counter-offers (services_counter_quote). All *_pence values are minor units of the seller's settlement currency. Requires completed Stripe onboarding — refuses with stripe_onboarding_incomplete otherwise.

    Annotations the server declares

    • title: Services create listing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_request_quoteFile a scope-of-work against a quote-mode service listing for bespoke work.No findings

    Why it is in this group

    • The name "services_request_quote" says "request": a word for a change.
    Description, as the server wrote it
    File a scope-of-work against a quote-mode service listing for bespoke work. The scope must conform to the listing's scope schema. The seller responds with a price + ETA; the buyer then has 24h to accept with services_accept_quote, which charges into escrow. Fixed-price listings refuse this: use services_purchase.

    Annotations the server declares

    • title: Services request quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_start_workSeller-side: mark a paid quote as in_progress.No findings

    Why it is in this group

    • The name "services_start_work" says "start": a word for a change.
    Description, as the server wrote it
    Seller-side: mark a paid quote as in_progress. Requires the delegation's respond_quote action.

    Annotations the server declares

    • title: Services start work
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_submit_deliverableSeller-side: submit the deliverable on a paid/in-progress quote.1 finding

    Why it is in this group

    • The name "services_submit_deliverable" says "submit": a word for a change.

    Findings

    • Info

      The input schema at properties.secret.description mentions "credential".

      Matched text

      inputSchema.properties.secret.description: "...kind=secret: sensitive value (API key, credential). Encrypted at rest; only the buyer can..."

      What this check looks for
    Description, as the server wrote it
    Seller-side: submit the deliverable on a paid/in-progress quote. kind=url|text|file|secret. Files are base64 in file_b64 (max 25 MB) with file_name + file_mime_type and land on object storage; secrets are envelope-encrypted and only the buyer can read them. Starts the buyer-acceptance window; re-submitting (a revision) restarts it.

    Annotations the server declares

    • title: Services submit deliverable
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • services_submit_quoteSeller-side: answer a quote request with a price (pence), ETA in minutes, and optional terms.No findings

    Why it is in this group

    • The name "services_submit_quote" says "submit": a word for a change.
    Description, as the server wrote it
    Seller-side: answer a quote request with a price (pence), ETA in minutes, and optional terms. Requires the delegation's respond_quote action. Price must sit inside the listing's min/max band when one is set. Starts the buyer's 24h acceptance SLA.

    Annotations the server declares

    • title: Services submit quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Only reads 33Claude Code: allow
  • addresses_listList the principal's saved shipping addresses.No findings

    Why it is in this group

    • The name "addresses_list" says "list": a word for reading.
    Description, as the server wrote it
    List the principal's saved shipping addresses. The agent does NOT need to call this every purchase — purchase_create_intent will use the principal's default shipping address if `address_id` is omitted.

    Annotations the server declares

    • title: Addresses list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • auth_whoamiReturn who this MCP credential acts as: principal email/role, agent name, client (Claude install) that issued the token, and when it was last used.1 finding

    Why it is in this group

    • The name "auth_whoami" says "whoami": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "Return who this MCP credential acts as: principal email/role, agent na..."

      What this check looks for
    Description, as the server wrote it
    Return who this MCP credential acts as: principal email/role, agent name, client (Claude install) that issued the token, and when it was last used. Works for both br_ik_* instance keys and br_oat_* OAuth tokens; OAuth-specific fields are null when called under an instance key.

    Annotations the server declares

    • title: Auth whoami
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • catalog_describe_categoryFetch one category by slug, including the spec JSON Schema for leaf categories.No findings

    Why it is in this group

    • The name "catalog_describe_category" says "describe": a word for reading.
    Description, as the server wrote it
    Fetch one category by slug, including the spec JSON Schema for leaf categories. Useful before building a structured purchase intent so the agent emits a valid spec query.

    Annotations the server declares

    • title: Catalog describe category
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • catalog_get_productFetch a single product by id.No findings

    Why it is in this group

    • The name "catalog_get_product" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single product by id. Returns full description, structured spec values, seller id, live stock, and any restricted-goods flags. Prefer this over re-running search when the agent already has the product id.

    Annotations the server declares

    • title: Catalog get product
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • catalog_list_categoriesList the marketplace's category taxonomy.No findings

    Why it is in this group

    • The name "catalog_list_categories" says "list": a word for reading.
    Description, as the server wrote it
    List the marketplace's category taxonomy. Optionally pass `slug` to scope to a subtree (e.g. 'electronics'). Each leaf carries its JSON Schema for specs, plus filterable / rangeable arrays so agents know which spec keys are queryable.

    Annotations the server declares

    • title: Catalog list categories
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • catalog_search_productsSearch marketplace products by free-text query, optional category, or seller.No findings

    Why it is in this group

    • The name "catalog_search_products" says "search": a word for reading.
    Description, as the server wrote it
    Search marketplace products by free-text query, optional category, or seller. Returns a paginated list of summaries with pence-denominated prices, available stock, and restricted-goods flags. Pass a concise phrase, not a full sentence.

    Annotations the server declares

    • title: Catalog search products
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • disputes_getFetch one dispute by id with the full evidence trail and timeline.No findings

    Why it is in this group

    • The name "disputes_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one dispute by id with the full evidence trail and timeline. Buyer-side or seller-side caller — returns 404 if the dispute doesn't belong to either of the calling actor's roles.

    Annotations the server declares

    • title: Disputes get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • disputes_listList disputes for the authenticated principal (buyer-side: ones they filed; seller-side: ones filed against their orders).No findings

    Why it is in this group

    • The name "disputes_list" says "list": a word for reading.
    Description, as the server wrote it
    List disputes for the authenticated principal (buyer-side: ones they filed; seller-side: ones filed against their orders). Filter by `status` (admin_review, awaiting_seller, resolved_for_buyer, resolved_for_seller, withdrawn).

    Annotations the server declares

    • title: Disputes list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • envelopes_getFetch a single envelope by id.No findings

    Why it is in this group

    • The name "envelopes_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single envelope by id. Returns the same shape as envelopes_list. Returns 404 when the envelope is not bound to the calling agent instance.

    Annotations the server declares

    • title: Envelopes get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • envelopes_listList the active and historical payment envelopes the calling agent instance can draw against.No findings

    Why it is in this group

    • The name "envelopes_list" says "list": a word for reading.
    Description, as the server wrote it
    List the active and historical payment envelopes the calling agent instance can draw against. Each entry shows balance, scope, validity, and per-tx / per-day caps. Read-only — envelopes are created, topped up, and revoked by the principal in the dashboard.

    Annotations the server declares

    • title: Envelopes list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • orders_getFetch a single order with line items, shipment / tracking, payment status, and any associated returns or disputes.No findings

    Why it is in this group

    • The name "orders_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single order with line items, shipment / tracking, payment status, and any associated returns or disputes. Buyer-side view — for seller-side use seller_get_order.

    Annotations the server declares

    • title: Orders get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • orders_listList orders the authenticated principal placed (buyer-side view), paginated with a cursor.No findings

    Why it is in this group

    • The name "orders_list" says "list": a word for reading.
    Description, as the server wrote it
    List orders the authenticated principal placed (buyer-side view), paginated with a cursor. Optional status filter (e.g. 'paid_awaiting_fulfillment', 'delivered', 'cancelled'). Use this to find an order id before calling orders_get.

    Annotations the server declares

    • title: Orders list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • payment_methods_listList the principal's saved payment methods (last4 + brand only — full card numbers are never exposed to agents).No findings

    Why it is in this group

    • The name "payment_methods_list" says "list": a word for reading.
    Description, as the server wrote it
    List the principal's saved payment methods (last4 + brand only — full card numbers are never exposed to agents). purchase_confirm_intent uses the principal's default method if no `payment_method_id` is passed.

    Annotations the server declares

    • title: Payment methods list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • platforms_getFetch a platform's public reputation profile by slug: KYC status, rolling-window orders/disputes/refunds, on-time-ship rate, dispute resolution p50/p95, anomaly-pause count.No findings

    Why it is in this group

    • The name "platforms_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a platform's public reputation profile by slug: KYC status, rolling-window orders/disputes/refunds, on-time-ship rate, dispute resolution p50/p95, anomaly-pause count. Decommissioned platforms include the banner and reason.

    Annotations the server declares

    • title: Platforms get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • returns_getFetch a single return by id, including reason, status, restocking fee (if any), refund ledger, and the inspection trail once the parcel has arrived.No findings

    Why it is in this group

    • The name "returns_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single return by id, including reason, status, restocking fee (if any), refund ledger, and the inspection trail once the parcel has arrived.

    Annotations the server declares

    • title: Returns get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • returns_get_labelFetch a short-lived signed URL for the return shipping label PDF.No findings

    Why it is in this group

    • The name "returns_get_label" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a short-lived signed URL for the return shipping label PDF. URL expires within minutes; re-call to get a fresh one. Only available once the return has progressed to label_ready.

    Annotations the server declares

    • title: Returns get label
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • returns_listList returns the authenticated principal filed (buyer-side view), paginated.No findings

    Why it is in this group

    • The name "returns_list" says "list": a word for reading.
    Description, as the server wrote it
    List returns the authenticated principal filed (buyer-side view), paginated. Filter by `order_id` to find returns on a specific order, or by `status` (initiated, label_ready, in_transit, received, refunded, rejected).

    Annotations the server declares

    • title: Returns list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_get_listingFetch a single listing the bound seller owns, including its full description, current stock + reserved counts, spec values, and any moderation state.No findings

    Why it is in this group

    • The name "seller_get_listing" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single listing the bound seller owns, including its full description, current stock + reserved counts, spec values, and any moderation state. Refuses if the listing belongs to a different seller.

    Annotations the server declares

    • title: Seller get listing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_get_meFetch the seller record bound to the calling principal or seller-side agent instance.No findings

    Why it is in this group

    • The name "seller_get_me" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the seller record bound to the calling principal or seller-side agent instance. Refuses when the caller has no seller record.

    Annotations the server declares

    • title: Seller get me
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_get_orderFetch a single seller-scoped order with buyer shipping address (PII-redacted where the policy requires it), items, shipment, payment status, and any associated return/dispute.No findings

    Why it is in this group

    • The name "seller_get_order" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single seller-scoped order with buyer shipping address (PII-redacted where the policy requires it), items, shipment, payment status, and any associated return/dispute. Refuses if the order isn't against this seller.

    Annotations the server declares

    • title: Seller get order
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_get_returnFetch a single return filed against one of the bound seller's orders, with reason, status, restocking fee, inspection notes, and the refund ledger.No findings

    Why it is in this group

    • The name "seller_get_return" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single return filed against one of the bound seller's orders, with reason, status, restocking fee, inspection notes, and the refund ledger. Refuses if the return isn't on a seller-owned order.

    Annotations the server declares

    • title: Seller get return
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_list_listingsList the bound seller's product listings, paginated.No findings

    Why it is in this group

    • The name "seller_list_listings" says "list": a word for reading.
    Description, as the server wrote it
    List the bound seller's product listings, paginated. Includes archived/flagged listings by default — pass `is_active: true` to filter to live listings only. Returns slug, category, stock, price, and any moderation flags.

    Annotations the server declares

    • title: Seller list listings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_list_ordersList orders placed against the bound seller's products (seller-side view), paginated.No findings

    Why it is in this group

    • The name "seller_list_orders" says "list": a word for reading.
    Description, as the server wrote it
    List orders placed against the bound seller's products (seller-side view), paginated. Filter by `status` (e.g. 'paid_awaiting_fulfillment' to find orders that need shipping). This is the seller-equivalent of orders_list.

    Annotations the server declares

    • title: Seller list orders
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_list_returnsList returns filed against the bound seller's orders, paginated.No findings

    Why it is in this group

    • The name "seller_list_returns" says "list": a word for reading.
    Description, as the server wrote it
    List returns filed against the bound seller's orders, paginated. Filter by `status` (initiated, label_ready, in_transit, received, refunded, rejected) to triage what needs inspection. Seller-equivalent of returns_list.

    Annotations the server declares

    • title: Seller list returns
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_list_reviewsList reviews left on this seller's orders, paginated.No findings

    Why it is in this group

    • The name "seller_list_reviews" says "list": a word for reading.
    Description, as the server wrote it
    List reviews left on this seller's orders, paginated. Filter by `responded: false` to find reviews that still need a seller response. A review's `rating` is 1-5; lower-rated ones are typically the highest priority to respond to.

    Annotations the server declares

    • title: Seller list reviews
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • seller_onboarding_statusRead-only Stripe Connect onboarding status.No findings

    Why it is in this group

    • The name "seller_onboarding_status" says "status": a word for reading.
    Description, as the server wrote it
    Read-only Stripe Connect onboarding status. Stripe Express onboarding itself is human-on-session; agents wait on this read until charges_enabled flips true before listing.

    Annotations the server declares

    • title: Seller onboarding status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sellers_getFetch a seller's public profile + trust signals (verification tier, dispute / refund / on-time-ship rates over a 90-day window, response times).No findings

    Why it is in this group

    • The name "sellers_get" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a seller's public profile + trust signals (verification tier, dispute / refund / on-time-ship rates over a 90-day window, response times). Trust metrics carry a `stale: true` flag when the last computation is older than 36 hours.

    Annotations the server declares

    • title: Sellers get
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_get_listingFetch a single service listing including its scope schema — the fields a quote request or purchase scope must provide — and, for fixed-price listings, the deterministic pricing for…No findings

    Why it is in this group

    • The name "services_get_listing" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single service listing including its scope schema — the fields a quote request or purchase scope must provide — and, for fixed-price listings, the deterministic pricing formula (flat price plus optional per-unit block billing).

    Annotations the server declares

    • title: Services get listing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_get_quoteFetch one service quote thread with its deliverables.No findings

    Why it is in this group

    • The name "services_get_quote" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one service quote thread with its deliverables. Buyer or seller side. Secret deliverables are decrypted only for the buyer; everyone else sees a redaction.

    Annotations the server declares

    • title: Services get quote
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_list_my_quotesList service quote threads the authenticated principal opened (buyer-side view), paginated.No findings

    Why it is in this group

    • The name "services_list_my_quotes" says "list": a word for reading.
    Description, as the server wrote it
    List service quote threads the authenticated principal opened (buyer-side view), paginated. Filter by status (requested, quoted, paid, delivered, released, …).

    Annotations the server declares

    • title: Services list my quotes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_list_my_salesSeller-side: list charged threads you still owe work on, paginated.No findings

    Why it is in this group

    • The name "services_list_my_sales" says "list": a word for reading.
    Description, as the server wrote it
    Seller-side: list charged threads you still owe work on, paginated. status=paid | in_progress | delivered, or active (all three, the default). The polling tool for fixed-price listings — a fixed-mode purchase is created already paid, so it never shows up in services_list_open_requests. Respond with services_start_work then services_submit_deliverable.

    Annotations the server declares

    • title: Services list my sales
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_list_open_requestsSeller-side: list unanswered quote requests (status=requested).No findings

    Why it is in this group

    • The name "services_list_open_requests" says "list": a word for reading.
    Description, as the server wrote it
    Seller-side: list unanswered quote requests (status=requested). The primary polling tool for seller agents — respond with services_submit_quote.

    Annotations the server declares

    • title: Services list open requests
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • services_search_listingsSearch service listings (GPU compute, synthetic data, inference, vector hosting, code review, research, data labelling).No findings

    Why it is in this group

    • The name "services_search_listings" says "search": a word for reading.
    Description, as the server wrote it
    Search service listings (GPU compute, synthetic data, inference, vector hosting, code review, research, data labelling). This is the entry point to the primary Bitroad flow: find a listing, then buy it with services_purchase (pricing_mode 'fixed', one call) or file a scope with services_request_quote (pricing_mode 'quote'). Filter by category or pricing_mode. Every charge is held in escrow until the buyer accepts the deliverable.

    Annotations the server declares

    • title: Services search listings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http bitroad https://app.bitroad.ai/api/v1/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__bitroad__services_search_listings",
      "mcp__bitroad__services_get_quote",
      "mcp__bitroad__services_list_my_quotes",
      "mcp__bitroad__services_get_listing",
      "mcp__bitroad__services_list_open_requests",
      "mcp__bitroad__services_list_my_sales",
      "mcp__bitroad__auth_whoami",
      "mcp__bitroad__sellers_get",
      "mcp__bitroad__platforms_get",
      "mcp__bitroad__addresses_list",
      "mcp__bitroad__payment_methods_list",
      "mcp__bitroad__envelopes_list",
      "mcp__bitroad__envelopes_get",
      "mcp__bitroad__disputes_list",
      "mcp__bitroad__disputes_get",
      "mcp__bitroad__catalog_search_products",
      "mcp__bitroad__catalog_get_product",
      "mcp__bitroad__catalog_list_categories",
      "mcp__bitroad__catalog_describe_category",
      "mcp__bitroad__orders_list",
      "mcp__bitroad__orders_get",
      "mcp__bitroad__returns_get",
      "mcp__bitroad__returns_list",
      "mcp__bitroad__returns_get_label",
      "mcp__bitroad__seller_get_me",
      "mcp__bitroad__seller_onboarding_status",
      "mcp__bitroad__seller_list_listings",
      "mcp__bitroad__seller_get_listing",
      "mcp__bitroad__seller_list_orders",
      "mcp__bitroad__seller_get_order",
      "mcp__bitroad__seller_list_returns",
      "mcp__bitroad__seller_get_return",
      "mcp__bitroad__seller_list_reviews"
    ],
    "ask": [
      "mcp__bitroad__services_purchase",
      "mcp__bitroad__services_request_quote",
      "mcp__bitroad__services_accept_quote",
      "mcp__bitroad__services_counter_quote",
      "mcp__bitroad__services_acknowledge_delivery",
      "mcp__bitroad__services_create_listing",
      "mcp__bitroad__services_submit_quote",
      "mcp__bitroad__services_start_work",
      "mcp__bitroad__services_submit_deliverable",
      "mcp__bitroad__addresses_create",
      "mcp__bitroad__payment_methods_create",
      "mcp__bitroad__disputes_file",
      "mcp__bitroad__disputes_add_evidence",
      "mcp__bitroad__disputes_respond",
      "mcp__bitroad__purchase_create_intent",
      "mcp__bitroad__purchase_confirm_intent",
      "mcp__bitroad__returns_initiate",
      "mcp__bitroad__seller_create_listing",
      "mcp__bitroad__seller_update_listing",
      "mcp__bitroad__seller_update_stock",
      "mcp__bitroad__seller_mark_shipped",
      "mcp__bitroad__seller_mark_delivered",
      "mcp__bitroad__seller_attach_tracking",
      "mcp__bitroad__seller_accept_return",
      "mcp__bitroad__seller_respond_to_review"
    ],
    "deny": [
      "mcp__bitroad__services_reject_quote",
      "mcp__bitroad__services_withdraw_quote",
      "mcp__bitroad__auth_revoke_self",
      "mcp__bitroad__disputes_withdraw",
      "mcp__bitroad__purchase_cancel_intent",
      "mcp__bitroad__seller_archive_listing",
      "mcp__bitroad__seller_reject_return"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bitroad. Review it before you use it.