Skip to content

BuyingMesh Procurement

by buyingmesh.com · remote · no sign-in to list tools · v0.3.1 · published by com.buyingmesh

Structured B2B supply search, quoting, sandbox orders and fulfillment status for agents.

Deletes · 3Final · 2Changes · 3

20 tools: 3 can delete or cancel things, 2 do something that can't be undone, 3 change things and 12 only read.

Scanned Oct 21, 2026

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

claude mcp add --transport http procurement https://buyingmesh.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

Tools

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

20 tools

Deletes or cancels 3Claude Code: deny
  • cancel_orderCancel an order before fulfillment when the state machine permits it.No findings

    Why it is in this group

    • The name "cancel_order" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel an order before fulfillment when the state machine permits it. Cancellation is terminal and emits order.cancelled.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • create_orderRequest an order from a buyer-approved production quote.No findings

    Why it is in this group

    • The name "create_order" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Request an order from a buyer-approved production quote. Live order creation is currently closed: this tool returns the stable error code ordering_not_open and recommends submit_inquiry until settlement and fulfillment are enabled. It never charges the buyer while closed.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • update_order_statusAdvance an enabled order through an allowed fulfillment state transition and emit its webhook event.No findings

    Why it is in this group

    • The name "update_order_status" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Advance an enabled order through an allowed fulfillment state transition and emit its webhook event. Use only when the responsible fulfillment party has supplied evidence.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 2Claude Code: ask
  • contact_supportSend a support request from an agent to the BuyingMesh operator by email.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe description's first verb is "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Send a support request from an agent to the BuyingMesh operator by email. Never include private keys, passwords or payment secrets.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • submit_inquirySend a structured, non-binding product inquiry to the responsible merchant.Reads text others writeNo findings

    Why it is in this group

    • The name "submit_inquiry" says "submit": a word for a change.
    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Send a structured, non-binding product inquiry to the responsible merchant. Use this when inventory is unknown, a buyer needs a supplier answer, or a quote cannot yet be issued. The inquiry stores SKU, quantity, destination, buyer and agent identity and does not create an order or payment.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Changes things 3Claude Code: ask
  • create_quoteCreate a retrievable, non-binding quote snapshot for published merchant SKUs.No findings

    Why it is in this group

    • The name "create_quote" says "create": a word for a change.
    Description, as the server wrote it
    Create a retrievable, non-binding quote snapshot for published merchant SKUs. Real order creation remains disabled until production settlement and fulfillment are ready.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • estimate_landed_costCombine product subtotal, estimated shipping and preliminary duty into a destination landed-cost range.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Combine product subtotal, estimated shipping and preliminary duty into a destination landed-cost range. The response includes assumptions and must not be treated as a binding quote.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • request_buyer_confirmationCreate a short-lived explicit confirmation request for a quote before any order mutation.No findings

    Why it is in this group

    • The name "request_buyer_confirmation" says "request": a word for a change.
    Description, as the server wrote it
    Create a short-lived explicit confirmation request for a quote before any order mutation. This tool has no payment or order side effect.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 12Claude Code: allow
  • compare_quotesCompare non-binding quote options for approved merchant SKUs by quantity and destination.Reads text others writeNo findings

    Why it is in this group

    • The name "compare_quotes" says "compare": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Compare non-binding quote options for approved merchant SKUs by quantity and destination. Returns no options when the catalog is empty.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • compare_supplier_offersCompare eligible supplier offers for the same requested SKUs, quantity and destination.Reads text others writeNo findings

    Why it is in this group

    • The name "compare_supplier_offers" says "compare": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Compare eligible supplier offers for the same requested SKUs, quantity and destination. This is read-only and returns estimated shipping separately from item subtotal.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_order_statusRead order status, tracking number, ETA, payment mode and fulfillment events.No findings

    Why it is in this group

    • The name "get_order_status" says "get": a word for reading.
    Description, as the server wrote it
    Read order status, tracking number, ETA, payment mode and fulfillment events.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_productRetrieve a product as Schema.org JSON-LD from the selected catalog environment.No findings

    Why it is in this group

    • The name "get_product" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve a product as Schema.org JSON-LD from the selected catalog environment.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_quoteRetrieve a previously created quote by quoteId and inspect its expiry, line items, destination and supplier options.No findings

    Why it is in this group

    • The name "get_quote" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve a previously created quote by quoteId and inspect its expiry, line items, destination and supplier options.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_supplierRetrieve a public supplier storefront by stable supplier ID or public slug.No findings

    Why it is in this group

    • The name "get_supplier" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve a public supplier storefront by stable supplier ID or public slug.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_supplier_performanceRetrieve platform-observed supplier fulfillment metrics, order sample size and as-of timestamp.No findings

    Why it is in this group

    • The name "get_supplier_performance" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve platform-observed supplier fulfillment metrics, order sample size and as-of timestamp. Self-reported claims are not substituted for observed data.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_supplier_productsList precisely filtered, approved catalog products for a public supplier storefront.No findings

    Why it is in this group

    • The name "list_supplier_products" says "list": a word for reading.
    Description, as the server wrote it
    List precisely filtered, approved catalog products for a public supplier storefront.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • lookup_tariffsReturn a preliminary HS-code and destination tariff estimate.Reads text others writeNo findings

    Why it is in this group

    • The name "lookup_tariffs" says "lookup": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Return a preliminary HS-code and destination tariff estimate. Customs classification and the final duty remain subject to broker confirmation.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_productsSearch structured products using exact SKU or GTIN, supplier, material, dimensions, MOQ, price, inventory state, lead time and qualification filters.No findings

    Why it is in this group

    • The name "search_products" says "search": a word for reading.
    Description, as the server wrote it
    Search structured products using exact SKU or GTIN, supplier, material, dimensions, MOQ, price, inventory state, lead time and qualification filters. Returns approved merchant listings; inventory may be unknown and must be freshly confirmed before quote or order.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_shipping_ratesReturn non-binding shipping estimates from an origin to a destination.Reads text others writeNo findings

    Why it is in this group

    • The name "search_shipping_rates" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Return non-binding shipping estimates from an origin to a destination. Carrier confirmation is required before any transaction.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_suppliersFind approved public supplier storefronts and inspect reviewed credentials and platform-observed performance.Reads private data1 finding

    Why it is in this group

    • The name "search_suppliers" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "find" and "credential": it reads secrets.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...pplier storefronts and inspect reviewed credentials and platform-observed performance."

      What this check looks for
    Description, as the server wrote it
    Find approved public supplier storefronts and inspect reviewed credentials and platform-observed performance.

    Annotations the server declares

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

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

7 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write7
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__procurement__contact_support"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 14:28 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
8
Protocol version
2024-11-05
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
none
Authorization servers
none
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 8 tools that change things (3 destructive, 2 irreversible, 3 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://buyingmesh.com/mcp: tools/list returned 20 tools to an anonymous client, including create_order (destructive), update_order_status (destructive), cancel_order (destructive), submit_inquiry (irreversible), contact_support (irreversible) and 3 more

    What this check looks for

Install

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

claude mcp add --transport http procurement https://buyingmesh.com/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__procurement__search_products",
      "mcp__procurement__search_suppliers",
      "mcp__procurement__get_supplier",
      "mcp__procurement__list_supplier_products",
      "mcp__procurement__get_product",
      "mcp__procurement__compare_quotes",
      "mcp__procurement__get_quote",
      "mcp__procurement__get_order_status",
      "mcp__procurement__compare_supplier_offers",
      "mcp__procurement__get_supplier_performance",
      "mcp__procurement__search_shipping_rates",
      "mcp__procurement__lookup_tariffs"
    ],
    "ask": [
      "mcp__procurement__create_quote",
      "mcp__procurement__estimate_landed_cost",
      "mcp__procurement__request_buyer_confirmation",
      "mcp__procurement__submit_inquiry",
      "mcp__procurement__contact_support"
    ],
    "deny": [
      "mcp__procurement__create_order",
      "mcp__procurement__update_order_status",
      "mcp__procurement__cancel_order"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as procurement. Review it before you use it.

Capability tags behind 8 rules
  • mcp__procurement__search_suppliers private-data
  • mcp__procurement__compare_quotes untrusted-input
  • mcp__procurement__compare_supplier_offers untrusted-input
  • mcp__procurement__search_shipping_rates untrusted-input
  • mcp__procurement__lookup_tariffs untrusted-input
  • mcp__procurement__estimate_landed_cost untrusted-input
  • mcp__procurement__submit_inquiry untrusted-input
  • mcp__procurement__contact_support untrusted-input, outbound