- Read — retrieve data. Always available.
- Write — create or update data. Disabled during beta.
{resource}:{action} convention and match the Public API scope catalog. Assign them to your application in Admin → API Access.
Conventions
The MCP tool surface mirrors the Public API request/response shapes so calls port 1:1 between the two. Paging. All search tools acceptpage (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].
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.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: callaccessorials_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 optionalexternalId — 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 with409. notesis 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).
Visibility & Tracking
Deductions
Tenders
Error handling
Tool calls return a structured error when they cannot complete. Common cases:Related
Model Context Protocol
Overview and connection setup for the Alvys MCP server.
Authentication
Create credentials and issue access tokens with the right scopes.