Finale Inventory MCP by usefulapi
Read Finale Inventory products, stock, orders and shipments; create draft purchase orders.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- LOWin finale_list_inventory_transfers
- LOWin finale_create_draft_purchase_order
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"finale-inventory": {
"url": "https://finale-inventory.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://finale-inventory.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (13)
🟢finale_list_facilities(limit, updated_since, updated_until, fields)
List Finale locations and sublocations: facilityName, facilityUrl (use it in other tools), parentFacilityUrl (set for sublocations), status. GET /{account}/api/facility/.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_products(product_id, status, limit, updated_since, updated_until, ...)
List products (SKUs): productId, internalName, status, productUrl, manufacturer, UPC, packing. Optional exact filters on productId and status. Collections come back ordered by lastUpdatedDate; for large catalogs narrow with updated_since or page with next_updated_since. GET /{account}/api/product/.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"description": "Exact product id (SKU).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"status": {
"description": "Only active or only inactive products.",
"type": "string",
"enum": [
"PRODUCT_ACTIVE",
"PRODUCT_INACTIVE"
]
},
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_get_product(product_id)
One product in full: ids, description, UPC/ASIN, dimensions and weight, cost, supplier list, reorder guidelines, price list, custom fields. GET /{account}/api/product/{id} (falls back to a productId filter when the resource URL differs).
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The product id (SKU) as shown by finale_list_products."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_orders(order_type, status, limit, updated_since, updated_until, ...)
List orders without their line items: orderId, type (SALES_ORDER or PURCHASE_ORDER), status (ORDER_CREATED, ORDER_LOCKED = committed, ORDER_COMPLETED, ORDER_CANCELLED), dates, origin/destination facility, reference number, total. Get the items with finale_get_order. For a large order history always pass updated_since (Finale cuts unfiltered collections at 120,000 rows before applying other filters). GET /{account}/api/order/.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_type": {
"description": "Only sales or only purchase orders.",
"type": "string",
"enum": [
"SALES_ORDER",
"PURCHASE_ORDER"
]
},
"status": {
"description": "Only orders in this status.",
"type": "string",
"enum": [
"ORDER_CREATED",
"ORDER_LOCKED",
"ORDER_COMPLETED",
"ORDER_CANCELLED"
]
},
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_get_order(order_id)
One order in full: header, line items (productUrl, quantity, unitPrice), roles (customer or supplier), adjustments, shipment and invoice URLs, notes. GET /{account}/api/order/{orderId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The order id as shown by finale_list_orders (orderId)."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_shipments(status, limit, updated_since, updated_until, fields)
List shipments (sales shipments, purchase receipts, transfers): shipmentId, type, status (for example SHIPMENT_INPUT, SHIPMENT_PACKED, SHIPMENT_SHIPPED), order, origin/destination, dates, tracking code. GET /{account}/api/shipment/.
Eingabe-Schema
{
"type": "object",
"properties": {
"status": {
"description": "Exact shipment status, e.g. SHIPMENT_SHIPPED.",
"type": "string",
"pattern": "^SHIPMENT_[A-Z_]{1,40}$"
},
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_get_shipment(shipment_id)
One shipment in full, including its shipment items (product, facility, quantity), packages and transfers. GET /{account}/api/shipment/{shipmentId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"shipment_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The shipmentId as shown by finale_list_shipments."
}
},
"required": [
"shipment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_parties(limit, updated_since, updated_until, fields)
List party groups (customers, suppliers, carriers): partyId (derived from partyUrl; use it as supplier_party_id when drafting a purchase order), name (description), type, roles, status. GET /{account}/api/partygroup/.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_inventory_items(product_id, facility_url, limit, fields)
Current stock as Finale stores it: one entry per product, location, lot and order with quantityOnHand, quantityOnOrder (committed purchase orders) and quantityReserved (committed sales orders). The inventoryitem collection has no server-side filter, so the WHOLE collection is downloaded (one collection read of the 300 per hour; can be large on big accounts, up to the 50,000 character result cap) and filtered here: pass product_id or facility_url. For per-product totals use finale_get_product_stock. GET /{account}/api/inventoryitem/.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"description": "Only entries of this product id (SKU).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"facility_url": {
"description": "Only entries at this facilityUrl (from finale_list_facilities).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_get_product_stock(product_id)
Stock of one product summed over Finale's stock entries: totals for quantityOnHand, quantityOnOrder and quantityReserved, and the same per location/sublocation. Downloads the WHOLE inventoryitem collection (Finale offers no filter; large on big accounts), so it counts as one collection read of the 300 per hour: avoid calling it in a loop. GET /{account}/api/inventoryitem/.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The product id (SKU)."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_inventory_transfers(limit, updated_since, updated_until, fields)
List stock transfers between locations: product, from/to facility, quantity, lot, send and receive dates. GET /{account}/api/inventorytransfer/.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢finale_list_stock_changes(limit, updated_since, updated_until, fields)
List stock changes (physical counts and adjustments already recorded in Finale): id, type, date, status, location, comments. Read-only history. GET /{account}/api/inventoryvariance/.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Maximum rows to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"updated_since": {
"description": "Only records last updated on or after this UTC time. Finale allows a range of at most 30 days (updated_until defaults to now).",
"type": "string"
},
"updated_until": {
"description": "Only records last updated on or before this UTC time (needs updated_since).",
"type": "string"
},
"fields": {
"description": "Fields to return per row (default: a compact useful set).",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴finale_create_draft_purchase_order(supplier_party_id, items, destination_facility_url, order_id, reference_number, ...)
WRITE. Creates a purchase order for a supplier in status ORDER_CREATED, i.e. an editable draft. It is NOT locked (committed), received, completed or emailed, no stock changes and no money moves: review and commit it in Finale. Products are looked up first (one single read each; products whose resource URL differs from the SKU cost collection reads, bounded to 3 or one full product-list read), then ONE POST creates the order; the call is never retried, so check finale_list_orders before repeating it after an error. POST /{account}/api/order/.
Eingabe-Schema
{
"type": "object",
"properties": {
"supplier_party_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Supplier partyId (from finale_list_parties)."
},
"items": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Product id (SKU); it is looked up in Finale first, an unknown id stops the whole request."
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "Quantity in open-stock units."
},
"unit_price": {
"description": "Unit cost for this purchase (omit to leave it to Finale).",
"type": "number",
"minimum": 0,
"maximum": 1000000000
}
},
"required": [
"product_id",
"quantity"
]
},
"description": "Order lines."
},
"destination_facility_url": {
"description": "Receiving location's facilityUrl (from finale_list_facilities; not a sublocation). Omit for 'Multiple / unspecified'.",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"order_id": {
"description": "Order id (max 20 ASCII characters; must be unique). Omit to let Finale number it.",
"type": "string",
"pattern": "^[A-Za-z0-9._-]{1,20}$"
},
"reference_number": {
"description": "Supplier reference number (max 60 characters).",
"type": "string",
"maxLength": 60
},
"public_notes": {
"description": "Notes to the supplier.",
"type": "string",
"maxLength": 2000
},
"private_notes": {
"description": "Internal notes.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"supplier_party_id",
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis