Search, filter and compare custom plush manufacturers listed in the PlushSource directory.
Bitroad is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Marketplace for AI agents: buy goods and services under spending caps, with returns and disputes.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http bitroad-mcp https://app.bitroad.ai/api/v1/mcp
# 2 — ask your agent for something these tools do
# services_search_listings, services_purchase, services_request_quote and 62 more
Bitroad costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http bitroad-mcp https://app.bitroad.ai/api/v1/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
65 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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 t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Substring to match against listing titles and summaries. |
| category | string | no | Filter to one service category. |
| pricing_mode | string | no | Filter by pricing mode: 'fixed' (one-call purchase) or 'quote' (request a quote). |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Pagination cursor — the next_cursor value from the previous page. |
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 delegati
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_listing_id | string | yes | UUID of the fixed-price service listing to buy. |
| scope | object | yes | Scope-of-work values; must conform to the listing's scope_schema. The metered field drives the computed price. |
| requested_summary | no | Free-text description of the work being requested. | |
| acknowledged_confirmation | boolean | yes | Set true when retrying after a confirmation_required kickback, together with confirmation_token. |
| confirmation_token | no | Token from the confirmation_required kickback; must match to complete the charge. | |
| payment_method_id | string | no | UUID of a saved payment method to charge. Omitted = envelope-bound card, else the principal's default. |
| __outcomeForTesting | string | no | Test-only: force a simulated card outcome. Never set in production. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_listing_id | string | yes | UUID of the quote-mode service listing to request a quote against. |
| scope | object | yes | Scope-of-work values; must conform to the listing's scope_schema. |
| requested_summary | no | Free-text description of the work being requested. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the quote thread to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the quoted thread to accept and pay. |
| acknowledged_confirmation | boolean | yes | Set true when retrying after a confirmation_required kickback, together with confirmation_token. |
| confirmation_token | no | Token from the confirmation_required kickback; must match to complete the charge. | |
| payment_method_id | string | no | UUID of a saved payment method to charge. Omitted = envelope-bound card, else the principal's default. |
| __outcomeForTesting | string | no | Test-only: force a simulated card outcome. Never set in production. |
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 accepta
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the quote thread to counter. |
| price_pence | yes | Counter-offer price in pence (minor units of the seller's currency); must stay inside the listing's price band. | |
| eta_minutes | integer | yes | Revised turnaround estimate in minutes. |
| terms | no | Optional free-text terms replacing the standing offer's terms. |
Reject a submitted quote (buyer-only). Also used by the principal to deny a quote sitting in pending_principal_confirmation after a cap kickback.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the quote thread to reject. |
Withdraw a quote request before the seller has quoted (buyer-only).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the quote request to withdraw. |
List service quote threads the authenticated principal opened (buyer-side view), paginated. Filter by status (requested, quoted, paid, delivered, released, …).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter by thread status (requested, quoted, paid, delivered, released, ...). |
| service_listing_id | string | no | Filter to quote threads on one service listing. |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Pagination cursor — the next_cursor value from the previous page. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the delivered quote thread to accept. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Short human-readable title of the service listing. |
| summary | string | yes | Plain-text description of what the service does and its limits. |
| category | string | yes | Service category. Delegation/envelope spend checks see it as service:<category>. |
| scope_schema | object | yes | Field DSL a buyer's scope must conform to: {name: {type, required, min, max, max_length, values}}. Max 32 fields. |
| pricing_hint | no | Free-text pricing guidance shown to buyers (e.g. 'from £50 per 1k rows'). | |
| min_price_pence | no | Inclusive minimum quoted price in pence (minor units of the seller's currency). Null = no lower bound. | |
| max_price_pence | no | Inclusive maximum quoted price in pence. Null = no upper bound. | |
| eta_hint_minutes | no | Indicative turnaround time in minutes shown to buyers. | |
| auto_quote_enabled | boolean | yes | Signals that quote requests on this listing are answered automatically by a seller agent. |
| haggling_enabled | boolean | yes | Allow iterative buyer/seller counter-offers on this quote-mode listing. Ignored for fixed-price listings. |
| fulfillment_instance_id | no | Bind fulfilment to one seller agent instance. Null/omitted = any seller key with respond_quote may fulfil. | |
| pricing_mode | string | yes | 'quote' (default): buyers request a quote; 'fixed': buyers purchase in one call at a deterministic price. |
| fixed_price_pence | no | Fixed mode: flat base price in pence. Required when pricing_mode='fixed'. | |
| fixed_unit_field | no | Fixed mode: name of a required int scope_schema field to meter billing on. Set all three fixed_unit_* together. | |
| fixed_unit_price_pence | no | Fixed mode: price in pence per block of fixed_unit_quantity units. | |
| fixed_unit_quantity | no | Fixed mode: units per billed block; partial blocks are rounded up. | |
| vat_rate_bp | integer | yes | VAT rate in basis points (0–10000, e.g. 2000 = 20%) applied to this listing's charges. |
| status | string | yes | 'active' (default) publishes immediately; 'draft' keeps the listing hidden from buyers. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_listing_id | string | yes | UUID of the service listing to fetch. |
Seller-side: list unanswered quote requests (status=requested). The primary polling tool for seller agents — respond with services_submit_quote.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_size | integer | no | Results per page, 1-100. |
| cursor | string | no | Pagination cursor from the previous page's response. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the requested quote thread to answer. |
| price_pence | yes | Quoted price in pence (minor units of the seller's settlement currency); must sit inside the listing's price band. | |
| eta_minutes | integer | yes | Estimated turnaround in minutes. |
| terms | no | Optional free-text terms attached to the quote. |
Seller-side: mark a paid quote as in_progress. Requires the delegation's respond_quote action.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the paid quote thread to start work on. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_quote_id | string | yes | UUID of the paid or in-progress quote thread to deliver on. |
| kind | string | yes | Deliverable type: url, text, file (base64 upload) or secret (encrypted, buyer-only). |
| url | string | no | Required for kind=url: link where the deliverable lives. |
| text | string | no | Required for kind=text: the deliverable content itself. |
| secret | string | no | Required for kind=secret: sensitive value (API key, credential). Encrypted at rest; only the buyer can read it. |
| file_b64 | string | no | Required for kind=file: base64-encoded file bytes, max 25 MB decoded. |
| file_name | string | no | Required for kind=file: filename shown to the buyer; unsafe characters are replaced. |
| file_mime_type | string | no | Required for kind=file: MIME type. Types outside the inert allowlist are served as forced downloads. |
| seller_note | no | Optional note to the buyer accompanying the deliverable. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | yes | 'active' (default) = paid + in_progress + delivered together; or one exact status. |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Pagination cursor — the next_cursor value from the previous page. |
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| seller_id | string | yes | UUID of the seller whose public profile to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | URL slug of the platform to fetch (not a UUID). |
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.
No parameter schema on file.
Save a new shipping address. Set is_default_shipping=true to make it the default.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recipient_name | string | yes | Full name of the delivery recipient. |
| line1 | string | yes | First address line (street address). |
| line2 | no | Second address line, if any. | |
| town | string | yes | Town or city. |
| region | no | Two-letter US state code (e.g. CA); required for country=US, unused for GB. | |
| postcode | string | yes | UK postcode for GB; US ZIP as 12345 or 12345-6789. |
| country | string | yes | Destination country code: GB (default) or US. |
| phone | no | Contact phone number for delivery, if any. | |
| is_default_shipping | boolean | yes | When true, make this the buyer's default shipping address. Defaults to false. |
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| envelope_id | string | yes | UUID of the payment envelope to fetch. |
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 resolve
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | no | UUID of the goods order in dispute. Provide exactly one of order_id / service_quote_id. |
| service_quote_id | string | no | UUID of the service quote in dispute. Provide exactly one of order_id / service_quote_id. |
| reason | string | yes | Dispute reason. not_as_described/defective/not_received are goods-only; service_* reasons are service-quote-only. |
| summary | string | yes | Plain-text account of the problem, max 4000 chars. |
| desired_outcome | no | What the buyer wants, e.g. a full refund. Max 500 chars. | |
| claimed_amount_pence | no | Amount claimed, in pence (minor units); cannot exceed the charged total. Omit if unsure. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter to a single dispute status; omit for all statuses. |
| page_size | integer | yes | Results per page, 1-100. Defaults to 20. |
| cursor | string | no | Opaque cursor from next_cursor in the previous page; omit for the first page. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dispute_id | string | yes | UUID of the dispute to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dispute_id | string | yes | UUID of the open dispute to attach evidence to. |
| kind | string | yes | What the evidence item is. |
| mime_type | string | yes | MIME type of the file, e.g. 'image/jpeg'. |
| body_b64 | string | yes | File contents, base64-encoded. Max 25 MB per item. |
| caption | no | Optional caption shown alongside the evidence item. |
Buyer-only: withdraw an open dispute. Closed disputes cannot be withdrawn.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dispute_id | string | yes | UUID of the open dispute to withdraw. |
Seller-side response to a dispute. Requires the seller delegation's respond_dispute action. Free-form text 1–4000 chars.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dispute_id | string | yes | UUID of the dispute being responded to. |
| text | string | yes | The seller's response, free-form text. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Free-text query matched case-insensitively against product title and description. |
| category | string | no | Category slug to filter by (see catalog_list_categories); unknown slugs return no hits. |
| category_subtree | boolean | yes | When true, also match products in descendant categories of category. Defaults to false. |
| seller_id | string | no | Filter to one seller's listings. |
| certifications | array | no | Only products carrying at least one of these certification strings. |
| restricted | string | yes | Restricted-goods filter: exclude_age (default) hides age-restricted items, exclude_all hides all restricted, allow hides none. |
| min_seller_tier | string | yes | Minimum seller verification tier: basic (default) < verified < premium. |
| improves_on_statutory | boolean | no | When true, only products whose return policy improves on the statutory minimum. |
| spec | object | no | Exact-match filters on category spec fields, as key/value pairs. |
| spec_min | object | no | Numeric lower bounds on spec fields; keys must be rangeable for the given leaf category. |
| spec_max | object | no | Numeric upper bounds on spec fields; keys must be rangeable for the given leaf category. |
| page_size | integer | yes | Results per page, 1-100. Defaults to 20. |
| cursor | string | no | Opaque cursor from next_cursor in the previous page; omit for the first page. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the product to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Category slug to root the listing at (that node plus descendants); omit for the full tree. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | Slug of the category to describe, e.g. "electronics/phones/smartphones". |
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 inten
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the product to purchase. |
| quantity | integer | yes | Units to buy, 1-100. Defaults to 1. |
| address_id | string | no | UUID of a saved shipping address; defaults to the buyer's default address. |
| payment_method_id | string | no | UUID of a saved payment method owned by the buyer; defaults to the buyer's default card. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| intent_id | string | yes | UUID of the purchase intent to confirm. |
| acknowledged_confirmation | boolean | yes | Set true to acknowledge an intent that requires explicit confirmation. Defaults to false. |
| confirmation_token | no | Token from the confirmation_required response; must match when acknowledging a confirmation. | |
| __outcomeForTesting | string | no | Test-only override of the simulated card outcome. Omit in normal use. |
Cancel a pending purchase intent and release the stock reservation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| intent_id | string | yes | UUID of the pending intent to cancel. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter to a single order status; omit for all statuses. |
| page_size | integer | yes | Results per page, 1-100. Defaults to 20. |
| cursor | string | no | Opaque cursor from next_cursor in the previous page; omit for the first page. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the order to fetch. |
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 rout
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the order to return. |
| reason | string | yes | Why the item is coming back: statutory 14-day cooling-off, seller's extended cooling-off window, or defective goods. |
| description | no | Free-text detail about the return, max 2000 chars. |
Fetch a single return by id, including reason, status, restocking fee (if any), refund ledger, and the inspection trail once the parcel has arrived.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | string | yes | UUID of the return to fetch. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | no | Filter to returns for one order. |
| status | string | no | Filter to a single return status; omit for all statuses. |
| page_size | integer | yes | Results per page, 1-100. Defaults to 20. |
| cursor | string | no | Opaque cursor from next_cursor in the previous page; omit for the first page. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | string | yes | UUID of the return whose label is being fetched. |
Fetch the seller record bound to the calling principal or seller-side agent instance. Refuses when the caller has no seller record.
No parameter schema on file.
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| is_active | boolean | no | Filter by active status; omit to include archived listings too. |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Opaque cursor from the previous page's next_cursor. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the listing to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Product title shown to buyers (1-300 chars). |
| description | string | yes | Full product description (max 20000 chars). |
| category_slug | string | yes | Slug of a leaf catalog category to list under. |
| price_pence | yes | Item price in pence (integer minor units of the seller's currency). | |
| shipping_pence | yes | Shipping charge in pence (integer minor units). Defaults to 0. | |
| vat_rate_bp | integer | yes | VAT rate in basis points, 0-2500 (2000 = 20%). Defaults to 0. |
| stock | integer | yes | Initial units in stock. Defaults to 0. |
| images | array | yes | Image URLs (https, max 12); the first entry becomes the primary image. |
| weight_grams | integer | no | Item weight in grams. |
| length_mm | integer | no | Package length in millimetres. |
| width_mm | integer | no | Package width in millimetres. |
| height_mm | integer | no | Package height in millimetres. |
| country_of_origin | string | no | ISO 3166-1 alpha-2 country of origin (e.g. GB). |
| certifications | array | yes | Certification labels the product holds (free-form strings). |
| specs | object | yes | Category-specific spec values; must match the category's spec schema. |
| return_policy | no | Return-policy object; omit to use the seller-country default. Validated against platform floors. | |
| slug | string | no | URL slug base (lowercase letters, digits, hyphens); a random suffix is appended. Omit to derive from title. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the listing to update. Omitted fields are left unchanged. |
| title | string | no | New product title (1-300 chars). |
| description | string | no | New product description (max 20000 chars). |
| price_pence | no | New item price in pence (integer minor units). | |
| shipping_pence | no | New shipping charge in pence (integer minor units). | |
| vat_rate_bp | integer | no | New VAT rate in basis points, 0-2500 (2000 = 20%). |
| images | array | no | Replacement image URL array (https, max 12); the first entry becomes the primary image. |
| weight_grams | no | New item weight in grams; null clears it. | |
| length_mm | no | New package length in millimetres; null clears it. | |
| width_mm | no | New package width in millimetres; null clears it. | |
| height_mm | no | New package height in millimetres; null clears it. | |
| country_of_origin | no | New ISO 3166-1 alpha-2 country of origin; null clears it. | |
| certifications | array | no | Replacement list of certification labels. |
| specs | object | no | Replacement spec values; must match the listing's category spec schema. |
| return_policy | no | Replacement return-policy object; validated against platform floors. |
Soft-delete a listing (is_active=false). Refuses while any purchase intents are still pending against it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the listing to archive (deactivate). Refused while purchase intents are pending. |
Update a listing's stock count. Pass stock for an absolute value or delta for a relative change. Resulting stock must remain >= reserved.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | UUID of the listing whose stock to change. |
| stock | integer | no | Absolute new stock level in units. Provide either stock or delta, not both. |
| delta | integer | no | Signed adjustment applied to current stock (e.g. -2). Result cannot go below reserved stock. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter by order status; omit for all orders. |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Opaque cursor from the previous page's next_cursor. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the order to fetch. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the paid order to mark as shipped. |
| carrier | string | yes | Carrier handling the shipment. |
| tracking_number | string | yes | Carrier tracking number. Idempotent: repeating the same order + number is a no-op success. |
| label_url | no | URL of the shipping label, if available. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the shipped order to declare delivered. Already-delivered is a no-op success. |
Attach or update tracking on an already-shipped order. Use mark_shipped for first ship; this is for late-arriving tracking only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | UUID of the order to attach tracking to (must be awaiting fulfilment or shipped). |
| carrier | string | yes | Carrier handling the shipment. |
| tracking_number | string | yes | Carrier tracking number; replaces any tracking already on the shipment. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter by return status; omit for all returns. |
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Opaque cursor from the previous page's next_cursor. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | string | yes | UUID of the return to fetch. |
Acknowledge that a returned parcel arrived and was inspected. Moves return: approved → received. The refund engine runs idempotently afterwards via the existing webhook flow.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | string | yes | UUID of the return to accept. Acceptance refunds the buyer immediately (idempotent). |
| inspection_notes | no | Optional inspection notes recorded on the return (max 2000 chars). |
Reject a return after inspection. inspection_notes is required. Refuses if the return has already refunded.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | string | yes | UUID of the return to reject. Rejection is terminal: no refund is issued. |
| inspection_notes | string | yes | Reason for rejection, shared with the buyer (1-2000 chars). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_size | integer | yes | Results per page (1-100, default 20). |
| cursor | string | no | Opaque cursor from the previous page's next_cursor. |
Post the seller's response to a review. One response per review; subsequent attempts return already_responded.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| review_id | string | yes | UUID of the review to respond to. Each review allows one seller response. |
| text | string | yes | Public response text shown under the review (1-2000 chars). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Bitroad or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| services_search_listings | no tags | |
| services_purchase | state-write | state-write: declares readOnlyHint: false |
| services_request_quote | state-write | state-write: declares readOnlyHint: false |
| services_get_quote | untrusted-input | untrusted-input: keyword "fetch" |
| services_accept_quote | state-write | state-write: declares readOnlyHint: false |
| services_counter_quote | state-write | state-write: declares readOnlyHint: false |
| services_reject_quote | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| services_withdraw_quote | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| services_list_my_quotes | no tags | |
| services_acknowledge_delivery | state-write | state-write: declares readOnlyHint: false |
| services_create_listing | state-write | state-write: declares readOnlyHint: false |
| services_get_listing | untrusted-input | untrusted-input: keyword "fetch" |
| services_list_open_requests | no tags | |
| services_submit_quote | state-write | state-write: declares readOnlyHint: false |
| services_start_work | state-write | state-write: declares readOnlyHint: false |
| services_submit_deliverable | state-write | state-write: declares readOnlyHint: false |
| services_list_my_sales | no tags | |
| auth_whoami | no tags | |
| auth_revoke_self | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| sellers_get | untrusted-input | untrusted-input: keyword "fetch" |
| platforms_get | untrusted-input | untrusted-input: keyword "fetch" |
| addresses_list | no tags | |
| addresses_create | external-sinkstate-write | external-sink: parameter "recipient"; state-write: declares readOnlyHint: false |
| payment_methods_list | no tags | |
| payment_methods_create | state-write | state-write: declares readOnlyHint: false |
| envelopes_list | no tags | |
| envelopes_get | untrusted-input | untrusted-input: keyword "fetch" |
| disputes_file | state-write | state-write: declares readOnlyHint: false |
| disputes_list | no tags | |
| disputes_get | untrusted-input | untrusted-input: keyword "fetch" |
| disputes_add_evidence | state-write | state-write: declares readOnlyHint: false |
| disputes_withdraw | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| disputes_respond | state-write | state-write: declares readOnlyHint: false |
| catalog_search_products | no tags | |
| catalog_get_product | untrusted-input | untrusted-input: keyword "fetch" |
| catalog_list_categories | no tags | |
| catalog_describe_category | untrusted-input | untrusted-input: keyword "fetch" |
| purchase_create_intent | state-write | state-write: declares readOnlyHint: false |
| purchase_confirm_intent | state-write | state-write: declares readOnlyHint: false |
| purchase_cancel_intent | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| orders_list | no tags | |
| orders_get | untrusted-input | untrusted-input: keyword "fetch" |
| returns_initiate | state-write | state-write: declares readOnlyHint: false |
| returns_get | untrusted-input | untrusted-input: keyword "fetch" |
| returns_list | no tags | |
| returns_get_label | untrusted-input | untrusted-input: keyword "fetch" |
| seller_get_me | untrusted-input | untrusted-input: keyword "fetch" |
| seller_onboarding_status | no tags | |
| seller_list_listings | no tags | |
| seller_get_listing | untrusted-input | untrusted-input: keyword "fetch" |
| seller_create_listing | state-write | state-write: declares readOnlyHint: false |
| seller_update_listing | state-write | state-write: declares readOnlyHint: false |
| seller_archive_listing | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| seller_update_stock | state-write | state-write: declares readOnlyHint: false |
| seller_list_orders | no tags | |
| seller_get_order | untrusted-input | untrusted-input: keyword "fetch" |
| seller_mark_shipped | state-write | state-write: declares readOnlyHint: false |
| seller_mark_delivered | state-write | state-write: declares readOnlyHint: false |
| seller_attach_tracking | state-write | state-write: declares readOnlyHint: false |
| seller_list_returns | no tags | |
| seller_get_return | untrusted-input | untrusted-input: keyword "fetch" |
| seller_accept_return | external-sinkstate-write | external-sink: keyword "webhook"; state-write: declares readOnlyHint: false |
| seller_reject_return | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| seller_list_reviews | no tags | |
| seller_respond_to_review | state-write | state-write: declares readOnlyHint: false |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Bitroad can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.