Whoami
Return the authenticated user's GUID, email, and organization GUID.
Get Attachment Download Url
Get a single-use download URL for the primary (latest) version of an attachment.
Returns a time-limited, single-use URL (1 hour, one download — the URL expires after
the first successful curl). Use the curl_command exactly as returned; the URL contains
special characters that must be properly quoted. Use the attachment guid returned by
any tool that exposes attachments:
- get_invoice / list_invoices → result.attachments[].guid
- get_agreement / list_agreements → result.attachments[].guid
- get_purchase_request → result.attachments[].guid
Example flow:
1. Call one of the above tools to retrieve the object and its attachment guids.
2. Call get_attachment_download_url(attachment_guid) to get a download URL.
3. curl -L the returned download_url to save the file locally.
Args:
attachment_guid: GUID of an Attachment (the primary/latest version is used)
or of a specific AttachmentVersion (that version is used).
Get Agreement
Fetch a single agreement (contract) by GUID. Returns scalars: guid, name, agreement_number, currency, total_cents (the agreement amount in cents), start_date, execution_date, end_date, status, contract_status, display_renewal_status, renewal_status, type. To-one associations: vendor, department, creator (the agreement owner), request_for_amendment (the parent request when type=AMENDMENT). To-many associations: subsidiaries, categories, subcategories, attachments, purchase_orders, requests (the requests this agreement was created from), requests_for_master_contract (the parent requests when type=MSA), child_contracts. Note: the Zip API field 'original_request' is not directly returned — for MSA agreements use requests_for_master_contract[0], for AMENDMENT use request_for_amendment, otherwise use requests[0]. Renewal date fields are intentionally not returned (see FIO-1440): the underlying DB columns are misleadingly named and the CLM team is replacing them with properly-named fields behind the `enable-new-renewal-fields` flag. They will be added once that rename project is GA. Also not yet returned: auto_renews, opt_out_date, renewal_workflow, renewal_stakeholders, renewal_stakeholder_queues, cancellation_workflow_config (blocked on scheduled_renewal / queue zinterface registration), and custom attributes (FIAT).
List Agreements
List agreements (contracts) for the configured company. Optionally filter by vendor_guid, department_guid, subsidiary_guid, category_guid, subcategory_guid, creator_guid, owner_guid, agreement_number_str, renewal_status (list of symbolic names: UPCOMING, NOT_SCHEDULED, RENEWAL_IN_PROGRESS, CANCELLATION_IN_PROGRESS, RENEWAL_COMPLETE, CANCELLATION_COMPLETE, CANCELED), agreement_status (list of symbolic names: ACTIVE, INACTIVE, TERMINATED), total_cents_min/max (combine for a closed range), and end_date_after/before (ISO-8601 date; combine for a closed range). Sort by created_at (default), updated_at, end_date_or_max_date, or total_cents. Returns up to 50 per page. Each hit is a full ZContract with the same shape get_agreement returns: scalars (guid, name, agreement_number, currency, total_cents, start_date, execution_date, end_date, status, contract_status, display_renewal_status, renewal_status, type), to-one associations (vendor, department, creator as the agreement owner, request_for_amendment), and to-many associations (subsidiaries, categories, subcategories, attachments, purchase_orders, requests, requests_for_master_contract, child_contracts). Renewal date fields and queue-related fields are intentionally not returned — see get_agreement's description for the deferral rationale.
Args:
vendor_guid: Filter to agreements with this vendor GUID. Exact match.
department_guid: Filter to agreements in this department GUID. Exact match. Falls back to the vendor's primary department on agreements without a direct department.
subsidiary_guid: Filter to agreements in this subsidiary GUID. Exact match.
category_guid: Filter to agreements with this top-level category GUID. Exact match.
subcategory_guid: Filter to agreements with this subcategory GUID. Exact match.
creator_guid: Filter to agreements created by this user GUID. Exact match.
owner_guid: Filter to agreements owned by this user GUID. Owner is currently resolved to the agreement's creator.
agreement_number_str: Filter to a single agreement by its user-facing agreement number (as a string).
renewal_status: Filter to agreements whose renewal status is in this set. Each entry is the symbolic name (e.g. "UPCOMING", "NOT_SCHEDULED", "RENEWAL_IN_PROGRESS", "CANCELLATION_IN_PROGRESS", "RENEWAL_COMPLETE", "CANCELLATION_COMPLETE", "CANCELED").
agreement_status: Filter to agreements whose status is in this set. Each entry is the symbolic name: "ACTIVE" (in effect today), "INACTIVE" (expired or not yet started), "TERMINATED". ACTIVE/INACTIVE derive from the start/end dates. TERMINATED is only indexed for companies with the terminated-status feature enabled; elsewhere a terminated agreement reads INACTIVE, since termination also moves the end date to the termination date.
total_cents_min: Filter to agreements whose total amount in cents is greater than or equal to this value. Combine with ``total_cents_max`` for a closed range.
total_cents_max: Filter to agreements whose total amount in cents is less than or equal to this value. Combine with ``total_cents_min`` for a closed range.
end_date_after: Filter to agreements whose end date is on or after this date. ISO-8601 date string (e.g. "2026-01-15"). Combine with ``end_date_before`` for a closed range. The underlying ES field is DATE-mapped, so a date string is the right shape here (datetimes would produce off-by-one boundary results).
end_date_before: Filter to agreements whose end date is on or before this date. ISO-8601 date string. Combine with ``end_date_after`` for a closed range.
sort_by: Field to sort by. One of: created_at (default), updated_at, end_date_or_max_date, total_cents.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Attachment
Get a single attachment (document) by GUID. Returns name, type, status, attachment_versions, and parent associations (request, vendor, invoice, contract). MCP-callable subset of the GraphQL attachment read; permission-gated by can_user_view_attachment.
Get Top Up
Get a single virtual card balance top up by GUID. Returns the top up's reference ID, amount and currency, transaction date, description, link, and any associated entity attributes.
Get Change Order
Get a single change order (purchase requisition of type CHANGE_ORDER) by GUID. Returns the change-order diff: changed header fields, plus created/deleted/updated PO line items, each with the attribute names and old/new values that changed. ``field_type_options`` selects which field groups to compute (ALL, PO_HEADER, LINE_ITEMS); defaults to ALL.
Args:
field_type_options: CoApiFieldTypeEnum names (ALL, PO_HEADER, LINE_ITEMS) selecting which change-order field groups to compute. Defaults to ALL.
List Change Orders
List submitted change orders (purchase requisitions of type CHANGE_ORDER) for the configured company. Returns up to 50 hits per page, ordered newest-first; pass the returned cursor to page further. Each hit is the same change-order diff shape ``get_change_order`` returns (changed header fields and created/deleted/updated PO line items).
Args:
field_type_options: CoApiFieldTypeEnum names (ALL, PO_HEADER, LINE_ITEMS) selecting which change-order field groups to compute. Defaults to ALL.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Context Library
Fetch a single context library entry by GUID, including its latest published version (purpose, instructions, version number).
List Context Libraries
List context library entries for the configured company. Optionally filter by status. Returns up to 50 per page. Hits are hydrated to the same ZAiCompanyContext payload that get_context_library returns.
Args:
status: Filter by status. One of "ACTIVE" or "ARCHIVED". Omit to return both.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Credit Memo
Get a single credit memo by GUID. Returns identity fields (guid, status, marked_as_used, created_at, updated_at). Does not include the underlying credit invoice, applied bill usages, or derived amounts; those require follow-up tooling.
List Credit Memos
List credit memos for the configured company. Optionally filter by vendor name (case-insensitive whole-token / token-prefix match — not arbitrary substrings), exact invoice number, or availability. Per-row narrowing (subsidiary / department / assignee) is applied automatically by the ES permission dispatcher. Hits are hydrated to the same ZCreditMemo payload that get_credit_memo returns. Returns up to 50 per page, sorted by created_at descending.
Args:
vendor_query: Optional case-insensitive token / phrase match on the associated vendor's name. Whole tokens (or token prefixes) only — arbitrary substrings won't match (e.g. ``"cme"`` will NOT match ``"Acme Inc"``). Omit to return credit memos for all vendors.
invoice_number: Optional exact-match filter on the underlying credit invoice's invoice_number. Omit to return all matching credit memos.
is_credit_available: Optional boolean filter. Set ``True`` to return only credit memos with an available balance, ``False`` for fully-used credit memos. Omit to return both.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
List Currencies
List the supported currencies for the configured company. Each currency includes its ISO code (as the name field) and any external integration data (e.g. ERP system mappings) under external_integration_datas. Optionally filter by a case-insensitive substring on the ISO code; total reflects the post-filter match count, not the unfiltered company total. Loosely mirrors GET /external_api/currencies, with two deliberate divergences: the per-item external_data list is renamed to external_integration_datas and exposes the full ZExternalIntegrationData shape (guid, erp_object_type, external_id, external_link, source) rather than the flat {id, source} pair the REST endpoint returns; and the redundant size key is dropped (it always equaled total).
Args:
iso_code: Optional case-insensitive substring filter on the ISO code (e.g. 'USD', 'EUR'). Omit to return every supported currency. When set, the response 'total' is the post-filter match count, not the unfiltered company total.
Get Currency
Get a single currency by GUID. Returns its ISO code (name) and any external integration data (ERP system mappings) under external_integration_datas. Returns the same ZCurrency shape as list_currencies.
Get Department
Get a single department by GUID with full details.
List Departments
List active departments for the configured company. Optionally filter by name (case-insensitive substring), hide_in_zip (visibility), or external_id (ERP-prefixed identifier exact match). Sort by created_at or updated_at. Returns up to 50 per page.
Args:
name: Case-insensitive substring filter on the department's display name. Omit to match all names.
hide_in_zip: When True, return only departments hidden from the Zip UI; when False, return only visible departments. Omit to return both.
external_id: Filter to departments whose ``external_ids`` array contains this value. The value is the ERP-prefixed identifier stored on the entity (e.g. ``netsuite:abc123``); the prefix is required for an exact match.
sort_by: Field to sort by. One of: created_at (default), updated_at.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Options For Field
List the available options for a Zip configurable field (entity attribute config). Returns each option's name, key, comment, score, color, link, external_id, and deletion/visibility flags. Optionally filter by a case-insensitive substring on the option name. Note: only options for fields in the caller's own organization are returned (no cross-org bypass, unlike the GraphQL OptionSearch endpoint).
Args:
entity_attribute_config_guid: GUID of the Zip configurable field (entity attribute config) whose options should be returned.
search_text: Optional case-insensitive substring to filter option names by.
first: Maximum number of options to return. Defaults to 20.
Get Field
Get a single Zip configurable field (entity attribute config) by GUID. Returns the field's display name, internal name, entity type, status, whether it's a Zip native field, and its attribute group config and field config namespace.
List Fields
List Zip configurable fields (entity attribute configs) for the configured company. Each hit returns the field's GUID, namespace-prefixed display name, and namespace integer code. Optionally filter by namespace (REQUEST, VENDOR, CONTRACT, etc.) and/or a case-insensitive substring on the display name. Note: results are scoped to the caller's organization. Returns up to 50 per page.
Args:
namespace: Filter to fields belonging to a single ZipFieldConfigNamespace. Pass the enum name as a string. Valid values: REQUEST, VENDOR, CONTRACT, INVOICE, PAYMENT, REQUEST_LINE, VENDOR_CREDIT, VENDOR_CREDIT_LINE (see ZipFieldConfigNamespace). Omit to return fields across all namespaces.
name: Case-insensitive substring filter on the field's display name (matched against the namespace-prefixed display name, e.g. "(Request) Vendor category"). Omit to return all fields.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Expense Category
Fetch a single expense category by GUID. Expense categories tag spend with an ERP-aligned bucket (e.g. "Office Supplies", "Travel") and optionally carry a default GL account and subsidiary scope. Returns scalars (guid, name, source, description, active, hide_in_zip, created_at, updated_at), the linked GL account (gl_code), the subsidiaries the category is scoped to, and the ERP integration data rows that map this category onto external_id values per integration.
List Expense Categories
List expense categories for the configured company. Optionally filter by name (case-insensitive substring on the keyword index), active (True / False), and external_ids (matches categories whose ERP external_id is in the supplied list). Returns up to 50 per page. Each hit is a full ZExpenseCategory with the same shape get_expense_category returns: scalars (guid, name, source, description, active, hide_in_zip, created_at, updated_at), the linked GL account, subsidiaries, and ERP integration data.
Args:
name: Case-insensitive substring filter on the expense category name. Omit to return all matching categories. Note: the underlying ES field is KEYWORD-mapped, so the substring uses wildcard matching.
active: If True, return only active categories. If False, return only inactive categories. Omit to return both.
external_ids: Filter to categories whose ERP external_id is in this list. Exact-match on the keyword index. Omit to return categories regardless of their external_id.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Gl Account
Get a single GL (general ledger) account by GUID with full details, including subsidiaries and ERP integration data.
List Gl Accounts
List GL (general ledger) accounts for the configured company. Optionally filter by name (case-insensitive substring), account_types, include_inactive, and include_hidden. Hits are returned as the same hydrated shape get_gl_account returns, including subsidiaries and ERP integration data. Returns up to 50 per page.
Args:
name: Case-insensitive substring filter on the GL account display name (or canonical name when no display_name is set). Omit to return all matching accounts.
account_types: Filter to GL accounts whose account_type is in this list (e.g. ["EXPENSE", "LIABILITY"]). Omit to return all account types.
include_inactive: If False (default), return only active accounts. Set True to include inactive accounts as well.
include_hidden: If True (default), return GL accounts regardless of their hide_in_zip flag. Set False to exclude accounts hidden from the Zip UI.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Item Receipt
Get a single item receipt (goods receipt) by GUID with full details: status, receipt number, received date, matched purchase order and vendor, line items, and ERP external data. Line items include their attributes.
List Item Receipts
List item receipts (goods receipts) for the configured company. Optionally filter by status (DRAFT, SUBMITTED, VOID, ARCHIVED) and created/updated date ranges; sort by created_at or updated_at. Hits are hydrated to the same payload get_item_receipt returns. Returns up to 100 per page. Per-row permission narrowing is applied: `total` reflects the pre-filter ES count and may exceed the number of returned hits, so treat it as an upper bound.
Args:
status: Filter to goods receipts whose status is in this set. Each entry must be a GoodsReceiptStatus name (e.g. "DRAFT", "SUBMITTED", "VOID", "ARCHIVED"). Omit to return all statuses.
created_after: Return receipts created at or after this ISO-8601 timestamp. Combine with created_before for a closed range.
created_before: Return receipts created at or before this ISO-8601 timestamp. Combine with created_after for a closed range.
updated_after: Return receipts last updated at or after this ISO-8601 timestamp. Combine with updated_before for a closed range.
updated_before: Return receipts last updated at or before this ISO-8601 timestamp. Combine with updated_after for a closed range.
sort_by: Field to sort by. One of: created_at (default), updated_at.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Invoice
Fetch a single BILL invoice by GUID. Returns core fields (id, invoice number, dates, amounts, currency, source, status flags) plus the to-one associations the Zip API exposes (vendor, subsidiary, department, location, payment terms, posting period, category, subcategory) and the invoice line items. Audit-trail data and API-key-gated fields are not returned.
List Invoices
List BILL invoices for the configured company. BILL is the only invoice type returned (CREDIT and PROFORMA are excluded). Filter by vendor, subsidiary, line-item department or GL code, exact invoice number, BillStatus name, invoiced-amount range (in cents, not dollars), approval timestamp range, and update timestamp range. Returns up to 50 per page. Hits are hydrated to the same ZInvoice payload that get_invoice returns. Per-row permission narrowing is applied to honor conditional grants — see permissions.py docstring. Note: `total` reflects the pre-filter ES count and may exceed `len(hits)` when permission narrowing drops some rows; treat it as an upper bound, not the exact returned count.
Args:
vendor_id: Filter to invoices for this vendor GUID. Exact match.
status: Filter to invoices whose derived bill status is in this set. Each entry must be a ``BillStatus`` name (e.g. "INITIAL", "PENDING_APPROVAL", "APPROVED", "PAID"). The full set is enumerated by ``BillStatus`` in ``thriftgen/models/bill/ttypes.py`` and reflected in the validator error when an invalid name is passed.
subsidiary_id: Filter to invoices on this subsidiary GUID. Exact match.
department_id: Filter to invoices that have at least one line item on this department GUID. Exact match.
gl_code_id: Filter to invoices that have at least one line item on this GL code GUID. Exact match.
invoice_number: Filter to a single invoice by its vendor-supplied invoice number. Exact match (keyword).
invoice_amount_min: Filter to invoices whose invoiced amount in cents is >= this value.
invoice_amount_max: Filter to invoices whose invoiced amount in cents is <= this value.
approved_after: Filter to invoices approved (bill_approved_datetime) at or after this ISO-8601 timestamp. Combine with ``approved_before`` for a closed range.
approved_before: Filter to invoices approved at or before this ISO-8601 timestamp. Combine with ``approved_after`` for a closed range.
updated_after: Filter to invoices last updated at or after this ISO-8601 timestamp. Combine with ``updated_before`` for a closed range.
updated_before: Filter to invoices last updated at or before this ISO-8601 timestamp. Combine with ``updated_after`` for a closed range.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Item Account
Get a single GL item (item_account) by GUID. Includes the assigned GL account (gl_code), linked subsidiaries, and external ERP integration data.
List Item Accounts
List GL items (item_accounts) for the configured company. Optionally filter by name (case-insensitive substring) and/or active status. Returns up to 50 per page.
Args:
name: Case-insensitive substring filter on the GL item's name. Omit to skip the name filter.
active: If true, only return active GL items. If false, only return inactive ones. Omit to return both.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Location
Get a single location by GUID. Returns location name, status, timestamps, and external integration data.
List Locations
List locations for the configured company. Optionally filter by name (case-insensitive substring) or status (INITIAL, ACTIVE, DELETED). Sort by created_at or updated_at. Returns up to 50 per page.
Args:
name: Case-insensitive substring filter on the location's display name. Omit to match all names.
status: Filter to locations with this LocationStatus. One of: INITIAL, ACTIVE, DELETED. Omit to match all statuses.
sort_by: Field to sort by. One of: created_at (default), updated_at.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Payment Terms
Get a single payment terms entity by GUID. Returns name, net_period_in_days, is_active, and external integration data.
List Payment Terms
List payment terms for the configured company. Optionally filter by name (case-insensitive token match) or is_active. Returns hydrated payment terms with name, net_period_in_days, is_active, and external integration data. Returns up to 50 per page.
Args:
name: Case-insensitive token match on the payment terms name (e.g. "Net 30"). Omit to match all names.
is_active: When True, return only active payment terms; when False, return only inactive. Omit to return both.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Payout
Get a payout by GUID. Returns vendor, subsidiary, currency, fees, invoices, payment method, and key dates as ISO-8601 strings.
Args:
payout_guid: GUID of the payout (or payment intent for v2-launched orgs) to fetch.
List Payouts
List payouts for the configured company. Optional filters: paid_on_date, payment_provider_creation_time, reversed_on_date (all ISO-8601 datetime strings); payment_method_type, one of: ZIP_CLEARING_ACCOUNT (paid from the company's Zip clearing balance), ZIP_VIRTUAL_CARD (paid via a Zip-issued virtual card), USER_OFFLINE (recorded as paid outside Zip); subsidiary_id. Page size capped at 50.
Args:
paid_on_date_after: Filter to payouts paid on or after this ISO-8601 datetime.
paid_on_date_before: Filter to payouts paid on or before this ISO-8601 datetime.
payment_provider_creation_time_after: Filter to payouts whose payment provider creation time is on or after this ISO-8601 datetime.
payment_provider_creation_time_before: Filter to payouts whose payment provider creation time is on or before this ISO-8601 datetime.
reversed_on_date_after: Filter to payouts reversed on or after this ISO-8601 datetime.
reversed_on_date_before: Filter to payouts reversed on or before this ISO-8601 datetime.
payment_method_type: Filter to payouts of this payment method type. One of: ZIP_CLEARING_ACCOUNT (paid from the company's Zip clearing balance), ZIP_VIRTUAL_CARD (paid via a Zip-issued virtual card), USER_OFFLINE (recorded as paid outside Zip).
subsidiary_id: Filter to payouts for the subsidiary with this GUID.
page_token: Opaque cursor returned by a previous call as ``next_page_token``.
page_size: Maximum number of payouts to return. Capped at 50.
List Permission Groups
List visible permission groups ('tao_role' under the hood) for the configured company. Returns the same set the Zip 'Manage users and permission groups' page shows: status VISIBLE, owned by the caller's company. Vendor portal groups are not included. Each group includes guid, name, description, status, shared_condition_data, and permission-version metadata. The is_default and linked_scim_group fields shown in the Zip UI are not yet exposed here -- use the UI for those.
Get Permission Group
Get a single permission group ('tao_role' under the hood) by GUID. Returns the group's name, description, status, shared_condition_data, permission-version metadata, and the full list of resource_permissions wired to it (each with resource_type, level, and conditional condition_data). Vendor portal jurisdiction fields are included; the is_default and linked_scim_group fields shown in the Zip UI are not yet exposed here.
List Approvals
List approval nodes for the configured company. Optionally filter by request_number, node_status_id, request_types (symbolic PurchaseRequisitionType names, e.g. PURCHASE_REQUEST, BILL, SOURCING_PROJECT), config_types (symbolic ProcessConfigType names), request_created_after/before (ISO-8601 date; combine for a closed range), and due_after/before (ISO-8601 date; combine for a closed range). Sort by created_at (default), updated_at, due_date, request_initiated_at, or request_number. Returns up to 50 per page. Each hit is a ZProcessNode with timing fields (start/complete/due as epoch seconds, duration and pause seconds), display_status, the assignee, the originating request, and the subtask checklist (tasks). Results are already scoped to approvals the caller can see (approver, queue member, or org-wide approval viewer).
Args:
request_number: Filter to the approval whose request has this user-facing request number. Exact match.
node_status_id: Filter to approvals with this custom node-status GUID (or built-in status key). Exact match.
request_types: Filter to approvals whose request is one of these types. Each entry is the symbolic name, e.g. "PURCHASE_REQUEST", "BILL", "SOURCING_PROJECT", "PAYOUT_GROUP", "CHANGE_ORDER".
config_types: Filter to approvals whose workflow config is one of these types. Each entry is the symbolic ProcessConfigType name.
request_created_after: Only approvals whose request was created on or after this date. ISO-8601 date (e.g. "2026-01-15"). Combine with request_created_before for a closed range.
request_created_before: Only approvals whose request was created on or before this date. ISO-8601 date. Combine with request_created_after for a closed range.
due_after: Only approvals due on or after this date. ISO-8601 date. Combine with due_before for a closed range.
due_before: Only approvals due on or before this date. ISO-8601 date. Combine with due_after for a closed range.
sort_by: Field to sort by. One of: created_at (default), updated_at, due_date, request_initiated_at, request_number.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Product
Fetch a single product by GUID. Includes the product's name, description, manufacturer info, UNSPSC code, type (GOODS, SERVICES, or SOFTWARE), line type, and the associated item account, GL code, and unit of measure when set. Requires the configured organization to have the catalog API surface enabled.
Get Purchase Order
Get a single purchase order by GUID. Returns scalar fields (po_number, status, source, currency, amount_cents, description, memo, payment_terms, version_number, order_date, sent_to_vendor, created_at, updated_at, external_id), financial decimal-string fields (amount_str total, total_billed_amount_str, total_net_billed_amount_str, total_credited_amount_str, total_open_amount_str remaining balance, plus tax/shipping/misc), and primary associations (vendor, subsidiary, department, location, category, subcategory, purchase_requisition, line_items). Custom attributes, change orders, and advance shipping notices are not yet exposed by this tool.
List Purchase Orders
List purchase orders for the configured company. Filter by vendor GUID, last-update timestamp range, and open-amount range (USD, decimal-string dollars). Returns up to 50 hits per page. Each hit is the full ``ZPurchaseOrder`` shape ``get_purchase_order`` returns (scalars, primary associations, and the non-attribute line-item projection).
Args:
vendor_guid: Filter to purchase orders for this vendor GUID. Exact match.
created_after: Filter to POs created at or after this ISO-8601 timestamp (e.g. "2026-01-15T00:00:00Z"). Combine with ``created_before`` for a closed range.
created_before: Filter to POs created at or before this ISO-8601 timestamp. Combine with ``created_after`` for a closed range.
last_updated_after: Filter to POs whose attributes were last updated at or after this ISO-8601 timestamp (e.g. "2026-01-15T00:00:00Z"). Combine with ``last_updated_before`` for a closed range.
last_updated_before: Filter to POs whose attributes were last updated at or before this ISO-8601 timestamp. Combine with ``last_updated_after`` for a closed range.
open_amount_greater_than: Filter to POs whose open amount (USD) is greater than this decimal-string dollar amount (e.g. "100.50"). Combine with ``open_amount_less_than`` for a closed range.
open_amount_less_than: Filter to POs whose open amount (USD) is less than this decimal-string dollar amount. Combine with ``open_amount_greater_than`` for a closed range.
sort_by: Field to sort by. One of: created_at (default), updated_at. When filtering by ``last_updated_after`` / ``last_updated_before``, pass ``updated_at`` so the sort field matches the filter field.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Purchase Requisition Audit Trail
Get the audit trail for a purchase requisition: every recorded state transition (approval, rejection, cancellation, attribute change, etc.) with timestamp, actor, event type, description, and event-specific data. Includes available AI session metadata when the Superagent Observability flag is enabled for the organization. Requires the Audit Trail API feature for the organization; returns an empty list otherwise.
Get Purchase Requisition
Get a single purchase requisition by GUID with parity to the REST external API. Returns: core fields (name, description, status, priority, request number, timestamps, cycle/elapsed time, external id, request link, requested amount USD, payment method, is_existing_vendor); primary associations (vendor, vendors, department, subsidiary, location, engagement, workflow_config, purchase/sub categories, gl_code, item_account, payment_terms_object, creator, original_creator, owner, requester, attachments, price_detail, po_change_order, purchase_order, visible_purchase_order, renewal_source_request); request attributes and total savings.
List Purchase Requisitions
List purchase requisitions for the configured company. Filter by approval status (pass approval_status=["AWAITING_APPROVAL"] for pending requests), request type, requester, vendor, department, subsidiary, priority, request number, and creation/update timestamp ranges. Sort by creation or update time.
Args:
approval_status: Filter to requisitions whose approval status is in this set. Each entry is an `ApprovalStatus` name: DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, CANCELED, CLOSED, PAUSED. The Zip UI labels AWAITING_APPROVAL as "Requested", so a request for pending / open / in-flight / awaiting-approval requisitions maps to ["AWAITING_APPROVAL"].
request_type: Filter to requisitions of these types. Each entry is a `PurchaseRequisitionType` name, e.g. "PURCHASE_REQUEST", "BILL", "SECURITY_REVIEW", "VENDOR_ONBOARDING", "SOURCING_REQUEST", "PO_CHANGE_ORDER", "CHANGE_ORDER". Requisitions with no type recorded are indexed as "UNKNOWN" and match no filter value.
requester_guid: Filter to requisitions whose requester (creator) has this user GUID. Exact match.
requester_name_key: Filter by requester full name (case-insensitive substring match, so "Alice" matches "Alice Smith"). Prefer ``requester_guid`` when known.
vendor_guid: Filter to requisitions with this vendor GUID. Exact match against the requisition's displayed (primary) vendor only — requisitions where this vendor is a secondary or sourcing vendor are not matched.
vendor_name_key: Filter by vendor name (case-insensitive substring match, so "Arista" matches "Arista Networks Solutions, Inc"). Prefer ``vendor_guid`` when known.
department_guid: Filter to requisitions in this department GUID. Exact match.
department_name_key: Filter by department name (case-insensitive substring match).
subsidiary_guid: Filter to requisitions in this subsidiary GUID. Exact match.
priority: Filter to requisitions whose priority is in this set (integer enum values).
request_number_str: Filter to a single requisition by its user-facing request number (as a string).
created_after: Filter to requisitions created at or after this timestamp. ISO-8601 string (e.g. "2026-01-15T00:00:00Z"). Combine with ``created_before`` for a closed range.
created_before: Filter to requisitions created at or before this timestamp. ISO-8601 string. Combine with ``created_after`` for a closed range.
last_updated_after: Filter to requisitions whose attributes were last updated at or after this timestamp. ISO-8601 string. Combine with ``last_updated_before`` for a closed range.
last_updated_before: Filter to requisitions whose attributes were last updated at or before this timestamp. ISO-8601 string. Combine with ``last_updated_after`` for a closed range.
sort_by: Field to sort by. One of: created_at (default), updated_at, initiated_or_created_at_date, last_attribute_updated_at, request_number_str.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
List Questionnaire Responses For Requisition
List questionnaire responses attached to a purchase requisition. Returns the questionnaire name, status, completion timestamp, and vendor for each response. The detailed question-response tree is not included in this tool's output.
Args:
requisition_guid: The purchase requisition GUID to filter by. Returns all questionnaire responses associated with this requisition.
Get Queue
Get a single approval queue by GUID with full details: owners, members, default assignee, departments, parent queue (for subqueues), and subqueues (for parent queues). Use after list_queues to inspect a specific queue's membership and its subqueues.
List Queues
List active approval queues for the configured company. Optionally filter by name substring, by department GUID, or by top-level/subqueue status. Always excludes inactive queues and non-queue employee_job_title rows. Returns summary fields per row; call get_queue for full details. Returns up to 50 per page.
Args:
name: Case-insensitive substring filter on the queue's name. Omit to skip the name filter.
department_guid: Return only queues attached to this department. Omit for all departments.
top_level_only: If True, return only top-level queues (no parent). If False, return only subqueues. Omit for both.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Subsidiary
Get a single subsidiary by GUID with full details. Returns the same ZSubsidiary shape as list_subsidiaries: guid, name, display_name, country, currency, status.
List Subsidiaries
List subsidiaries for the configured company. Optionally filter by name (case-insensitive substring match on the display name or canonical name) and include_inactive (default False — only active subsidiaries are returned, matching the REST search default). Returns up to 50 per page. Each hit is a full ZSubsidiary with the same scalar fields get_subsidiary returns: guid, name, display_name, country, currency, status.
Args:
name: Filter to subsidiaries whose display name (or canonical name when no display_name is set) contains this string. Case-insensitive substring match. Omit to list all subsidiaries.
include_inactive: When ``False`` (the default), only active subsidiaries are returned — matches the REST ``SubsidiaryApiSearchHandler`` default. When ``True``, both active and inactive subsidiaries are returned.
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
List Primary Categories
List the top-level (primary) taxonomy nodes for a company. Excludes INACTIVE and soft-deleted nodes; categories with no status set are treated as active and are returned. Optionally filter by type and by name (case-insensitive substring match). Valid types: PURCHASE_CATEGORY, REQUEST_CATEGORY, QUESTION_CATEGORY, CANONICAL_CATEGORY, CUSTOM_CATEGORY.
List Subcategories
List direct subcategories (one level down, not the full subtree) of a taxonomy node. Excludes INACTIVE and soft-deleted nodes; categories with no status set are treated as active and are returned. Optionally filter by type. Valid types: PURCHASE_CATEGORY, REQUEST_CATEGORY, QUESTION_CATEGORY, CANONICAL_CATEGORY, CUSTOM_CATEGORY. Use list_primary_categories for top-level categories. Call this once per level to walk a multi-level category tree.
Get Category
Fetch a single taxonomy node (category) by GUID. Returns basic info: name, description, status, type, prioritize_preferred_vendors.
Get Transaction
Fetch a single virtual card transaction by GUID. Returns core fields (id, reference id, dates, amounts, currency, merchant info, coding status, memo, links) plus the credit-card clearing GL code, transaction-level coding attributes, and per-line-item attributes. The Brex/Stripe card source determines which fields are populated.
Get User
Get a single user by GUID. Returns identity fields (email, first_name, last_name, employee_number, deactivated, created_at, updated_at), nested department / subsidiary / manager summaries, custom attributes, and external integration data.
List Users
List users in the configured company. Optionally filter by exact email. Excludes Zip employees and contractors. Returns up to 50 per page, sorted by created_at descending.
Args:
email: Optional exact-match filter on the user's email address. Omit to return users regardless of email.
deactivated: When omitted, returns active users only (matches the REST handler default). Set ``True`` to return only deactivated users; set ``False`` to return only active users.
sort_by: Field to sort by. One of: created_at (default), updated_at, email, employee_number.
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Get Vendor
Get a single vendor by GUID. Returns: scalar fields (name, status, address, last_reviewed_at, created_at, updated_at, erp_currency); associations (parent_vendor, child_vendors, vendor_contacts, vendor_owners, hq_address, alternate_addresses, vendor_currencies). Many vendor attributes are accessible through ``all_attributes``: alternate_name, alternate_name_usage, currency, description, duns_number, legal_name, po_email, remittance_email, primary_phone_data, risk, tier, tax_id_type, tax_id_number, other_tax_id_type, other_tax_id_number, vat_number, website_link, categories, subsidiaries, department. ERP record IDs should be accessed through ``erp_id`` by passing the expected integration_type. When ``request_id`` is supplied, ``all_attributes`` returns the FM-merged request-scoped variant (mirrors the REST request_id query param). The deprecated ``external_id`` REST field is intentionally not exposed.
List Vendors
List vendors for the configured company. Optionally filter by name (trimmed, case-insensitive substring match on the indexed name_key), department_guid, subsidiary_guid, status (list of VendorStatus enum names: ACTIVE, INITIAL, DRAFT, DELETED), and a last_updated_after / last_updated_before timestamp range. Sort by created_at, updated_at, or last_updated. Returns the same ZVendor shape as ``get_vendor`` for each hit. Returns up to 50 per page.
Args:
name: Filter by vendor name. Trimmed and matched against the indexed ``name_key`` as a case-insensitive substring, so "Arista" matches "Arista Networks Solutions, Inc". The REST handler's ``name`` filter is a full-string match; this tool is deliberately looser because callers typically know only part of the name.
department_guid: Filter to vendors whose primary department has this GUID. Exact match.
subsidiary_guid: Filter to vendors associated with this subsidiary GUID. Matches if the GUID appears in the vendor's ``subsidiary_guids`` ES field.
status: Filter to vendors whose ``status`` is in this list. Each entry must be a ``VendorStatus`` enum name (e.g. ``ACTIVE``, ``INITIAL``, ``DRAFT``, ``DELETED``). Mirrors the REST handler's ``status`` filter.
last_updated_after: Filter to vendors whose ES ``last_updated`` timestamp is at or after this value. ISO-8601 string (e.g. ``"2026-01-15T00:00:00Z"``). Combine with ``last_updated_before`` for a closed range.
last_updated_before: Filter to vendors whose ES ``last_updated`` timestamp is at or before this value. ISO-8601 string. Combine with ``last_updated_after`` for a closed range.
sort_by: Field to sort by. One of: created_at, updated_at, last_updated (default).
sort_order: Sort direction. One of: asc, desc (default).
cursor: Opaque pagination cursor. Omit for the first page; to fetch the next page, pass back the `cursor` value from the previous response.
Search Catalog
Search the catalog for vendor items and vendor item groups by free-text query and / or filters. Returns two typed result lists: `vendor_items` and `vendor_item_groups`. Supports filtering by category, subcategory, vendor, subsidiary, status (default ACTIVE), and vendor item group purchasing method (default CATALOG). Pagination via `page` (1-indexed) and `page_size`. The `metadata` field carries total page and per-type counts. Requires the configured organization to have the catalog API surface enabled.
Args:
search_text: Free-text search query. Empty / omitted returns all items matching the other filters.
page: 1-indexed page number. Defaults to 1.
page_size: Page size. Defaults to 20.
sort: Field to sort by. Default is search relevance.
order: Sort order. One of: asc, desc. Only used when sort is provided.
aggregation_only: When true, returns only metadata (counts) and no result rows. Defaults to false.
category_guids: Restrict results to vendor items / groups in any of these categories.
subcategory_guids: Restrict results to vendor items / groups in any of these subcategories. Merged with category_guids on the backend.
vendor_guids: Restrict results to vendor items / groups owned by any of these vendors.
subsidiary_guids: Restrict results to subsidiary GUIDs.
statuses: Vendor item / group statuses to include. Defaults to ['ACTIVE']. One or more of DRAFT, ACTIVE, DEACTIVATED.
vendor_item_group_purchasing_methods: Restrict vendor item groups to these purchasing methods. Defaults to ['CATALOG']. One or more of CATALOG, PUNCHOUT.
object_types: Result entity types. Defaults to both. One or more of vendor_item, vendor_item_group.
Get Vendor Item
Fetch a single vendor item by GUID. Vendor items are a vendor's offering of a product at a given price, optionally scoped to one or more purchasing groups (catalogs). The response includes status (DRAFT, ACTIVE, or DEACTIVATED), supplier part identifiers, lead time, the vendor's preferred unit price and currency, the underlying product, the vendor, and the GUIDs of any purchasing groups the item belongs to. Requires the configured organization to have the catalog API surface enabled.
Get Vendor Item Group
Fetch a single vendor item group by GUID. Vendor item groups bundle multiple vendor items together for purchasing, for example a kit of related parts or a PUNCHOUT-method bundle. The response includes the group's name, description, status (DRAFT, ACTIVE, or DEACTIVATED), purchasing method (CATALOG or PUNCHOUT), supplier part identifiers, the catalogs (purchasing groups) it belongs to, and its child memberships. Each child membership entry exposes the child vendor item's GUID, product name, and quantity. Requires the configured organization to have the catalog API surface enabled.
Get Cash Back
Get a single virtual card cash back by GUID. Returns the cash back's reference ID, amount and currency, transaction date, description, link, and any associated entity attributes (department, subsidiary, GL codes, location, custom fields).
Get Workflow Config
Fetch a single approval workflow config by GUID, its complete process-config graph, and the GUID of its editable (draft) version when workflow versioning is enabled. The graph includes parent groups and stages, child approvals and actions, parent-child membership, and outgoing dependency edges. For a child such as FINALIZE_DETAILS, use parent_process_config_guids to find the GROUP GUID accepted by workflow edge tools. Otherwise the returned config is editable directly. Named workflow and version statuses support polling asynchronous operations. The returned config also carries every setting that update_workflow_config_settings writes, so use this tool to read current values before changing them and to verify a change afterwards. That includes the notification, reminder, renewal, vendor-portal, sourcing, catalog, and agreement-visibility settings, plus the linked renewal workflow config, renewal cancellation workflow config, backup renewal queue, and filtered categories.
Get Workflow Intake Form
Fetch the requester primary intake form (questionnaire) for a workflow config: its sections, questions, question options, and attribute configs. Set include_conditions to also return each question's conditions (condition children nested one level). Mirrors the public Zip API GET /external_api/workflows/<guid>/intake_form endpoint.
Args:
include_conditions: When true, each question includes its conditions (with condition children nested one level). Defaults to false.
List Request Workflows
List the company's purchase request approval workflows. Returns every PURCHASE_REQUEST workflow config regardless of status (including archived) plus its name and status. Mirrors the public Zip API GET /external_api/workflows endpoint. For the broader workflows-settings view (all workflow types, live statuses only, templates excluded) use list_workflow_configs instead.
List Workflow Configs
List approval workflow configs for the configured company. Mirrors the workflows page in company settings. Supports pagination and filtering by workflow config type, e.g. PURCHASE_REQUEST, CHANGE_ORDER, or case-insensitive substring match.