Finale Inventory MCP by usefulapi

Read Finale Inventory products, stock, orders and shipments; create draft purchase orders.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
94%
Calidad de los nombres
77%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'finale_list_inventory_transfers' name length outside 3-30 rangeen finale_list_inventory_transfers
  • LOWTool 'finale_create_draft_purchase_order' name length outside 3-30 rangeen finale_create_draft_purchase_order

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,384Tokens (definiciones de herramientas)
~1.9 KBTamaño de respuesta típico
Impacto significativo en la atención (2.64% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "finale-inventory": {
      "url": "https://finale-inventory.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://finale-inventory.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (13)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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).

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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}.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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}.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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/.

Esquema de entrada

{
  "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"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada13 herramientas