Skip to main content
This page lists every tool the Alvys MCP server exposes to AI agents. Each tool maps 1:1 to an Alvys Public API capability and requires a specific permission (scope). Your token must carry that scope for the call to succeed. Tool tiers
  • Read — retrieve data. Always available.
  • Write — create or update data. Disabled during beta.
Scopes use the {resource}:{action} convention and match the Public API scope catalog. Assign them to your application in Admin → API Access.
During beta, the server is read-only. Write tools (marked below) are disabled.

Conventions

The MCP tool surface mirrors the Public API request/response shapes so calls port 1:1 between the two. Paging. All search tools accept page (0-based, default 0) and pageSize (default 25, max 100). Responses echo the request page back so agents can drive their own pager. page=-1 (or any negative value) is rejected with [invalid_params].
Breaking (2026-07-23): paging is now 0-based, matching the Public API. Callers that previously sent page=1 to get the first page must now send page=0. See the changelog.
Array filters. Filters that map to /search array fields on the Public API (statuses, status, loadNumbers, orderNumbers, mcNumbers, dotNumbers, tripNumbers, driverIds, and so on) are declared as arrays on the tool. Pass one or many values in a single call. Date ranges. Date-range filters are objects: { start, end } in ISO-8601 (e.g. { "start": "2026-06-01T00:00:00Z", "end": "2026-06-30T23:59:59Z" }). The parameter names match the Public API — createdDateRange, pickupDateRange, deliveryDateRange, invoicedDateRange, paidDateRange, transactionRange. Legacy split-string parameters (createdFrom / createdTo, pickupFrom / pickupTo, etc.) are no longer accepted. Strict arguments. Unknown keys — misspellings, unsupported filters, or parameters that no longer exist — are rejected with [invalid_params]. The error message names the rejected keys and the valid parameter list so an agent can self-correct in one round trip. Nested keys inside a date range or array element are validated too. Missing required arguments and wrong-type values (for example page: "not-an-int") also return structured [invalid_params] errors naming the parameter — for both tools and prompts.
Why: previously, the MCP SDK bound arguments by name and silently discarded unknown ones. customers_search name="Colortech" returned the full unfiltered customer list because name isn’t a valid filter on that tool. That silent-drop behavior is gone — you now get an actionable error instead of a confidently-wrong result.
Tool annotations. Each tool advertises MCP annotations safety hints that mirror the Read / Write / Destructive tiers on this page: readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Your MCP client can use these hints to decide whether to ask a human before running a tool. During beta, every exposed tool is read-only and sets readOnlyHint: true (and destructiveHint: false). Example rejection:

Loads

Trips

Drivers

Carriers

Customers

Trucks & Trailers

Invoices, Fuel & Payments

Accessorials & Credits

Accessorials are extra charges raised on a load or trip. Credits reduce what is owed. Both use the same reference data: call accessorials_list_types first to get the typeId, the rateType ids that type allows, and the rateUom ids valid for each of those rate types. There is no driver credit tool. A driver credit is a different object from an accessorial — a settlement record rather than a charge on a trip — and is created through the Public API with Create driver credit, which uses the deduction:create scope.

Rate type and unit of measure

rateType and rateUom are sent as ids, and the valid combinations come from accessorials_list_types for the type you are charging. quantity must be greater than zero, except with a Flat rateType, which bills the rate once and forces quantity to 1. Pass stopId when the accessorial type returns RequiresStop: true.

Idempotency on accessorial and credit writes

Every create tool accepts an optional externalId — your own key for the record, unique within your tenant. Send the same value on a retry and the original record is returned instead of a second one being created. Omit it and a retry creates a second record.
  • Keys are case-sensitive and compared after trimming surrounding whitespace.
  • A retry must ask for the same work: the same rate, quantity, rateType, rateUom, and (for driver accessorials) applyDriverRate, plus the same trip or load, accessorial type, stop, and driver. Reusing a key with any of those changed is refused with 409.
  • notes is not compared. A retry with a corrected note returns the original unchanged.
  • A key stays spent after the accessorial is deleted, and cannot be reused across kinds (driver, customer, carrier).
These tools move money. Create only after a human has confirmed the amount. A 503 means the record could not be confirmed, not that it was not created — if you sent an externalId, retry the identical request; if you did not, confirm whether the record exists before retrying.

Visibility & Tracking

Deductions

Tenders


Error handling

Tool calls return a structured error when they cannot complete. Common cases:

Model Context Protocol

Overview and connection setup for the Alvys MCP server.

Authentication

Create credentials and issue access tokens with the right scopes.