veeqo-mcp
Registry code: 1af6208f28fc5f23
Tools for Veeqo, hosted by usefulapi.io. Read-only tools never change data; ask the user before a tool that creates, changes or deletes Veeqo data. Free plan: 100 tool calls per month. Run veeqo_usage_status to see the calls used this month. Pro (unlimited calls, $9/month or $90/year): when the user wants more calls or reaches the limit, run veeqo_upgrade; it returns a Stripe Checkout link for the user to open. veeqo_cancel_subscription cancels Pro at the end of the paid period.
- endpoint
- https://veeqo.usefulapi.io/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is veeqo-mcp live?
- Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
- Is veeqo-mcp free to use?
- Not measured yet.
- What tools does veeqo-mcp have?
- 22 tools: veeqo_list_warehouses, veeqo_get_shipment_tracking, veeqo_get_customer, veeqo_get_company, veeqo_list_stores, veeqo_get_warehouse, veeqo_list_orders, veeqo_get_order, ….
- Is veeqo-mcp safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 22 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
veeqo_list_warehouses unknown never probed
List warehouses with address, phone and dispatch cut-off times. Use the ids for stock levels and warehouse filters. GET /warehouses.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 }, "external_id": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Only the warehouse with this external id." } } }arguments 24 linesveeqo_get_shipment_tracking unknown never probed
Tracking events (timestamp, status, description, location) for a shipment. Available when the label was bought in Veeqo. The shipment id is in an order's allocations[].shipment. GET /shipping/tracking_events/{shipment_id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "shipment_id" ], "properties": { "shipment_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo shipment id (from veeqo_get_order → allocations[].shipment.id).", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_get_customer unknown never probed
One customer by id with billing and shipping addresses and notes. GET /customers/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "customer_id" ], "properties": { "customer_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo customer id.", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_get_company unknown 2h ago
The Veeqo company this API key belongs to: id, name, product (e.g. veeqo-shipping), paying/trial state, address and company settings (currency, weight/dimension units, timezone). The employee list and billing internals are not returned. GET /current_company.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesveeqo_list_stores unknown never probed
List the sales channels (stores) connected to Veeqo — Amazon, eBay, Shopify, POS, etc. — with id, name, type and state. Use the ids to filter orders by store. Marketplace credentials and integration settings are never returned. GET /channels.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 } } }arguments 18 linesveeqo_get_warehouse unknown never probed
One warehouse by id. GET /warehouses/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "warehouse_id" ], "properties": { "warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo warehouse id.", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_list_orders unknown never probed
List or search orders, newest first, with line items, customer, delivery address, store, allocations and shipments (tracking numbers). Filter by status, store, tag, free text, created/due date or update time. GET /orders.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "tag": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Only orders carrying the tag with this exact name." }, "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "query": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Free-text search (order number, customer name, email, SKU...)." }, "status": { "enum": [ "awaiting_payment", "awaiting_stock", "awaiting_fulfillment", "shipped", "on_hold", "cancelled", "refunded" ], "type": "string", "description": "Order status." }, "since_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only orders with an id greater than this.", "exclusiveMinimum": 0 }, "due_after": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Only orders due on or after this date (yyyy-mm-dd)." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 }, "due_before": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Only orders due on or before this date, whole day included (yyyy-mm-dd)." }, "channel_ids": { "type": "array", "items": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0 }, "maxItems": 20, "minItems": 1, "description": "Only orders from these store (channel) ids — see veeqo_list_stores." }, "created_after": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Only orders created on or after this date (yyyy-mm-dd)." }, "updated_since": { "type": "string", "description": "Only orders updated at or after this ISO 8601 date-time with timezone (sent in UTC)." }, "created_before": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Only orders created on or before this date, whole day included (yyyy-mm-dd)." }, "allocated_at_warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only orders allocated at this warehouse id.", "exclusiveMinimum": 0 } } }arguments 90 linesveeqo_get_order unknown never probed
One order by id: status, totals, line items (sellable ids, SKUs, quantities), customer and delivery address, store, notes, tags, allocations and shipments with tracking numbers. GET /orders/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "order_id" ], "properties": { "order_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo order id (not the store's order number — find it with veeqo_list_orders query).", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_get_order_returns unknown never probed
Returns (RMAs) recorded on an order for one of its sellables: return number, status, reason, returned line items and received quantities. Veeqo's reference requires the sellable id (an order line item's sellable.id). GET /orders/{id}/returns?sellable_id=.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "order_id", "sellable_id" ], "properties": { "order_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo order id.", "exclusiveMinimum": 0 }, "sellable_id": { "type": "integer", "maximum": 9007199254740991, "description": "Sellable (variant) id of the returned item — veeqo_get_order → line_items[].sellable.id.", "exclusiveMinimum": 0 } } }arguments 22 linesveeqo_list_products unknown never probed
List or search products with their sellables (variants): SKU, UPC, price, cost, and per-warehouse stock entries (physical, allocated, available). GET /products.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "query": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Search by product name or SKU." }, "since_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only products with an id greater than this.", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 }, "warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only products with stock in this warehouse.", "exclusiveMinimum": 0 }, "created_since": { "type": "string", "description": "Only products created at or after this ISO 8601 date-time with timezone." }, "updated_since": { "type": "string", "description": "Only products updated at or after this ISO 8601 date-time with timezone." } } }arguments 44 linesveeqo_get_product unknown never probed
One product by id with all sellables (variants), prices, weights, customs data and stock entries per warehouse. GET /products/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "product_id" ], "properties": { "product_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo product id.", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_get_stock_entry unknown never probed
Stock of one sellable (variant) in one warehouse: physical, allocated, available, incoming (purchase orders) and in-transit levels, bin location and the low-stock flag. GET /sellables/{sellable_id}/warehouses/{warehouse_id}/stock_entry.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "sellable_id", "warehouse_id" ], "properties": { "sellable_id": { "type": "integer", "maximum": 9007199254740991, "description": "Sellable (variant) id — product.sellables[].id, not the product id.", "exclusiveMinimum": 0 }, "warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Warehouse id.", "exclusiveMinimum": 0 } } }arguments 22 linesveeqo_set_stock_level unknown never probed
WRITE: set the physical stock level of ONE sellable in ONE warehouse (a stock count correction), optionally its bin location. This overwrites the current on-hand quantity, and Veeqo may push the new available stock to the connected sales channels. The entry's infinite-stock setting is read first and kept as it is (this tool never changes it). Veeqo marks this endpoint 'Paid plan only'. GET then PUT /sellables/{sellable_id}/warehouses/{warehouse_id}/stock_entry.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "sellable_id", "warehouse_id", "physical_stock_level" ], "properties": { "location": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Bin/shelf location in the warehouse, e.g. 'Shelf 2B'." }, "sellable_id": { "type": "integer", "maximum": 9007199254740991, "description": "Sellable (variant) id.", "exclusiveMinimum": 0 }, "warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Warehouse id.", "exclusiveMinimum": 0 }, "physical_stock_level": { "type": "integer", "maximum": 10000000, "minimum": 0, "description": "New physical (on-hand) quantity." } } }arguments 35 linesveeqo_list_suppliers unknown never probed
List suppliers with address, sales/accounting contacts, currency, credit limit and open/completed purchase-order counts (bank details are not returned). Paid Veeqo plans only. GET /suppliers.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 } } }arguments 18 linesveeqo_get_supplier unknown never probed
One supplier by id (bank details are not returned). Paid Veeqo plans only. GET /suppliers/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "supplier_id" ], "properties": { "supplier_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo supplier id.", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_list_purchase_orders unknown never probed
List or search purchase orders with supplier, destination warehouse and line items (ordered/received quantities, cost). Search-index backed, so a just-changed PO may be stale here — confirm with veeqo_get_purchase_order. Paid Veeqo plans only. GET /purchase_orders.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "order": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction, used with sort_by." }, "query": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Search supplier name/post code, PO number, reference, SKU, UPC or item title." }, "state": { "enum": [ "draft", "active", "completed", "not_received", "partially_received", "fully_received", "past_due", "all" ], "type": "string", "description": "Lifecycle state (draft/active/completed) or a received-status filter (not_received, partially_received, fully_received, past_due, all). Default: all states including drafts." }, "sort_by": { "enum": [ "supplier_name", "created_at", "expected_date", "estimated_delivery_days" ], "type": "string", "description": "Sort field (default created_at, newest first)." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 }, "sellable_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only active POs containing this sellable (variant) id.", "exclusiveMinimum": 0 }, "supplier_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only POs for this supplier.", "exclusiveMinimum": 0 }, "created_after": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Created on or after this date (yyyy-mm-dd)." }, "updated_since": { "type": "string", "description": "Updated at or after this ISO 8601 date-time with timezone." }, "created_before": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Created on or before this date, whole day included (yyyy-mm-dd)." }, "reference_number": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Exact PO reference number." }, "destination_warehouse_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only POs delivering to this warehouse.", "exclusiveMinimum": 0 } } }arguments 94 linesveeqo_get_purchase_order unknown never probed
One purchase order by id with supplier, destination warehouse and every line item. Paid Veeqo plans only. GET /purchase_orders/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "purchase_order_id" ], "properties": { "purchase_order_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo purchase order id.", "exclusiveMinimum": 0 } } }arguments 15 linesveeqo_list_tags unknown never probed
All tags in the account (id, name, colour, how many records use it). Use the ids with veeqo_tag_orders. GET /tags.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesveeqo_add_order_note unknown never probed
WRITE: add an internal (employee) note to an order, e.g. 'Customer asked for gift wrap'. It is visible to your Veeqo team on the order; it is not emailed to the customer. Notes cannot be deleted through the API. POST /orders/{order_id}/notes.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "order_id", "text" ], "properties": { "text": { "type": "string", "maxLength": 2000, "minLength": 1, "description": "The note text." }, "order_id": { "type": "integer", "maximum": 9007199254740991, "description": "Veeqo order id.", "exclusiveMinimum": 0 } } }arguments 22 linesveeqo_tag_orders unknown never probed
WRITE: apply existing tags (ids from veeqo_list_tags) to up to 50 orders. Tags can drive Veeqo automation rules and filters. Tagging an order that already has the tag changes nothing. POST /bulk_tagging.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "order_ids", "tag_ids" ], "properties": { "tag_ids": { "type": "array", "items": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0 }, "maxItems": 10, "minItems": 1, "description": "Tag ids to apply (1-10)." }, "order_ids": { "type": "array", "items": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0 }, "maxItems": 50, "minItems": 1, "description": "Veeqo order ids to tag (1-50)." } } }arguments 32 linesveeqo_list_customers unknown 2h ago
List or search customers with email, phone, billing address and shipping addresses. GET /customers.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "query": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Free-text search, e.g. an email address or name." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 }, "customer_type": { "enum": [ "retail", "business" ], "type": "string", "description": "Customer type." } } }arguments 32 linesveeqo_list_delivery_methods unknown 2h ago
List the delivery methods orders can use (id, name, cost). GET /delivery_methods.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 25).", "exclusiveMinimum": 0 } } }arguments 18 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id1af6208f28fc5f23.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/1af6208f28fc5f23/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/1af6208f28fc5f23?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.
Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.
- rotacloud.usefulapi.io rotacloud-mcp
- churchsuite.usefulapi.io churchsuite-mcp
- gingr.usefulapi.io gingr-mcp
- textline.usefulapi.io textline-mcp
- checkly.usefulapi.io checkly-mcp
- freeagent.usefulapi.io freeagent-mcp
- goteamup.usefulapi.io goteamup-mcp
- ordoro.usefulapi.io ordoro-mcp
58 more sit on this domain. All of them.