Veeqo MCP by usefulapi
Read Veeqo orders, products, stock, warehouses, customers and POs; add notes, tag, set stock.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"veeqo": {
"url": "https://veeqo.usefulapi.io/mcp"
}
}
}Remote endpoints
https://veeqo.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (22)
🟢veeqo_get_company
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_stores(page, page_size)
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.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_warehouses(external_id, page, page_size)
List warehouses with address, phone and dispatch cut-off times. Use the ids for stock levels and warehouse filters. GET /warehouses.
Input Schema
{
"type": "object",
"properties": {
"external_id": {
"description": "Only the warehouse with this external id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_warehouse(warehouse_id)
One warehouse by id. GET /warehouses/{id}.
Input Schema
{
"type": "object",
"properties": {
"warehouse_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo warehouse id."
}
},
"required": [
"warehouse_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_orders(status, query, channel_ids, tag, allocated_at_warehouse_id, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Order status.",
"type": "string",
"enum": [
"awaiting_payment",
"awaiting_stock",
"awaiting_fulfillment",
"shipped",
"on_hold",
"cancelled",
"refunded"
]
},
"query": {
"description": "Free-text search (order number, customer name, email, SKU...).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"channel_ids": {
"description": "Only orders from these store (channel) ids — see veeqo_list_stores.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"tag": {
"description": "Only orders carrying the tag with this exact name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"allocated_at_warehouse_id": {
"description": "Only orders allocated at this warehouse id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_after": {
"description": "Only orders created on or after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"created_before": {
"description": "Only orders created on or before this date, whole day included (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"due_after": {
"description": "Only orders due on or after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"due_before": {
"description": "Only orders due on or before this date, whole day included (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updated_since": {
"description": "Only orders updated at or after this ISO 8601 date-time with timezone (sent in UTC).",
"type": "string"
},
"since_id": {
"description": "Only orders with an id greater than this.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_order(order_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo order id (not the store's order number — find it with veeqo_list_orders query)."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_order_returns(order_id, sellable_id)
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=.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo order id."
},
"sellable_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Sellable (variant) id of the returned item — veeqo_get_order → line_items[].sellable.id."
}
},
"required": [
"order_id",
"sellable_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_shipment_tracking(shipment_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"shipment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo shipment id (from veeqo_get_order → allocations[].shipment.id)."
}
},
"required": [
"shipment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_products(query, warehouse_id, created_since, updated_since, since_id, ...)
List or search products with their sellables (variants): SKU, UPC, price, cost, and per-warehouse stock entries (physical, allocated, available). GET /products.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search by product name or SKU.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"warehouse_id": {
"description": "Only products with stock in this warehouse.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_since": {
"description": "Only products created at or after this ISO 8601 date-time with timezone.",
"type": "string"
},
"updated_since": {
"description": "Only products updated at or after this ISO 8601 date-time with timezone.",
"type": "string"
},
"since_id": {
"description": "Only products with an id greater than this.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_product(product_id)
One product by id with all sellables (variants), prices, weights, customs data and stock entries per warehouse. GET /products/{id}.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo product id."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_stock_entry(sellable_id, warehouse_id)
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.
Input Schema
{
"type": "object",
"properties": {
"sellable_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Sellable (variant) id — product.sellables[].id, not the product id."
},
"warehouse_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Warehouse id."
}
},
"required": [
"sellable_id",
"warehouse_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴veeqo_set_stock_level(sellable_id, warehouse_id, physical_stock_level, location)
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.
Input Schema
{
"type": "object",
"properties": {
"sellable_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Sellable (variant) id."
},
"warehouse_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Warehouse id."
},
"physical_stock_level": {
"type": "integer",
"minimum": 0,
"maximum": 10000000,
"description": "New physical (on-hand) quantity."
},
"location": {
"description": "Bin/shelf location in the warehouse, e.g. 'Shelf 2B'.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"sellable_id",
"warehouse_id",
"physical_stock_level"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_customers(query, customer_type, page, page_size)
List or search customers with email, phone, billing address and shipping addresses. GET /customers.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Free-text search, e.g. an email address or name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"customer_type": {
"description": "Customer type.",
"type": "string",
"enum": [
"retail",
"business"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_customer(customer_id)
One customer by id with billing and shipping addresses and notes. GET /customers/{id}.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo customer id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_suppliers(page, page_size)
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.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_supplier(supplier_id)
One supplier by id (bank details are not returned). Paid Veeqo plans only. GET /suppliers/{id}.
Input Schema
{
"type": "object",
"properties": {
"supplier_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo supplier id."
}
},
"required": [
"supplier_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_purchase_orders(query, state, supplier_id, destination_warehouse_id, sellable_id, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search supplier name/post code, PO number, reference, SKU, UPC or item title.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"state": {
"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.",
"type": "string",
"enum": [
"draft",
"active",
"completed",
"not_received",
"partially_received",
"fully_received",
"past_due",
"all"
]
},
"supplier_id": {
"description": "Only POs for this supplier.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"destination_warehouse_id": {
"description": "Only POs delivering to this warehouse.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sellable_id": {
"description": "Only active POs containing this sellable (variant) id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"reference_number": {
"description": "Exact PO reference number.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"created_after": {
"description": "Created on or after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"created_before": {
"description": "Created on or before this date, whole day included (yyyy-mm-dd).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updated_since": {
"description": "Updated at or after this ISO 8601 date-time with timezone.",
"type": "string"
},
"sort_by": {
"description": "Sort field (default created_at, newest first).",
"type": "string",
"enum": [
"supplier_name",
"created_at",
"expected_date",
"estimated_delivery_days"
]
},
"order": {
"description": "Sort direction, used with sort_by.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_get_purchase_order(purchase_order_id)
One purchase order by id with supplier, destination warehouse and every line item. Paid Veeqo plans only. GET /purchase_orders/{id}.
Input Schema
{
"type": "object",
"properties": {
"purchase_order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo purchase order id."
}
},
"required": [
"purchase_order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_tags
All tags in the account (id, name, colour, how many records use it). Use the ids with veeqo_tag_orders. GET /tags.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢veeqo_list_delivery_methods(page, page_size)
List the delivery methods orders can use (id, name, cost). GET /delivery_methods.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴veeqo_add_order_note(order_id, text)
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.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Veeqo order id."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "The note text."
}
},
"required": [
"order_id",
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴veeqo_tag_orders(order_ids, tag_ids)
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.
Input Schema
{
"type": "object",
"properties": {
"order_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Veeqo order ids to tag (1-50)."
},
"tag_ids": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Tag ids to apply (1-10)."
}
},
"required": [
"order_ids",
"tag_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence