Skip to main content
Glama
machship-mcp

machship-mcp

Machship MCP Server: freight quotes, bookings and labels for AI agents

npm Release License: ISC

Machship MCP server connects Claude Desktop, Claude Code, Cursor, VS Code and any other MCP client to the Machship freight platform API. It has 125 tools for live rates, quotes, consignments, labels, manifests, tracking and invoices. It runs with npx over stdio, or as an HTTP endpoint.

Quickstart

You need Node.js 22 or later and a Machship API token. In Machship, go to Settings > API and generate a token.

# Read the token without echo, so it stays out of shell history
read -rs MACHSHIP_API_TOKEN
claude mcp add --scope local machship -e MACHSHIP_API_TOKEN="$MACHSHIP_API_TOKEN" -- npx -y @devkind/machship-mcp

Then ask your agent: "Ping the Machship API". A successful reply confirms the token.

Install in your client

Requirements:

  • Node.js 22 or later

  • A Machship API token

  • Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Goose, LM Studio, Warp, or another MCP client

Standard config works in most MCP clients:

{
  "mcpServers": {
    "machship": {
      "command": "npx",
      "args": ["-y", "@devkind/machship-mcp"],
      "env": {
        "MACHSHIP_API_TOKEN": "your-token-here"
      }
    }
  }
}

Keep the token in your user-level client config. Do not put it in a project .mcp.json that you commit.

Open Settings > Developer > Edit Config, or edit the file directly:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the standard config above and restart Claude Desktop.

Use the Quickstart command above. --scope local stores the token in ~/.claude.json, outside the repository. You can also install the Claude Code plugin.

Or go to Cursor Settings > MCP > Add new MCP Server. Use type command, the command npx -y @devkind/machship-mcp, and set MACHSHIP_API_TOKEN.

code --add-mcp '{"name":"machship","command":"npx","args":["-y","@devkind/machship-mcp"],"env":{"MACHSHIP_API_TOKEN":"your-token-here"}}'

Or follow the VS Code MCP setup guide with the standard config above.

Follow the Windsurf MCP documentation and add the standard config above.

Go to Advanced settings > Extensions > Add custom extension. Use type STDIO, the command npx -y @devkind/machship-mcp, and set MACHSHIP_API_TOKEN.

Go to Program in the right sidebar > Install > Edit mcp.json and add the standard config above.

Go to Settings > AI > Manage MCP Servers > + Add, or type /add-mcp in the Warp prompt. Paste the standard config above.

No image is published to a registry. Build the image from this repo:

docker build -t devkind/machship-mcp .

Stdio config for an MCP client:

{
  "mcpServers": {
    "machship": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "-e", "MACHSHIP_API_TOKEN", "devkind/machship-mcp"],
      "env": { "MACHSHIP_API_TOKEN": "your-token-here" }
    }
  }
}

HTTP mode on port 3000. The image sets MCP_HOST=0.0.0.0, so the published port accepts outside connections:

docker run --rm -e MACHSHIP_API_TOKEN -e TRANSPORT=http -p 3000:3000 devkind/machship-mcp

The server is also listed on Smithery.

Related MCP server: Deftship MCP Server

Tools

The server has 125 tools in 21 modules. Every tool name starts with machship_.

Area

Modules

Tools

Consignments

Consignments, PendingConsignments, Consolidation, Notes

36

Labels and documents

Labels, Attachments, CommercialInvoices

22

Accounts and access

Identities, IdentityProviders, OrganisationLinks, CustomSchemas

28

Companies, items and locations

Companies, CompanyItems, CompanyLocations, Locations

20

Rates

Quotes, Routes

7

Invoices

CarrierInvoices, FinancialInvoice

6

Manifests

Manifests

5

Connection check

Authenticate (machship_ping)

1

A typical flow: machship_get_companies for the company ID, machship_search_locations for suburbs and postcodes, machship_get_routes for live rates, machship_create_consignment to book, a label tool, then machship_manifest_consignments to send the booking to the carrier. machship_get_consignment_statuses tracks it.

Tool text output stops at 25,000 characters. The full response is in structuredContent.

Example

{
  "tool": "machship_get_routes",
  "arguments": {
    "request": {
      "companyId": 1790,
      "fromLocation": { "suburb": "Melbourne", "postcode": "3000", "state": "VIC", "country": "AU" },
      "toLocation": { "suburb": "Sydney", "postcode": "2000", "state": "NSW", "country": "AU" },
      "items": [{ "weight": 10, "length": 30, "width": 30, "height": 30, "name": "Parcel", "quantity": 1 }]
    }
  }
}

Illustrative output:

{
  "object": {
    "routes": [
      {
        "carrier": { "name": "Example Express" },
        "carrierService": { "name": "Road Express" },
        "consignmentTotal": { "totalSellPrice": 24.5 },
        "despatchOptions": [{ "etaLocal": "2026-11-05T17:00:00" }]
      }
    ]
  },
  "errors": null
}

Configuration

Variable

Required

Default

Purpose

MACHSHIP_API_TOKEN

Yes

none

Machship API token, sent only to MACHSHIP_API_URL. The server starts without it, but every tool call fails until it is set.

MACHSHIP_API_URL

No

https://live.machship.com

Machship API base URL.

TRANSPORT

No

stdio

Set to http for the HTTP transport.

PORT

No

3000

HTTP port when TRANSPORT=http.

MCP_HOST

No

127.0.0.1

HTTP bind address when TRANSPORT=http.

Network access and data

  • The plugin starts the server with npx, so npx downloads the pinned @devkind/machship-mcp package from the npm registry.

  • The server sends requests only to MACHSHIP_API_URL (default https://live.machship.com). Each request carries your API token and the tool arguments, such as addresses, items, consignment IDs and the invoice files you upload.

  • Labels and other documents come back in the tool result as base64. The server writes no files.

  • The server sends no telemetry and stores no data. It writes errors to stderr only.

  • In HTTP mode the server also accepts requests on MCP_HOST and PORT. See HTTP mode.

Claude Code plugin

The repo root is a Claude Code plugin. It adds the Machship MCP server, pinned to a release version of @devkind/machship-mcp (.mcp.json). When you enable the plugin, Claude Code asks for your API token and stores it as a sensitive value. You can also change the API URL.

The plugin also ships the machship-freight skill. The skill teaches Claude the freight workflow with exact tool names: rates, consignment, labels, manifest and tracking. It also tells Claude to ask you before it books, manifests or deletes.

Install it from this repo's marketplace (Claude Code 2.1.275 or later):

/plugin install machship --marketplace devkindhq/machship-mcp

The plugin will also be in the Claude plugin directory once it is listed. On older Claude Code versions, use the claude mcp add command in the Quickstart.

HTTP mode

MACHSHIP_API_TOKEN=your-token TRANSPORT=http npx -y @devkind/machship-mcp
  • MCP endpoint: POST http://localhost:3000/mcp (Streamable HTTP, stateless, JSON responses)

  • Health check: GET http://localhost:3000/health

By default the server listens on 127.0.0.1 only. It rejects requests whose Host header is not localhost, 127.0.0.1 or ::1, which blocks DNS rebinding attacks from web pages. Set MCP_HOST=0.0.0.0 to listen on all interfaces, for example in a container.

Warning: HTTP mode has no authentication, and every request uses the server's Machship token. If you set MCP_HOST to anything other than a loopback address, put an authenticating proxy in front of the server.

Security notes

  • HTTP mode has no authentication. See HTTP mode before you set MCP_HOST.

  • Tools can create, edit and delete live consignments, identities and organisation links. Tool annotations mark the delete and remove tools as destructive, so a client can ask you to confirm them. machship_update_identity sets omitted fields to null.

  • Use a token with the smallest Machship permissions that your work needs.

Development

This repo uses Yarn 1 (yarn.lock). Do not use npm install.

git clone https://github.com/devkindhq/machship-mcp.git
cd machship-mcp
yarn install
yarn lint && yarn build
MACHSHIP_API_TOKEN=your-token yarn start

See CONTRIBUTING.md for the checks, commit style and release flow.

Built by

Built by Devkind. Maintained by the Devkind team.

License

ISC. See CONTRIBUTING.md and SECURITY.md.

Automating freight for your store?

If you ship with Machship, Devkind can connect it to the rest of your stack. We build on Shopify, Swell and headless commerce stacks, and build custom MCP servers and AI agent workflows. Talk to Devkind or email hello@devkind.com.au.

Available Tools

125 tools
machship_add_permanent_pickupsAdd Permanent Pickups to Company LocationB

Adds permanent scheduled pickups to a company location.

Args:

  • payload (object): Contains companyLocationId and pickup schedule details

NameRequiredDescriptionDefault
payloadYesPermanent pickup configuration including companyLocationId and schedule

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only the word "permanent," which hints at persisted recurring schedules, but it does not warn that repeated invocation on a non-idempotent endpoint may create duplicate pickup schedules, nor does it mention required auth or scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded statements with no filler; the purpose sentence comes first and the argument note follows. The 'Args:' block partially restates the schema but is justified given the payload has no declared properties.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a non-idempotent write taking an unconstrained nested object, and the description does not describe the pickup schedule structure, what a partial or invalid payload does, or how duplicates are avoided. Presence of an output schema excuses omitting return values, but the input-side and duplicate-risk gaps remain substantial for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The payload schema is a bare object with additionalProperties {} and no defined properties, so the description's mention of companyLocationId and "pickup schedule details" is the only structural hint available and does genuinely add meaning. However, it stays vague about the schedule's actual shape (frequency, times, days), so it only marginally compensates for the vacuous schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Adds permanent scheduled pickups to a company location." The write-oriented naming plus the existence of the read-side sibling machship_get_permanent_pickups makes the distinction inferable, though the description never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (e.g. the company location must already exist), and no routing to the alternatives such as machship_get_permanent_pickups to inspect existing schedules or machship_rebook_manifest_pickup. The agent is left to infer when this tool applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_attempt_auto_reconciliationAttempt Auto ReconciliationB

Attempts automatic reconciliation of carrier invoices based on configured carrier thresholds.

Args:

  • body (object): Reconciliation request payload (carrierInvoiceId, etc.)

NameRequiredDescriptionDefault
bodyYesReconciliation request payload

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already disclose that this is not read-only, is open-world, non-idempotent, and non-destructive. The description adds useful context that reconciliation depends on configured carrier thresholds and that the operation is an 'attempt,' but it does not explain what is changed, what failure modes exist, or what permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core operation before listing the single argument. The Args section is slightly mechanical but still compact and free of unrelated detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a non-idempotent mutation with a nested request body and open-world behavior, so it benefits from annotations and the output schema. However, the description remains sparse on prerequisites, request payload structure, and operational side effects beyond mentioning configured thresholds.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high, but the body schema is a loosely typed object with no defined properties. The description adds a small amount of useful payload guidance by mentioning carrierInvoiceId and 'etc.', but it does not document the full reconciliation request shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: attempting automatic reconciliation of carrier invoices based on configured carrier thresholds. It is clear enough for an agent to understand the operation, though it does not explicitly distinguish itself from related invoice-retrieval siblings such as machship_get_carrier_invoices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'based on configured carrier thresholds' implies that the tool should be used when carrier thresholds are configured, but it does not give explicit when-to-use or when-not-to-use guidance. No alternative reconciliation or manual invoice workflow is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_company_locationCreate Company LocationC

Creates a new company location (warehouse, store, depot pickup point).

Args:

  • location (object): Location data including companyId, name, address, suburb, postcode, state, country, contactName, phone, etc.

NameRequiredDescriptionDefault
locationYesLocation data (companyId, name, address, suburb, postcode, state, country, contactName, phone)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the safety and idempotency profile is covered. The description adds nothing further — no note on duplicate-location behavior, required permissions, validation failures, or what the response contains — so beyond the annotations it contributes almost no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short parts: a front-loaded purpose sentence followed by a compact Args block; there is no filler. The only minor inefficiency is that the Args block duplicates the schema almost verbatim rather than adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes a nested free-form object (additionalProperties: {}) plus a required companyId, so an agent needs to know which sub-fields are mandatory and which formats are accepted; the description gives none of that. It is helped by having an output schema and full annotation coverage, but the unstructured nested payload remains under-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter's schema description already lists companyId, name, address, suburb, postcode, state, country, contactName, phone. The description's Args block largely restates that same field list, adding the 'etc.' hint that other fields exist but no format, required-vs-optional, or nesting guidance — baseline 3 is the right ceiling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('Creates a new company location') and adds concrete examples of what a location is (warehouse, store, depot pickup point), which helps an agent disambiguate from 'search_locations' or location lookups. It does not explicitly contrast with the sibling mutations 'edit_company_location' or 'get_company_location', so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance: nothing says this is for net-new locations only versus using 'machship_edit_company_location' for existing ones, and no prerequisites (such as requiring a valid companyId) are mentioned. The create-vs-edit distinction is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_consignmentCreate ConsignmentB

Creates a new unmanifested consignment in Machship. This is the core operation for booking freight.

Args:

  • consignment (object): Full consignment details including:

    • companyId, fromCompanyLocationId, toAddress (suburb, postcode, state, country)

    • items (array of packages with weight, dimensions)

    • carrierId, serviceId, reference1, reference2, etc.

NameRequiredDescriptionDefault
consignmentYesConsignment data (companyId, from/to locations, items, carrier, service, references)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, non-idempotent and openWorld=true, so the safety profile is covered structurally. The description adds the meaningful state detail that the resulting consignment is 'unmanifested', but omits what happens on success (does it book with the carrier?), whether duplicates are created on retry (relevant given idempotentHint=false), and any required permissions or validation failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and purpose, then a compact structured Args breakdown. No redundant sentences; the 'core operation for booking freight' line earns its place as orientation. The trailing 'etc.' is the only weak spot.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a high-stakes nested-payload creation tool with no field-level schema enforcement, the description gives an incomplete field inventory and says nothing about required nested fields, validation behavior, or what 'unmanifested' implies for follow-up steps (manifesting).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the schema only describes a single untyped object with additionalProperties, so it conveys almost no field-level meaning. The description compensates by enumerating key fields (companyId, fromCompanyLocationId, toAddress with suburb/postcode/state/country, items with weight and dimensions, carrierId, serviceId, reference1/reference2), which is genuinely useful, but it ends with 'etc.' and never marks which nested fields are required. Baseline 3 reflects that this partially, not fully, documents a free-form nested payload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a new unmanifested consignment in Machship') plus the business purpose ('core operation for booking freight'). The 'unmanifested' qualifier and the mention of inline 'items (array of packages)' implicitly separate it from create_consignment_existing_items and create_consignment_with_complex_items, but those siblings are never named, so differentiation requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is given, despite three closely related create variants in the sibling list. 'This is the core operation for booking freight' provides context for the tool's role but does not tell an agent when to pick this over the complex-items or existing-items variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_consignment_existing_itemsCreate Consignment with Existing Saved ItemsB

Creates a consignment using previously saved company items (by item ID / SKU).

Args:

  • consignment (object): Consignment data referencing existing saved item IDs

NameRequiredDescriptionDefault
consignmentYesConsignment data referencing existing item IDs

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds essentially no behaviour beyond that: nothing about what happens when a referenced item ID/SKU is not found, whether the consignment is created atomically, or that a write to a live carrier environment occurs (openWorldHint=true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one sentence with no filler. The trailing 'Args:' block largely restates what the schema already declares about 'consignment', making it mild redundancy rather than an asset.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, this is a write operation whose entire payload is an undocumented free-form nested object; the description gives no guidance on payload structure and does not point the agent at a schema-discovery tool such as machship_get_custom_schema or the sibling create tools for the expected consignment shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100% for the single 'consignment' parameter, so the baseline of 3 applies. In practice the schema is an empty additionalProperties object, so the description's note that it references existing saved item IDs is the only real meaning conveyed; it adds nothing about which fields are required or how item references should be shaped.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a consignment') plus the defining constraint 'using previously saved company items (by item ID / SKU)', which lets an agent distinguish it from machship_create_consignment and machship_create_consignment_with_complex_items. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this when the items already exist as saved company items and you can reference them by ID or SKU. There is no explicit when-not guidance, no mention of the alternative creation tools, and no stated precondition (e.g. that item IDs must already exist in the company) or failure behaviour for unknown IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_consignment_with_complex_itemsCreate Consignment with Complex ItemsB

Creates a consignment using complex item definitions (with detailed packaging/dangerous goods data).

Args:

  • consignment (object): Consignment data with complexItems array instead of standard items

NameRequiredDescriptionDefault
consignmentYesConsignment data with complexItems array

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, open-world, non-destructive write, so the safety profile is covered. The description adds only the distinctive payload trait (complexItems with packaging/DG data) and says nothing about creation side effects, whether a draft/pending consignment is produced, or carrier-dependent failures. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its differentiator in a single sentence, with no filler prose. The 'Args:' block is largely boilerplate that restates the only property, costing a little precision but not hurting readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a create operation taking one free-form nested object (schema is additionalProperties-only, so the '100% coverage' is misleading) with dangerous-goods payloads and an open-world annotation. The description gives no guidance on required consignment structure, valid complex item shapes, or where to discover the schema, which leaves an agent under-equipped for a genuinely complex tool. The presence of an output schema excuses it from explaining return values, but the input side remains thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, so the 3 baseline applies. The description does add one useful nugget the schema cannot express — that the consignment object must carry a complexItems array rather than standard items — but it does not describe the internal structure of those complex items or which other consignment fields are mandatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a consignment') plus the distinguishing characteristic ('using complex item definitions ... instead of standard items'), which separates it conceptually from machship_create_consignment and machship_create_consignment_existing_items. It does not name those siblings, so the differentiation must be inferred from the parenthetical rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the use case (when consignments need detailed packaging/dangerous goods data), which is a reasonable signal for choosing it over plain create_consignment. However, there is no explicit when-to-use/when-not and no named alternative, and no mention of prerequisites such as fetching a custom schema or consignment creation settings first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_custom_schemaCreate Custom SchemaB

Creates a new custom schema to extend Machship entities with additional fields.

Args:

  • name (string): Schema name

  • type (string): Schema type/entity to extend

  • schema (object): JSON schema definition

NameRequiredDescriptionDefault
nameYesSchema name
typeYesSchema type/entity
schemaYesJSON schema definition

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, open-world, non-idempotent, non-destructive write. The description adds no behavioral detail beyond that: it does not say whether duplicate names are rejected, that repeated calls create duplicates (non-idempotent), whether permissions are required, or what happens on validation failure. For a mutation tool, this leaves an important gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and earns its place. The Args block is redundant with the input schema and could be dropped, but it is short and does not obscure the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, the agent still lacks the valid entity types for "type" and confirmation of non-idempotent create semantics, which matter for a schema-mutating tool in an open-world API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three parameters are already fully documented in the input schema, and the Args block merely restates those descriptions verbatim. It adds no meaning such as which values of "type" are valid or any structural constraints on the "schema" object beyond its being a JSON schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Creates a new custom schema to extend Machship entities with additional fields." This distinguishes it from sibling machship_get_custom_schema, machship_update_custom_schema and machship_delete_custom_schema by the verb alone. It is clear enough without opening the schema, though it does not call out the alternatives by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the "create" verb and the existence of get/update/delete siblings. Nothing tells the agent when to create a new schema versus updating an existing one, or what preconditions (e.g. an entity that supports extension) must hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_identitiesCreate IdentitiesA

Create identities in MachShip and assign companies and roles. All identities must belong to the same identityProvider and organisation. Requires administrator access.

Args:

  • identities (array): Array of identity objects, each with:

    • givenName (string): First name (required)

    • familyName (string): Last name (required)

    • displayName (string): Display name (required)

    • emailAddress (string): Email (required)

    • identifyingClaim (string): Unique claim for identity provider (required)

    • organisationId (number): Organisation ID (required)

    • identityProviderId (number): Identity provider ID (required)

    • owningCompanyId (number): Owning company ID (required)

    • password (string, optional): Password

    • uniqueId (string, optional): Unique ID

    • userAndCompanyLinks (array, optional): Company/role links to create

NameRequiredDescriptionDefault
identitiesYesIdentities to create

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, openWorld=true, idempotent=false, so the safety profile is covered. The description adds two things beyond that: administrator-level authorization is required, and all items in the batch must share the same identityProvider/organisation. It does not explain batch failure semantics (all-or-nothing vs partial), duplicate-claim handling, or that passwords are submitted in plaintext.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose lead is front-loaded and efficient, with the auth requirement and the shared-provider constraint in the right place. However, the bulk of the description is an Args enumeration that duplicates a 100%-covered schema field-for-field, so a meaningful fraction of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the mutation safety profile. The description adds authorization and batching constraints, which is what an agent needs to invoke this correctly. The remaining gap is batch-level behavior on partial failure or duplicate identities, which matters for an array-input creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every nested field (givenName, identifyingClaim, userAndCompanyLinks, etc.) is already documented with requiredness and types in the schema. The Args block largely restates that same field list, adding no format examples, link-object structure, or validation nuance. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Create identities in MachShip') plus a secondary effect ('assign companies and roles'), which separates it from machship_update_identity and machship_link_identities_to_companies. It also states a cross-item constraint (same identityProvider and organisation) that no sibling could satisfy. It does not explicitly name the sibling to use when the identity already exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a prerequisite ('Requires administrator access') and a batching constraint ('All identities must belong to the same identityProvider and organisation'), which helps gate when the call is legal. It gives no guidance on when to prefer machship_update_identity or machship_link_identities_to_companies over creating new identities, so the alternative-selection path is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_item_complexCreate Complex Company ItemB

Creates a new complex item (product/SKU with detailed packaging info) for a company.

Args:

  • companyId (number): Company ID to create item under

  • item (object): Item details including sku, description, weight, dimensions, etc.

NameRequiredDescriptionDefault
itemYesComplex item data (sku, description, weight, length, width, height, etc.)
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true, and the description is consistent with a write operation. Beyond that it adds only that the item carries 'detailed packaging info' and is scoped to a company; it says nothing about duplicate-SKU conflicts, validation failures, or permissions, which is the most useful missing behavioral context for a non-idempotent create.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded single-sentence purpose followed by a short Args list; nothing is padded. The Args block duplicates the schema descriptions, costing a small amount of space, but overall it is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a create mutation over a loosely typed nested object, the definition omits SKU uniqueness behavior, minimum required item fields, and error expectations — meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the Args block largely restates the schema ('Company ID', 'sku, description, weight, length, width, height, etc.'). The nested item object is declared with additionalProperties: {} and no enumerated required fields, and the description does not fill that gap by naming which item fields are actually mandatory. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Creates a new complex item (product/SKU with detailed packaging info) for a company' — and the word 'complex' plus the packaging-detail qualifier differentiates it from the simple-item retrieval siblings like machship_get_item_by_sku. It does not explicitly contrast with other creation tools such as machship_create_consignment_with_complex_items, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g. that companyId must reference an existing company, whether SKU must be unique, or what happens on duplicate SKU), and no mention of any alternative tool. The agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_pending_consignmentCreate Pending ConsignmentA

Creates a pending consignment — a draft/staging consignment that hasn't been rated or assigned to a carrier yet. Pending consignments can be converted to full consignments after quoting.

Args:

  • consignment (object): Pending consignment data including companyId, from/to address, items, references, etc.

NameRequiredDescriptionDefault
consignmentYesPending consignment data (companyId, fromAddress, toAddress, items, reference1, reference2)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the created record is in a draft/unrated/unassigned state and is later convertible to a full consignment, which tells the agent this is a non-terminal, non-destructive stage-setting write. It stops short of describing validation failures, required permissions, or what happens to the record if quoting fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core definition is front-loaded in the first sentence and the second sentence adds lifecycle context rather than filler. The trailing 'Args' block marginally duplicates the schema's own property description, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter create tool with an output schema and full annotation coverage, the description supplies enough: what is created, its lifecycle state, and how it is later used. Return values need not be explained because an output schema exists; only the nested object's required sub-fields remain opaque.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents its fields (companyId, fromAddress, toAddress, items, reference1, reference2). The description's 'Args' block lists essentially the same field set ('companyId, from/to address, items, references, etc.'), adding almost no new meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a pending consignment') and then defines what a pending consignment actually is: 'a draft/staging consignment that hasn't been rated or assigned to a carrier yet.' That definition distinguishes it from the sibling machship_create_consignment, though it never names that sibling directly, so the differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Pending consignments can be converted to full consignments after quoting' implies the workflow (stage now, quote, then finalize), which is useful implied usage guidance. However, there is no explicit when-to-use versus machship_create_consignment or machship_create_quote, and no prerequisites, exclusions, or error conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_quoteCreate QuoteA

Creates a freight quote in Machship — returns available carrier rates for a shipment. Use this to compare carrier prices and transit times before creating a consignment.

Args:

  • quote (object): Quote request including:

    • companyId (number): Company to quote under

    • fromAddress or fromLocationId: Pickup address or location ID

    • toAddress: Delivery address (suburb, postcode, state, country)

    • items: Array of items with weight (kg), length/width/height (cm)

    • carrierId / serviceId (optional): Filter to a specific carrier/service

Returns: Array of available rate options, each with: { "carrierId", "serviceName", "totalCost", "transitDays", "accountId" }

Examples:

  • Use when: "Get freight quotes from Sydney to Melbourne for a 5kg parcel"

  • Don't use when: You already have a carrier in mind — use machship_create_consignment directly

NameRequiredDescriptionDefault
quoteYesQuote request body (companyId, fromAddress/fromLocationId, toAddress, items)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is largely covered. The description adds that the call reaches out to carrier networks and is a non-destructive pre-step to a consignment, but it never says whether a quote record is persisted and later retrievable via machship_get_quote, nor anything about rate limits or cost of repeated calls — a meaningful gap for a create-verb tool flagged non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then Args, Returns and Examples in a predictable structure, with no filler sentences. The nested bullet list is a little dense in proportion to the single top-level parameter, but every line carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object tool with a 100%-covered but structurally empty schema, the description supplies the input field list, the returned rate fields, and a concrete usage example, which is close to what an agent needs. Remaining gaps are the sibling disambiguation and the persistence/retrieval behaviour of the created quote; return values themselves are already covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema's quote object is effectively opaque (additionalProperties: {} with only a short parenthetical), so the description carries real weight: it enumerates companyId, fromAddress vs fromLocationId, toAddress components, items with weight in kg and dimensions in cm, and marks carrierId/serviceId as optional filters. Units and the address-or-location-ID choice are genuine value-adds; it still leaves item-level array shape and any per-item optional fields implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: it creates a freight quote and returns available carrier rates for a shipment, and it names the downstream step (consignment creation). The one ambiguity it leaves is against its nearest sibling, machship_create_quote_complex_items, which is never mentioned, so an agent still cannot tell from the description alone which quote tool fits which item shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use ('compare carrier prices and transit times before creating a consignment') and a when-not with a named alternative ('you already have a carrier in mind — use machship_create_consignment directly'). It stops short of covering the more likely confusion case, the complex-items quote sibling, so routing guidance is strong but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_create_quote_complex_itemsCreate Quote with Complex ItemsA

Creates a freight quote using complex item definitions (detailed packaging, dangerous goods, serialisation data).

Args:

  • quote (object): Quote request with complexItems array instead of standard items

Returns: Same as machship_create_quote — array of rate options with cost and transit info.

Examples:

  • Use when: Items have dangerous goods codes, serial numbers, or non-standard packaging

  • Use when: machship_create_quote returned a validation error about item structure

NameRequiredDescriptionDefault
quoteYesQuote request with complexItems array

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the mutation and external-carrier profile is known. The description's main addition is the return shape ("array of rate options with cost and transit info"), which is partly redundant given an output schema exists, and it says nothing about auth, rate limits, or whether quote calls are billable/committal. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by compact Args/Returns/Examples blocks. Every line carries information an agent needs; no filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and annotations cover return values and safety, and the description links behavior back to machship_create_quote. The one remaining gap is that the internal shape of complexItems is undefined in both schema and description, though the usage triggers and sibling references mitigate this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the schema itself is a bare object with additionalProperties, so the description genuinely adds meaning: the payload must carry a complexItems array 'instead of standard items', which is the key structural difference from machship_create_quote. It does not enumerate the complexItems fields, so 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Creates a freight quote") and immediately narrows scope with "using complex item definitions (detailed packaging, dangerous goods, serialisation data)". This makes it distinguishable from the sibling machship_create_quote and from get_routes_complex_items without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Two explicit 'Use when' triggers are given: items with DG codes/serials/non-standard packaging, and specifically falling back here after machship_create_quote returns an item-structure validation error. That names both the condition and the alternative tool, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_delete_consignmentsDelete Unmanifested ConsignmentsA
Destructive

Deletes multiple unmanifested consignments. Cannot delete manifested consignments.

Args:

  • ids (number[]): Array of consignment IDs to delete

NameRequiredDescriptionDefault
idsYesConsignment IDs to delete

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is known. The description adds useful behavioral context by stating the key eligibility constraint: manifested consignments cannot be deleted. It omits partial-failure behavior or permission requirements, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is short and front-loads the core behavior and restriction before listing the parameter. The separate Args section largely duplicates the schema and has a minor type mismatch, but it does not obscure the main instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter deletion tool with rich annotations and an output schema, the description supplies the essential eligibility rule and input meaning. It leaves some edge-case behavior unstated, but an agent has enough to invoke it correctly in the normal case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully described in the schema as 'Consignment IDs to delete', and the description repeats the same meaning without adding syntax or usage nuance. Schema description coverage is 100%, so a baseline score of 3 is appropriate; the description's 'number[]' phrasing also differs slightly from the schema's integer items.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Deletes multiple unmanifested consignments') and clearly scopes the operation to unmanifested consignments. The manifested restriction distinguishes it from broader delete operations and makes the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage condition by saying it deletes unmanifested consignments and cannot delete manifested ones, which tells the agent when the tool is applicable. It does not name alternative tools or explain how to handle mixed manifested/unmanifested ID sets, so it falls short of explicit alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_delete_custom_schemaDelete Custom SchemaA
Destructive

Deletes a custom schema by its DotNet class ID. This is irreversible.

Args:

  • id (string): DotNet class ID of the schema to delete

NameRequiredDescriptionDefault
idYesDotNet class ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description's one addition, 'This is irreversible,' reinforces the destructive hint rather than adding new information, and says nothing about permissions, error behavior for unknown IDs, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus an Args block, with the operation and its irreversibility front-loaded. The Args section is redundant with a fully described schema, which is the only wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with rich annotations and an output schema, the definition covers what an agent needs in order to call it correctly. Minor gaps remain around error handling for invalid IDs and confirmation requirements, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter's schema already documents 'DotNet class ID'. The Args block merely restates that, adding no format examples, sourcing guidance, or validation detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Deletes a custom schema') plus the identifier used to target it, so the operation is unambiguous. It does not explicitly contrast with machship_get_custom_schema, machship_update_custom_schema, or machship_get_custom_schemas, though the delete verb makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use or when-not-to-use guidance, and no alternatives such as updating rather than removing a schema. Usage is only implied by the destructive nature of the operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_delete_identitiesDelete IdentitiesA
Destructive

Delete the identities with the given IDs. This action is irreversible.

Args:

  • ids (number[]): Array of identity IDs to delete

NameRequiredDescriptionDefault
idsYesIdentity IDs to delete

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds the useful nuance that the deletion is irreversible, confirming there is no reenable path, but it says nothing about cascade effects (e.g. linked companies, public keys) or required permissions for a batch destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the critical warning front-loaded; nothing is padded. The 'Args:' block duplicates schema information and is the only wasted element.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations carry the destructive/idempotency profile, so an agent has enough to call this correctly. For a batch irreversible delete, a sentence on what happens to dependent records would have made it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ids' parameter is fully documented in the schema (array of positive integers, minItems 1). The description's Args block merely restates that without adding format, limits, or behavior for partial failures in a batch.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Delete') and resource ('identities with the given IDs'), which is clearly distinct from the sibling family (get_identities, disable_identities, update_identity). It does not explicitly name the closest alternative (disable_identities), so it falls just short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'irreversible' note implicitly signals this is the hard-delete path rather than the reversible machship_disable_identities, but there is no explicit when-to-use/when-not guidance, no prerequisite or permission statement, and no warning about what else is removed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_delete_itemDelete Company ItemB
Destructive

Deletes a saved item from a company. This action is irreversible.

Args:

  • companyItemId (number): The ID of the item to delete

NameRequiredDescriptionDefault
companyItemIdYesCompany item ID to delete

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is structured data. The description adds the useful 'This action is irreversible' framing, but does not say what happens to consignments or records that reference the deleted item, nor what permission scope is needed. Adds some value beyond annotations, but leaves the main side-effect questions open.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the irreversible warning front-loaded, followed by a compact Args block. The Args line duplicates the schema and could be dropped, but nothing is verbose or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the tool is a single-parameter mutation. However, for a destructive delete, the description does not state referential consequences or whether a soft/hard delete occurs, which is a meaningful gap for agent planning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as 'Company item ID to delete', so the description's Args block largely restates the schema. No extra meaning (format, where the ID comes from, cross-company scope) is added. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Deletes a saved item from a company'), which distinguishes it from the other delete siblings (delete_consignments, delete_custom_schema, delete_identities, delete_pending_consignments) by resource. It does not explicitly name those siblings, but the resource noun is unambiguous enough that an agent can route on it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus alternatives or prerequisites — for example, whether to confirm the item exists via machship_get_item first, or whether the item must be unreferenced. The only guidance is the irreversibility warning, which is a consequence, not a selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_delete_pending_consignmentsDelete Pending ConsignmentsB
Destructive

Deletes one or more pending consignments.

Args:

  • ids (number[]): Pending consignment IDs to delete

NameRequiredDescriptionDefault
idsYesPending consignment IDs to delete

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is known. The description adds nothing beyond that: it does not say whether deletion is permanent or recoverable, whether a partially invalid ID list causes partial deletion, or whether related records are affected. With annotations covering the basics, this is a minimal pass but no added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose statement is front-loaded in one short sentence with no filler. The trailing 'Args' block is redundant with the schema, which is the only wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a single-parameter bulk delete with full schema coverage, an output schema covering return values, and annotations covering the destructive/idempotent profile. The only residual gap is batch-failure semantics, which is minor for a tool this simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ids' parameter is already documented in the schema with type, minItems and bounds. The description's 'Args' block simply repeats the schema text verbatim, adding no meaning such as a maximum batch size or behavior on unknown IDs. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Deletes ... pending consignments') and the plural scope ('one or more'). The word 'pending' implicitly distinguishes it from machship_delete_consignments, which handles non-pending consignments, but that contrast is never made explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over machship_delete_consignments, no prerequisites (e.g. must the consignment still be unmanifested?), and no exclusions. The agent must infer that 'pending' is the discriminator from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_disable_identitiesDisable IdentitiesA

Disable the identities with the given IDs, preventing them from logging in.

Args:

  • ids (number[]): Array of identity IDs to disable

NameRequiredDescriptionDefault
idsYesIdentity IDs to disable

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare this is a non-read-only, non-destructive, non-idempotent mutation, so the safety profile is largely covered. The description adds genuine context beyond that by naming the concrete consequence (identities can no longer log in). It does not say whether existing sessions are terminated, whether already-disabled IDs error, or what happens with unknown IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and wastes nothing. The trailing 'Args:' block duplicates the schema and is the only non-earning text, but it is brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the tool has only one required parameter. However, for a state-changing identity operation it omits error semantics and the relationship to reenable/delete, which an agent would need to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ids' array parameter is fully documented in the schema, including type, minItems, and positivity constraints. The description's Args block merely restates that, adding no new meaning such as batch-size limits or ordering behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Disable the identities') plus the observable effect ('preventing them from logging in'). It stops short of differentiating from nearby siblings such as machship_delete_identities and machship_reenable_identities, so an agent must infer which of the three mutations to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the 'preventing them from logging in' phrasing suggests a soft, reversible suspension rather than deletion, which hints at when to prefer this over machship_delete_identities. There is no explicit when-to-use, when-not-to-use, or prerequisite statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_edit_company_locationEdit Company LocationC

Edits an existing company location.

Args:

  • location (object): Updated location data including id and any fields to update

NameRequiredDescriptionDefault
locationYesUpdated location data including id

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. Beyond that the description adds only 'any fields to update', which hints at partial-update semantics but never states whether omitted fields are preserved or cleared, nor what the response contains. For a mutation tool this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded with the action, which is good, but the 'Args:' boilerplate restates the schema signature rather than adding information. The brevity here reads as under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes a nested, unconstrained object, and the description never explains which location fields are editable or how to discover them (e.g. via machship_get_company_location). An output schema exists, so return values need not be described, but the input side is materially incomplete for a mutation of a complex nested payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the single parameter is a freeform object with additionalProperties {} and no documented properties, so the schema itself carries almost no field-level meaning. The description contributes the two key facts — an id is required and only changed fields need to be supplied — which is real added value, but it does not list valid fields or point to a source for them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Edits an existing company location.' An agent can tell it mutates a location entity rather than creating or fetching one. However, it never distinguishes itself from siblings like machship_create_company_location or machship_get_company_location beyond the verb, leaving the sibling boundary implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives such as machship_create_company_location for new records, and no prerequisites or permissions noted. The agent must infer that this is the update path simply from the verb 'Edits'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_edit_consignmentEdit Unmanifested ConsignmentA

Edits an existing unmanifested (not yet booked) consignment. Cannot edit manifested consignments.

Args:

  • consignment (object): Updated consignment data including the consignment id

NameRequiredDescriptionDefault
consignmentYesUpdated consignment data including id

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-idempotent, non-destructive, open-world behavior. The description adds the useful manifested/unmanifested precondition, but says nothing about whether the update is full-replacement or partial, what happens to omitted fields, or permission requirements — relevant since destructiveHint=false could mislead an agent into assuming omitted data survives.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences convey the operation and the key constraint with no padding. The trailing Args block merely restates the schema's own property description, which is minor waste but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation on an untyped nested object, and the description gives no guidance on how to construct the payload — no pointer to fetching the existing consignment for edit, no field list, no partial-vs-full semantics. Given the completely opaque nested schema, the description should carry far more weight than it does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the single 'consignment' parameter is a free-form object with additionalProperties {} and no field structure, so the schema conveys almost nothing. The description only repeats 'updated consignment data including the consignment id' and adds no indication of expected fields, ID type, or nested shapes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (edits) and a precisely scoped resource (an existing unmanifested consignment), and clarifies 'unmanifested' as 'not yet booked'. It does not name any of the many related siblings (update_reprice_consignment, update_consignment_statuses, get_unmanifested_consignment_for_edit), so differentiation still relies on inference from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a genuine exclusion — manifested consignments cannot be edited — which tells the agent when this call will fail. It stops short of routing the agent anywhere for the manifested case or suggesting the sibling used to fetch editable consignment data first (get_unmanifested_consignment_for_edit).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_active_consignmentsGet Active ConsignmentsB
Read-onlyIdempotent

Returns all active (in-transit) consignments for a company.

Args:

  • companyId (number): Company ID

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

NameRequiredDescriptionDefault
carrierIdNoFilter by carrier ID
companyIdYesCompany ID
startIndexNoPagination start index
retrieveSizeNoItems to retrieve
includeChildCompaniesNoInclude child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds the useful definitional detail that "active" means in-transit, but says nothing about ordering, result limits, or whether child-company inclusion changes the result set. Since an output schema exists, the absence of return-value detail is acceptable, but the operational behavior (pagination semantics of startIndex starting at 1, max retrieveSize 200) is left entirely to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient. The appended Args list largely duplicates an input schema that already documents every parameter at full coverage, so it is mild overhead rather than value, but it is short and does not obscure the main statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-entity-scoped list tool with rich annotations, a full input schema, and an output schema, the definition covers what matters: what is returned and for which company. The main residual gap is disambiguation from the crowded family of sibling consignment listers, which the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args block essentially restates the schema field descriptions ("Company ID", "Pagination start index", "Number to retrieve", "Filter by carrier") with no added meaning such as units, zero-vs-one-based indexing, or what happens when includeChildCompanies is omitted. It neither compensates for nor degrades the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Returns all active (in-transit) consignments for a company" states a specific verb, resource, and a status qualifier that meaningfully narrows scope. The parenthetical "(in-transit)" lets an agent distinguish it from the many other consignment listers (all, recent, completed, unmanifested) without opening a schema, though it never names any of them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The sibling list contains at least five near-identical retrieval tools (get_all_consignments, get_recent_consignments, get_completed_consignments, get_unmanifested_consignments, search_consignments), and the description gives no rule for choosing between them beyond the implied notion of "active". It also never mentions prerequisites such as needing a valid companyId or carrier scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_all_consignmentsGet All ConsignmentsC
Read-onlyIdempotent

Returns all consignments for a company with date range and status filtering.

Args:

  • companyId (number): Company ID

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

  • includeDeletedConsignments (boolean, optional): Include deleted

  • fromDateTimeLocal (string, optional): Start date filter (local time)

  • toDateTimeLocal (string, optional): End date filter (local time)

  • filterByEtaCompletedOrDespatch (string, optional): Filter by ETA/despatch status

NameRequiredDescriptionDefault
carrierIdNoFilter by carrier ID
companyIdYesCompany ID
startIndexNoPagination start index (default 1)
retrieveSizeNoNumber of results to return (default 40, max 200)
toDateTimeLocalNoEnd date filter (local time ISO 8601)
fromDateTimeLocalNoStart date filter (local time ISO 8601)
includeChildCompaniesNoInclude consignments from child companies
includeDeletedConsignmentsNoInclude deleted consignments in results
filterByEtaCompletedOrDespatchNoFilter by ETA, completed, or despatch status

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuine behavioral detail beyond that: pagination, opt-in inclusion of deleted consignments and child companies, and local-time date filtering. It says nothing about result caps, throttling, or how filters combine, which keeps it at adequate rather than strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One useful opening sentence is followed by a nine-line Args block that duplicates a fully documented schema, so a large share of the text does not earn its place. The single piece of genuine routing information is buried in the first line rather than front-loaded as guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a listing tool with nine parameters and aggressive sibling overlap, the description omits the allowed values for filterByEtaCompletedOrDespatch (no enums in the schema) and gives no basis for choosing this over machship_search_consignments or the specialized consignment getters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The Args block largely restates the schema and is in places weaker than it (the schema gives defaults 1 and 40, a max of 200, and ISO 8601 format, none of which appear in the description). No added semantics for filterByEtaCompletedOrDespatch, which is a free-form string with no enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns all consignments for a company, with date-range and status filtering. It is distinguishable from mutation siblings but not from the many read siblings (machship_search_consignments, machship_get_active_consignments, machship_get_recent_consignments, machship_get_consignments_by_carrier_id), since the description never explains what makes this the 'all' variant versus those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no named alternatives, despite the sibling list containing at least five closely competing consignment-listing tools. An agent must infer from the name alone that this is the broad/unscoped listing endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_attachmentGet AttachmentB
Read-onlyIdempotent

Downloads the raw attachment file from Machship by attachment ID. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • id (number): Attachment ID

NameRequiredDescriptionDefault
idYesAttachment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds a small amount of real behavior – the response payload shape and the note that contentType is taken from the response header – but says nothing about error behavior for a missing ID or any download size constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus an Args block, front-loaded with the action. The Args section largely duplicates the schema, but it is brief and does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema and full annotation coverage, the description covers the essentials. It still omits what happens when the ID is invalid or the attachment is missing, which is the main open question an agent would have before calling a download endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required integer id already documented as 'Attachment ID'. The description's 'id (number): Attachment ID' restates the schema without adding format, source, or validity constraints, so this sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource: 'Downloads the raw attachment file from Machship by attachment ID.' The 'by attachment ID' qualifier separates it from list-style siblings such as machship_get_attachments_by_consignment_ids and machship_get_consignment_attachments, though those siblings are never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the phrase 'by attachment ID' – the agent must infer that an ID from a listing tool is a prerequisite. There is no explicit statement of when to prefer this over machship_get_attachments_by_consignment_ids or machship_get_attachment_pod_report, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_attachment_pod_reportGet Attachment POD ReportA
Read-onlyIdempotent

Downloads a Proof of Delivery (POD) report that includes attachment and consignment details. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • id (number): Attachment ID

NameRequiredDescriptionDefault
idYesAttachment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the returned shape and the detail that contentType comes from the response header, but says nothing about size limits, base64 encoding overhead, or failure modes when a POD is unavailable for a consignment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and short, and the return shape is stated compactly. The trailing 'Args' block duplicates the schema field it already documents, which is mild redundancy but not bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only download tool with a full output schema and complete annotations, the description covers what it does, what it takes, and what it returns. The only meaningful gap is guidance on missing/invalid POD documents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single required parameter at 100% schema coverage, the baseline is 3, and the description only restates 'id (number): Attachment ID' verbatim from the schema. It adds no meaning such as which attachment types qualify as POD reports or how to obtain a valid ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Downloads') and a specific artifact ('Proof of Delivery (POD) report'), plus the scope ('includes attachment and consignment details'). This clearly separates it from generic attachment readers like machship_get_attachment or machship_get_consignment_attachments, though it never names a sibling to sharpen the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer you call this when you need a POD document for a known attachment ID. There is no explicit when-to-use, no exclusion, and no mention of what to do if the attachment is not a POD or no POD exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_attachments_by_consignment_idsGet Attachments by Consignment IDsA
Read-onlyIdempotent

Downloads attachments for up to 40 consignments in bulk (returned as zip). Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • ids (number[]): Array of consignment IDs (max 40)

NameRequiredDescriptionDefault
idsYesConsignment IDs (max 40)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuine value with the zip packaging and the note that contentType is taken from the response header, but it omits what happens when some consignments have no attachments or when an ID is invalid, and says nothing about payload size for a 40-consignment zip.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation and its constraint in one sentence, followed by the return shape, then the arguments. The 'Args' block is largely redundant with a fully documented schema, which is the only real waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter bulk download the description covers scope, format and return keys, and an output schema exists so return values are already structural. Remaining gap is partial-failure/empty-attachment behavior, which is meaningful but not blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the 'Args' block merely restates the schema ('ids (number[]): Array of consignment IDs (max 40)') including the same maxItems=40 constraint. No added meaning such as whether unknown/invalid IDs are ignored or cause failure, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Downloads attachments for up to 40 consignments in bulk') plus the output form (zip), which implicitly separates it from the single-record attachment siblings. It never names those siblings (e.g. machship_get_attachment, machship_get_consignment_attachments), so the agent must infer the split from the 'bulk / max 40' phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'in bulk' and the 40-item cap hint that this is the batched alternative to single-attachment fetching, but there is no explicit when-to-use or when-not-to-use statement and no alternative is named. An agent can guess correctly but is not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_available_rolesGet Available RolesB
Read-onlyIdempotent

Get all roles that are available to assign to users of a certain company.

Args:

  • companyId (number): Company ID

NameRequiredDescriptionDefault
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered externally. The description adds nothing beyond that — it does not say whether inactive or system roles are included, what permissions the caller needs, or whether the result depends on the calling identity's organisation. With annotations doing the heavy lifting, this is a minimal contribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient, but the trailing 'Args:' block duplicates the JSON schema verbatim and adds length without information. The definition is short overall, so it is not bloated, just partially redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and with one required scalar parameter this is a simple tool. Still, for a company-scoped lookup the description never clarifies authorisation or scope boundaries, leaving it merely adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is already documented as 'Company ID' in the schema. The description's Args block restates exactly that, adding no format, source, or constraint details (e.g. whether companyId must be one the caller is linked to). Baseline 3 applies when the schema carries the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get all roles that are available to assign to users of a certain company.' This is recognizable as a read operation scoped to a company. No sibling tool deals with roles, so differentiation is implicit rather than explicit, which keeps it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'available to assign to users' implies the tool's place in a role-assignment workflow, but there is no explicit when-to-use statement, no mention of what to do when a role is missing from the result, and no named alternative. Usage is only derivable from purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_carrier_invoice_entriesGet Carrier Invoice EntriesC
Read-onlyIdempotent

Gets carrier invoice line entries with optional status filtering.

Args:

  • carrierInvoiceId (number): The carrier invoice ID

  • status (string, optional): Filter entries by status

NameRequiredDescriptionDefault
statusNoFilter by entry status
carrierInvoiceIdYesCarrier invoice ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description contributes nothing behavioral beyond that – no note on pagination, result volume, what status values exist, or what happens when the invoice has no entries – so it does not earn credit for added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the whole definition is short with no filler. The Args block largely duplicates the schema, which is mild waste, but the total length is appropriate for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover safety, so the description need not explain return values. However, for a subresource lookup the description gives no guidance on result size, pagination, or the valid status set, leaving a caller with an optional string filter unable to know what to pass.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in structured form and the baseline is 3. The description merely restates them ("carrierInvoiceId: The carrier invoice ID", "status: Filter entries by status") without adding accepted status values or default behavior, so it neither helps nor hurts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Gets carrier invoice line entries") and scopes it to a single carrier invoice, which distinguishes it from the sibling machship_get_carrier_invoices that lists invoices themselves. It stops short of naming that sibling or otherwise differentiating the two explicitly, so the distinction must be inferred from the word "entries".

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus machship_get_carrier_invoices or any reconciliation sibling, nor any prerequisite or exclusion. The only usage signal is that status filtering is optional, which describes a parameter rather than a usage decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_carrier_invoicesGet Carrier InvoicesB
Read-onlyIdempotent

Returns basic carrier invoice information (max 100 records per call).

Args:

  • companyId (number, optional): Filter by company ID

  • carrierId (number, optional): Filter by carrier ID

  • fileName (string, optional): Filter by invoice file name

  • invoiceId (number, optional): Filter by specific invoice ID

NameRequiredDescriptionDefault
fileNameNoFilter by invoice file name
carrierIdNoFilter by carrier ID
companyIdNoFilter by company ID
invoiceIdNoFilter by invoice ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that with the max 100 records per call limit. It does not explain what happens when more than 100 invoices match (no pagination or truncation behavior) or whether any authentication/company scoping is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the key fact (returns carrier invoice info, capped at 100 records) in the first sentence and presents filters in a clean list. The Args list is fully redundant with the input schema, so a little space is wasted, but the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value details need not be repeated, and annotations cover the safety profile. However, for a simple filtered list with no required parameters, the description omits two things an agent would want: how to handle results beyond the 100-record cap and how this differs from sibling invoice tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's Args list restates each parameter exactly as the schema documents it, adding no new meaning. It does confirm all filters are optional, but repeats rather than enriches the schema. Baseline 3 is appropriate when the schema carries parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns basic carrier invoice information, with a concrete cap of max 100 records per call. It does not differentiate itself from the closely related sibling machship_get_carrier_invoice_entries or from machship_get_posted_invoices, leaving an agent to infer which invoice-retrieval tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance or alternative is named. The use case (filtered invoice listing) is implied by the parameters, but the description never says when to choose this over machship_get_carrier_invoice_entries, machship_get_posted_invoices, or machship_get_invoice_by_document_number.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_commercial_invoice_pdfGet Commercial Invoice PDFA
Read-onlyIdempotent

Returns the commercial invoice PDF for a consignment (used for international shipments). Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds that the payload is a base64 file plus a response-header-derived contentType, which hints at large binary returns, but it says nothing about size limits, failure modes, or what happens when no invoice exists, and the restated return shape is largely covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded lines: purpose, return shape, then parameters. It is efficient overall, though the Args block duplicates the input schema verbatim and could be dropped without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single required parameter, full schema coverage, rich annotations, and an existing output schema, the description need only establish purpose and context, which it does. The remaining gap is error/edge-case behavior when a consignment has no commercial invoice, which is minor for a one-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single consignmentId parameter is already documented in the schema, including its integer type and minimum bound. The description's Args block merely repeats "consignmentId (number): Consignment ID" without adding format, source, or lookup guidance, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Returns the commercial invoice PDF for a consignment" gives a specific verb (returns) and a precise artifact (commercial invoice PDF), which separates it from sibling PDF tools such as get_consignment_label_pdf, get_dangerous_goods_pdf, and get_special_instructions_pdf. The parenthetical "used for international shipments" narrows the domain further, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Used for international shipments" implies when the tool applies, which is more than most PDF getters offer. However, it gives no guidance on prerequisites (e.g. the consignment must already exist or have a commercial invoice attached) and never names alternatives such as machship_upload_commercial_invoice or machship_get_consignment_pdf_file_info.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_companiesGet CompaniesA
Read-onlyIdempotent

Returns all companies accessible to the authenticated user.

Args:

  • atOrBelowCompanyId (number, optional): Filter to companies at or below this company in the hierarchy

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Array of company objects, each containing: { "id": number, // Company ID — use this in other tool calls "name": string, // Display name of the company "isActive": boolean, // Whether the company is active "parentCompanyId": number | null }

Examples:

  • Use when: "List all companies I have access to"

  • Use when: "What company ID does Acme Corp have?" -> call this, then search by name

  • Don't use when: You need carrier/service info (use machship_get_company_carriers instead)

Error Handling:

  • Error 401: Check MACHSHIP_API_TOKEN is set correctly

  • Error 403: Token lacks permission to list companies

NameRequiredDescriptionDefault
response_formatNoOutput format: 'json' (machine-readable, default) or 'markdown' (human-readable)json
atOrBelowCompanyIdNoLimit to companies at or below this company ID in the hierarchy

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this as read-only, idempotent, non-destructive, and open-world. The description adds useful auth-related failure behavior: 401 means check MACHSHIP_API_TOKEN, and 403 means the token lacks company-list permission. It also documents returned company fields, though the existence of an output schema makes that partly redundant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and organized into Args, Returns, Examples, and Error Handling. It is somewhat longer than strictly necessary because the output schema already covers return fields, but the structure remains easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only listing tool, the description covers purpose, usage alternatives, parameter meaning, error handling, and example scenarios. With rich annotations, full schema coverage, and an output schema, an agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains both parameters. The description repeats the hierarchy filter meaning for atOrBelowCompanyId and output format default for response_format without adding substantially new syntax or behavioral detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Returns all companies accessible to the authenticated user.' It also explicitly distinguishes this tool from machship_get_company_carriers, which handles carrier/service information rather than company listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete use cases, including listing accessible companies and resolving a company name to an ID. It also provides an explicit exclusion: don't use this for carrier/service info, use machship_get_company_carriers instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_company_carriersGet Company Carriers, Accounts and ServicesA
Read-onlyIdempotent

Returns all available carriers, carrier accounts, and freight services for a company. Call this before creating consignments or quotes to discover which services and accounts are available.

Args:

  • companyId (number): Company ID

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Array of carrier objects with nested accounts and services, each containing: { "carrierId": number, "carrierName": string, "accounts": [ { "accountId": number, "accountName": string, "services": [{ "serviceId": number, "serviceName": string }] } ] }

Examples:

  • Use when: "What carriers are available for company 123?"

  • Use when: You need a serviceId to pass to createConsignment

  • Don't use when: You just need a company list (use machship_get_companies instead)

NameRequiredDescriptionDefault
companyIdYesCompany ID
response_formatNoOutput format: 'json' (default) or 'markdown'json

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is fully covered. The description adds the useful workflow dependency (must be called before consignment/quote creation), but says nothing about permissions, scoping to the caller's organisation, pagination, or behaviour when a company has no configured carriers. The return-shape block largely duplicates the existing output schema rather than adding behavioural context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and usage guidance before the detail, and the Examples block is genuinely useful. However, the inline JSON return-shape and the Args list duplicate structured data the agent already receives, adding length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with a full output schema and rich annotations, the description covers purpose, timing, alternative routing, and return structure. An agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The Args section merely restates 'companyId (number): Company ID' and the response_format default/enum verbatim, adding no meaning such as whether the ID is an internal Machship company ID versus an external reference. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with explicit scope: 'Returns all available carriers, carrier accounts, and freight services for a company.' It also names the sibling it is not (machship_get_companies), so an agent can distinguish it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use rule ('Call this before creating consignments or quotes'), a concrete motivating example (need a serviceId for createConsignment), and an explicit when-not-to-use with the alternative tool named. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_company_locationGet Company LocationA
Read-onlyIdempotent

Returns details for a single company location (warehouse, store, depot).

Args:

  • id (number): Company location ID

NameRequiredDescriptionDefault
idYesCompany location ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety behavior is covered structurally. The description adds only the clarification of what a company location represents; it says nothing about error behavior when the id does not exist or about permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and free of padding. The trailing Args block duplicates the schema's parameter description and could be dropped without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full annotation coverage and an output schema that describes the return shape, the description supplies what an agent needs to call it. The only meaningful omission is routing guidance versus the list sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single id parameter is fully documented in the schema, including type and bounds. The description's Args block merely restates that same information, adding no new meaning such as format, source, or how to obtain a valid id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns details for a single company location") and clarifies the domain with parenthetical examples (warehouse, store, depot). It does not distinguish itself from the sibling machship_get_company_locations list tool, so an agent must infer the single-vs-many split from the wording alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word "single" implies this is the lookup-by-id path as opposed to a listing, which is weak but real usage guidance. There is no explicit statement of when to prefer this over machship_get_company_locations, nor any prerequisite or not-found guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_company_locationsGet All Company LocationsA
Read-onlyIdempotent

Returns all locations (warehouses, stores, depots) for a given company.

Args:

  • companyId (number): Company ID

NameRequiredDescriptionDefault
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the meaning of 'locations' via examples (warehouses, stores, depots) and does not discuss ordering, pagination, or access requirements. With annotations and an output schema present, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core behavior. The Args section largely restates the schema, which is minor redundancy rather than a structural problem.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with annotations and an output schema, the definition gives enough information to invoke it correctly. The main missing context is explicit guidance on choosing between this tool and the related location-retrieval siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single companyId parameter is fully documented in the schema. The description repeats 'Company ID' without adding format, validation, or lookup guidance beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Returns all locations (warehouses, stores, depots) for a given company.' This clearly states the operation and scope. It does not explicitly contrast with close siblings such as machship_get_company_location or machship_search_locations, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a given company' implies company-scoped bulk retrieval, which is useful context. However, it gives no explicit guidance on when to use this instead of the singular machship_get_company_location or the location-search siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_completed_consignmentsGet Completed ConsignmentsB
Read-onlyIdempotent

Returns completed (delivered) consignments within a date range (max 2000 results).

Args:

  • companyId (number): Company ID

  • startDate (string): Start date (ISO 8601)

  • endDate (string): End date (ISO 8601)

  • includeChildCompanies (boolean, optional): Include sub-companies

NameRequiredDescriptionDefault
endDateYesEnd date (ISO 8601)
companyIdYesCompany ID
startDateYesStart date (ISO 8601)
includeChildCompaniesNoInclude consignments from child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds one genuinely useful behavioral fact not in the structured data: a hard cap of max 2000 results. It says nothing about whether results are truncated versus erroring at the cap, ordering, or date-range edge semantics, so credit is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and efficient, correctly establishing purpose and result cap. However, the four-line Args block duplicates the input schema word-for-word and consumes roughly two-thirds of the text without adding information, which is filler rather than earned content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full annotation coverage, the description need not explain return values or safety. It states the resource, the date-range scoping, and the 2000-result ceiling, which is enough for correct invocation. The remaining minor gap is the absence of any disambiguation from the many other consignment-listing siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The Args block simply restates each schema description verbatim (including 'ISO 8601'), adding no format examples, timezone handling, date inclusivity, or guidance on includeChildCompanies. Baseline 3 applies since the schema does the work and the description adds nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Returns completed (delivered) consignments') and adds scope ('within a date range'), which distinguishes it from status-based siblings like active or unmanifested consignment getters. It does not explicitly name which sibling to use instead when the agent wants all or recent consignments, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance despite a crowded sibling set (get_all_consignments, get_recent_consignments, get_active_consignments, search_consignments, get_consignments_by_carrier_id). The only implicit signal is that 'completed (delivered)' implies a status filter, leaving the agent to infer selection among many near-duplicate retrieval tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignmentGet ConsignmentB
Read-onlyIdempotent

Returns full details for a single consignment by ID.

Args:

  • id (number): Consignment ID

  • includeDeleted (boolean, optional): Include deleted consignments

  • includeRequestGuids (boolean, optional): Include request GUIDs in response

NameRequiredDescriptionDefault
idYesConsignment ID
includeDeletedNoInclude deleted consignments
includeRequestGuidsNoInclude request GUIDs

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful context that deleted consignments exist and are excluded unless includeDeleted is set, plus that request GUIDs are optional response fields. It says nothing about behavior when the ID is unknown or about the scope of 'full details'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the whole definition is two short blocks with no filler. The 'Args' list duplicates the input schema, which is mild redundancy but does not bloat the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema and rich annotations, the description need not explain return values, and the parameters are fully covered. However, for a single-record lookup among many consignment getters, it omits the routing information (which sibling to use for multiple IDs, references, or searches) that would make the definition self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The 'Args' block largely restates those schema descriptions verbatim ('Consignment ID', 'Include deleted consignments'), with only a small addition ('in response' for request GUIDs). This is baseline-3 territory: accurate but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns full details for a single consignment by ID'), so an agent knows exactly what the tool fetches. It does not distinguish itself from close siblings such as machship_get_consignments_by_ids, machship_search_consignments, or machship_get_consignment_for_clone, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The phrase 'by ID' implicitly signals that a consignment ID is required, but nothing says when to pick this over the batch lookup, the search tool, or the clone-specific getter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_attachmentsGet Consignment AttachmentsA
Read-onlyIdempotent

Returns attachment metadata (not file contents) for a consignment.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish read-only, idempotent, non-destructive behavior, and the description adds a meaningful nuance beyond them: the response contains attachment metadata only, not file contents. It says nothing about permissions, rate limits, or what happens when a consignment has no attachments, but the core behavioral distinction is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two-line description is front-loaded and efficient, with the important metadata-not-contents caveat in the first sentence. The Args block merely restates the schema and is slightly redundant, but it costs little space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full annotations and an output schema, the description covers the essential scope and return-content distinction. Minor omissions such as behavior for consignments without attachments are acceptable given the structured metadata available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and the schema already documents it at 100% coverage with the same 'Consignment ID' wording, so the description adds no semantic detail. The baseline of 3 applies when the schema fully carries parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('attachment metadata') scoped to a single consignment, and clarifies it excludes file contents, which helps separate it from attachment-content tools. It does not explicitly name the closest siblings such as machship_get_attachments_by_consignment_ids or machship_get_attachment, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'metadata (not file contents)' phrasing implies when this tool is appropriate versus retrieving actual files, but no sibling is named and no explicit when-not guidance is given. An agent must infer the choice against machship_get_attachment and machship_get_attachments_by_consignment_ids.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_by_pending_idGet Consignment by Pending Consignment IDA
Read-onlyIdempotent

Get consignment details (if it exists) using a pending consignment ID that has been transformed (linked) into a consignment.

Args:

  • id (number): Pending consignment ID

NameRequiredDescriptionDefault
idYesPending consignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description adds real context beyond them: the pending ID must be in a transformed/linked state, and the result may be absent ('if it exists') — a precondition and outcome caveat an agent could not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence captures purpose and precondition. The trailing Args block restates schema content and is mild redundancy, but nothing is padded beyond that.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param read tool with a full output schema and rich annotations, the description supplies the key missing piece — the precondition that the pending consignment must be linked — which is what an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'id' parameter is already documented as 'Pending consignment ID' in the schema, so the description's Args block repeats it verbatim. No extra semantics (format, lookup scope) are added, which is the baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get consignment details) and adds a meaningful qualifier: the pending ID must already have been transformed/linked into a consignment. This separates it in spirit from machship_get_pending_consignment and machship_get_consignments_by_pending_ids, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'if it exists' implies this tool applies only after a pending consignment has been linked, and suggests a null/absent result otherwise. However, there is no explicit guidance on when to choose this over the sibling pending-consignment or batch-by-pending-ids tools, leaving the routing decision partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_creation_settingsGet Consignment Creation SettingsA
Read-onlyIdempotent

Returns settings and defaults needed for creating consignments for a company (required fields, defaults, etc.).

Args:

  • companyId (number, optional): Company ID (defaults to authenticated company)

NameRequiredDescriptionDefault
companyIdNoCompany ID (optional)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds one useful behavioral detail beyond them: companyId defaults to the authenticated company. It does not say whether the defaults are carrier-dependent or how the settings change per company, which is the main behavioral question for this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no padding; the purpose precedes the argument note. The trailing "etc." is mildly vague about what else is returned, but the structure is efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and with a single optional parameter the description covers the invocation surface adequately. The only shortfall is the missing explicit link to the create-consignment tools, which matters given how many creation variants exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already labels companyId optional, but the description supplies meaning the schema lacks — that omitting it falls back to the authenticated company's context. That is a real invocation-relevant semantic addition, even if small.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns settings and defaults needed for creating consignments for a company") and enumerates what the payload contains (required fields, defaults). It is clearly distinguishable from the many machship_create_consignment* siblings because it is a read that feeds them, although it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the phrase "needed for creating consignments" — an agent can infer this is a pre-flight lookup, but the description does not say "call this before machship_create_consignment" or scope it to a specific creation flow. There are no exclusions or alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_for_cloneGet Consignment for CloneA
Read-onlyIdempotent

Get the details of an existing consignment in a format that can be passed directly to the createConsignmentWithComplexItems endpoint to create a copy.

Args:

  • id (number): Consignment ID to retrieve in clone format

NameRequiredDescriptionDefault
idYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and an output schema exists, so the safety profile and return shape are covered. The description usefully adds that the payload is clone-ready for the create endpoint, but it does not disclose what is stripped or must be changed (IDs, references, dates) before re-submission — a notable omission for a clone helper.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the downstream endpoint are front-loaded in one sentence, followed by a compact args list. Nothing is wasted, though the 'Args' restatement of the schema field adds little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full annotation coverage and an output schema, the definition supplies what an agent needs to choose and invoke it. The only gap is practical guidance on mutating the returned payload before creating the copy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'id' parameter, so the description merely restates 'Consignment ID to retrieve in clone format'. No additional semantics such as whether the ID is a consignment or pending consignment identifier are provided, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the details of an existing consignment') and adds a distinguishing purpose: the output is formatted for direct submission to createConsignmentWithComplexItems. That clearly separates it from plain read siblings like machship_get_consignment, though it does not name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended workflow is unambiguous: call this when you want to copy a consignment, then feed the result to createConsignmentWithComplexItems. There is no explicit when-not guidance or named alternative for read-only inspection, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_label_pdfGet Consignment Label PDFB
Read-onlyIdempotent

Returns the consignment label PDF. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds one useful operational detail (contentType comes from the response header) but says nothing about failure modes such as labels not yet generated or consignment not manifested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core statement and short overall, but the explicit return-field listing and the Args block largely duplicate the output schema and input schema, adding length without new meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter, an output schema, and rich annotations, only modest description content is required, and the return shape plus header caveat are covered. It still omits availability timing and any routing guidance among the many label/PDF siblings, which is the main gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description's 'consignmentId (number): Consignment ID' merely restates the schema. It adds no format hints, no source of the ID, and no note that the schema types it as an integer rather than a number.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Returns the consignment label PDF', which an agent can immediately map to a label-retrieval action. It does not distinguish itself from close siblings such as machship_get_consignment_pdf_file_info or machship_get_item_label_pdf, so the caller must infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and never names an alternative such as the file-info or PDF-file-info variants. The agent is left to guess whether this fetches bytes, metadata, or both.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_notesGet Consignment NotesA
Read-onlyIdempotent

Returns all notes attached to a consignment (internal comments, delivery instructions, etc.).

Args:

  • id (number): Consignment ID

NameRequiredDescriptionDefault
idYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds useful context about the nature of the returned content, but says nothing about volume, ordering, or what happens when a consignment has zero notes, and an output schema already covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and wastes no words. The appended Args block is redundant with the schema but is short enough not to hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, full schema coverage, rich annotations, and an output schema, the description covers what an agent needs to invoke the tool correctly. The only meaningful omission is any routing guidance versus the many consignment-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents itself as "Consignment ID" with type and bounds. The description's Args block simply restates that, adding no new meaning such as where to obtain the ID or whether pending consignment IDs are accepted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Returns all notes attached to a consignment") and clarifies what counts as a note (internal comments, delivery instructions). It does not, however, differentiate itself from nearby siblings such as machship_get_consignment_attachments or machship_get_special_instructions_pdf, which an agent could easily confuse with this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer it should call this when it needs commentary attached to a known consignment ID. There is no explicit statement of when to prefer this over machship_get_consignment or the attachment/instruction tools, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_pdf_file_infoGet Consignment PDF File InfoB
Read-onlyIdempotent

Returns the consignment label PDF as JSON. object.content holds the file as base64, with object.fileName and object.contentType.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, so the description is not required to carry the safety profile. It does add the useful behavioral detail that the payload is base64-encoded rather than a binary stream, but it says nothing about size limits, rate limits, or what happens for a consignment without a label.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and earns its place, but the trailing 'Args' block duplicates the input schema verbatim and adds no information. Removing it would lose nothing and would sharpen the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with a full output schema and rich annotations, the description supplies the one thing the schema does not make obvious: that the file arrives as base64 inside object.content. What remains missing is disambiguation from the sibling PDF-retrieval tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, so the schema already defines consignmentId as a positive integer. The 'Args' block merely restates 'consignmentId (number): Consignment ID' without adding format, sourcing, or example detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Returns the consignment label PDF') and qualifies the format ('as JSON'), which implicitly contrasts with the binary-label siblings like machship_get_consignment_label_pdf. It stops short of naming that alternative explicitly, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'as JSON / base64' framing implies when this tool is preferable to a raw-PDF sibling, but there is no explicit when-to-use or when-not-to-use guidance and no sibling is named. The agent must infer the selection rule from the output-format hint alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignments_by_carrier_idGet Consignments by Carrier Consignment IDA
Read-onlyIdempotent

Finds consignments by carrier's own consignment/tracking ID. Max 10 per request.

Args:

  • carrierConsignmentIds (string[]): Array of carrier consignment IDs (max 10)

NameRequiredDescriptionDefault
carrierConsignmentIdsYesCarrier consignment IDs (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds only the batch cap of 10, which is already encoded in the schema via maxItems, so it contributes little new behavioral context beyond noting the batching constraint in prose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the 10-item cap are front-loaded in the first two sentences. The trailing 'Args:' block largely duplicates the schema, which is mild redundancy but not harmful given the overall brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter read tool with a full schema, rich annotations and an output schema needs little prose. The definition covers purpose, lookup key and the batch limit, leaving nothing an agent needs in order to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully documented with type, minLength, minItems and maxItems. The description merely restates 'Array of carrier consignment IDs (max 10)', adding no format or syntax detail beyond the schema, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Finds') and resource ('consignments') and pins the lookup key to the carrier's own consignment/tracking ID, which implicitly differentiates it from siblings like get_consignments_by_ids or get_consignments_by_reference1/2. It stops short of naming those alternatives, but the resource distinction is clear enough to select correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'carrier's own consignment/tracking ID' implies the lookup context (you have an external carrier ID, not a Machship ID), but there is no explicit when-to-use/when-not-to-use statement and no named alternative. Usage is inferable rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignments_by_idsGet Consignments by IDs (Batch)A
Read-onlyIdempotent

Returns details for multiple consignments by their IDs (max 100 per request).

Args:

  • ids (number[]): Array of consignment IDs (max 100)

NameRequiredDescriptionDefault
idsYesConsignment IDs (max 100)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the batch size ceiling, which is also in the schema, and says nothing about partial results (what happens when some IDs don't exist) or request throttling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is one front-loaded sentence with no wasted prose. The trailing 'Args:' block largely restates the schema entry for the single parameter, which is mild redundancy but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only batch fetch with a full output schema and complete annotations, nothing essential is missing. The one behavioral fact an agent needs beyond structured fields — the per-request cap — is stated up front.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the type (integer array, positive, maxItems 100, minItems 1) and the meaning of 'ids' are already documented. The description repeats the same 'max 100' note without adding format, ordering, or ID-source guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Returns details for multiple consignments by their IDs') and signals batch scope, which separates it from single-record siblings like machship_get_consignment. It does not, however, explicitly distinguish itself from the other lookup siblings (by_reference1/2, by_carrier_id, search_consignments), so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'multiple ... by their IDs' hints at batch lookup when IDs are already known, and the max-100 constraint scopes it. There is no explicit when-to-use/when-not guidance or named alternative for reference-based, carrier-based, or free-text searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignments_by_pending_idsGet Consignments by Pending Consignment IDs (Batch)B
Read-onlyIdempotent

Get consignment details for multiple consignments using Pending Consignment IDs as the lookup. Maximum of 100 consignments per request.

Args:

  • ids (number[]): Array of pending consignment IDs (max 100)

NameRequiredDescriptionDefault
idsYesPending consignment IDs (max 100)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description's only added behavioral fact is the 100-consignment cap, which is already expressed by maxItems in the schema; it says nothing about partial results, missing/invalid IDs, or ordering. With annotations carrying the burden, this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is short and front-loaded, but the 100-item maximum is stated three times (twice in the description, once in the schema) and the 'Args:' block duplicates the schema verbatim. The repetition costs space without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the tool is a simple one-parameter batch read. However, the definition never clarifies what a 'pending' consignment ID is versus a regular consignment ID or what happens when IDs are not found, which is the main ambiguity an agent would face.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents 'Pending consignment IDs (max 100)' plus minItems/maxItems constraints. The description restates the same cap without adding format, ordering, or error semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get consignment details'), resource ('consignments'), and lookup key ('Pending Consignment IDs'), which meaningfully distinguishes it from machship_get_consignments_by_ids and the single-record machship_get_consignment_by_pending_id. It does not name those siblings explicitly, so differentiation is inferable rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the batch framing and the 100-item cap, but there is no explicit guidance on when to use this versus machship_get_consignment_by_pending_id for a single ID or machship_get_consignments_by_ids for already-created consignments. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignments_by_reference1Get Consignments by Reference 1B
Read-onlyIdempotent

Finds consignments by their Reference 1 field (order number, etc). Max 10 per request.

Args:

  • references (string[]): Array of Reference 1 values (max 10)

NameRequiredDescriptionDefault
referencesYesReference 1 values (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered structurally. The description adds the meaningful operational constraint of max 10 references per request, but says nothing about matching behavior (exact vs partial match, case sensitivity) or what happens with unmatched references.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus a compact args block; the batch cap is stated up front. The Args section duplicates the parameter already covered by the schema, making it slightly redundant but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup with a full output schema and rich annotations, the core need is covered, but the description leaves the agent unable to decide between this tool and reference2 or IDs-based siblings. The max-10 cap is the main value added.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is fully documented in the schema, including minLength and maxItems. The description's Args block largely restates the schema rather than adding semantics such as whether references must be exact or how duplicates are handled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (finds) and resource (consignments) scoped to the Reference 1 field, with a clarifying example (order number). It doesn't distinguish itself from the near-identical sibling machship_get_consignments_by_reference2, which an agent would need to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to choose Reference 1 versus Reference 2, consignment IDs, or the search tool, despite a crowded sibling set of consignment lookups. The only usage constraint offered is the batch cap of 10.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignments_by_reference2Get Consignments by Reference 2B
Read-onlyIdempotent

Finds consignments by their Reference 2 field. Max 10 per request.

Args:

  • references (string[]): Array of Reference 2 values (max 10)

NameRequiredDescriptionDefault
referencesYesReference 2 values (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds only the 10-item cap, which is also in the schema, and says nothing about behavior like partial-match semantics or what happens when a reference matches multiple consignments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences followed by a brief args list; nothing is padded. The max-10 limit appears twice (body and args), which is minor redundancy rather than bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the tool is a simple single-parameter lookup, so the description needn't explain return values. It is nearly complete; the only gap is match semantics on the reference values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single parameter, so the schema fully documents 'references' with the max-10 constraint. The description's args block merely restates that same information, adding no semantics such as whether values are case-sensitive or exact-match.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Finds consignments by their Reference 2 field') and names the exact lookup key, which distinguishes it from the sibling machship_get_consignments_by_reference1 without opening either schema. Scope limit (max 10) is included up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives no when-to-use guidance or alternatives. It does not say to use search_consignments or get_all_consignments when the reference field is unknown, nor does it list any exclusion conditions. Usage is only implied by the field name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_consignment_statusesGet Consignment Tracking StatusesA
Read-onlyIdempotent

Returns tracking/delivery statuses for a batch of consignments, with optional date filter.

Args:

  • ids (number[]): Consignment IDs

  • sinceDateCreatedUtc (string, optional): Only return statuses since this UTC datetime (ISO 8601)

NameRequiredDescriptionDefault
idsYesConsignment IDs
sinceDateCreatedUtcNoFilter: only statuses since this UTC datetime (ISO 8601)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds nothing beyond that: no batch-size limits, no ordering of returned statuses, no statement about IDs that do not exist, and no note on whether only the latest status per consignment is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and small, with no filler. However, the Args list duplicates the input schema's own descriptions word-for-word, which is wasted space rather than added value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, two-parameter read tool with full schema coverage, an output schema and read-only annotations, the description is sufficient to invoke it correctly. The only real gap is operational detail about large ID batches, which is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented, and the description's Args block restates the schema text verbatim. It adds no extra meaning such as maximum batch size, timezone expectations, or the effect of omitting sinceDateCreatedUtc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns tracking/delivery statuses for a batch of consignments, with the filter scope named. It is clearly distinct from machship_update_consignment_statuses (the write counterpart) by the word 'Returns', but it never explicitly names or contrasts that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'batch of consignments' suggests it is the multi-ID status reader and the date filter suggests incremental polling. There is no explicit when-to-use, when-not-to-use, or named alternative (e.g. machship_get_consignment for a single consignment's full detail).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_custom_schemaGet Custom Schema by IDC
Read-onlyIdempotent

Returns a specific custom schema by its DotNet class ID.

Args:

  • id (string): The DotNet class ID of the schema

NameRequiredDescriptionDefault
idYesDotNet class ID of the schema

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no error behavior when the ID is unknown, no access/permission notes, no hint that an unknown ID yields an empty or failed result. For a lookup tool this is a missed opportunity rather than a failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is short and front-loaded, which is good. The Args section, however, is pure duplication of the input schema and earns no place; the whole definition would be tighter as one sentence plus a pointer to the source of the ID.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter getter with full schema coverage, an output schema (so return values need no explanation), and annotations covering the safety profile. The only real gap — how to obtain a valid DotNet class ID — is minor for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is already documented as 'DotNet class ID of the schema'. The description's Args block restates that verbatim, adding no meaning — e.g. where the ID comes from or its expected format — so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a specific custom schema') plus the lookup key ('DotNet class ID'), which is enough to distinguish it from the sibling list tool machship_get_custom_schemas. However, it never names that sibling explicitly, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The phrase 'by its DotNet class ID' weakly implies the prerequisite of already holding an ID (presumably from machship_get_custom_schemas), but the agent must infer that entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_custom_schemasGet All Custom SchemasA
Read-onlyIdempotent

Returns all custom schemas defined in the Machship organisation. Custom schemas extend Machship entities with additional fields.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile needs no restatement. The description adds genuine domain context by explaining what a custom schema is (additional fields extending Machship entities), but says nothing about result volume, pagination, or whether every schema in the organisation is returned in one call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no waste: the operation and scope come first, followed by the one piece of background needed to interpret the output. Nothing repeats the title or the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with an output schema that documents the return shape and annotations that cover safety, the description supplies everything else an agent needs: what it returns, whose scope it covers, and what the returned objects represent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter meaning for the description to convey and the baseline of 4 applies. The organisation-scoping phrasing does clarify the implicit boundary of the result set, which is the only parameter-like semantics available here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns all custom schemas defined in the Machship organisation') and the plural 'all' signals it differs from the singular sibling machship_get_custom_schema. It stops short of naming that sibling explicitly, so the distinction is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by scope: this is the list-everything variant, so an agent can reason that per-schema lookup belongs to machship_get_custom_schema. There is no explicit when-to-use, when-not-to-use, or naming of alternatives, so guidance stays inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_dangerous_goods_pdfGet Dangerous Goods Document PDFA
Read-onlyIdempotent

Returns the dangerous goods declaration document PDF for a consignment. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds non-obvious behavioral context beyond that: the payload is base64 file content plus contentType and sizeBytes, and contentType is sourced from the response header rather than the body. It stops short of mentioning error behavior for consignments with no DG declaration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the outcome, followed by a compact Args block. The return-shape sentence and Args block partially duplicate the output schema and input schema respectively, but the contentType-from-header detail earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read that returns a file, the description covers purpose, payload fields, and the encoding format, while annotations carry the safety profile and an output schema exists. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single consignmentId parameter is already fully documented. The description's Args section merely restates the parameter name and type, adding no meaning such as where to obtain a consignment ID or whether it must belong to the caller's organisation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it 'Returns the dangerous goods declaration document PDF for a consignment.' An agent can immediately understand the artifact produced. It does not distinguish itself from the closely named sibling machship_get_dangerous_goods_pdf_file_info, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no mention of the sibling machship_get_dangerous_goods_pdf_file_info that appears to serve a very similar role (metadata vs. content). Usage is only implied by the single consignmentId parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_dangerous_goods_pdf_file_infoGet Dangerous Goods Document PDF File InfoB
Read-onlyIdempotent

Returns the dangerous goods declaration PDF as JSON. object.content holds the file as base64, with object.fileName and object.contentType.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds the practically useful detail that the payload is base64-encoded content plus fileName/contentType, but since an output schema exists this is largely return-shape repetition rather than new behavioral context such as size limits or error behavior for consignments without DG items.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded passages with the key payload fact first. The Args block is redundant with the schema but is compact enough not to waste much space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with full annotations and an output schema, the description is adequate about what comes back, but it omits the one thing an agent needs to choose correctly: the relationship to machship_get_dangerous_goods_pdf and the other PDF file-info tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already fully documents consignmentId. The description's 'consignmentId (number): Consignment ID' restates the schema verbatim and adds no meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the dangerous goods declaration PDF as JSON') and describes the payload shape (object.content base64, object.fileName, object.contentType). It implicitly differentiates from machship_get_dangerous_goods_pdf by emphasizing the JSON/file-info form, but never names that sibling explicitly, so the contrast must be inferred from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description makes clear this is for retrieving the DG declaration as a JSON file object, but it never says when to pick this over machship_get_dangerous_goods_pdf or the other *_pdf_file_info siblings, nor any prerequisites (e.g. consignment must have dangerous goods declared).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identitiesGet IdentitiesA
Read-onlyIdempotent

Get all identities owned by an organisation, with details on which companies they are linked to. Requires administrator access to the organisation.

Args:

  • organisationId (number): Organisation ID

  • onlyUnlinkedIdentities (boolean, optional): Return only identities not linked to any company

  • identityProviderId (number, optional): Filter by identity provider

NameRequiredDescriptionDefault
organisationIdYesOrganisation ID
identityProviderIdNoFilter by identity provider ID
onlyUnlinkedIdentitiesNoReturn only unlinked identities

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description contributes beyond that with the administrator-access requirement and a statement of what the response contains (identities plus company linkage). It says nothing about pagination or result size, which is a minor gap for a list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is two tight sentences with the purpose front-loaded and the permission caveat immediately after. The trailing Args block duplicates the fully-documented schema and is the only wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, three-parameter list tool with a full output schema, the definition covers purpose, access requirements and filtering intent. Only return-shape nuances like paging or ordering are absent, which is acceptable given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args block largely restates the schema, though 'Return only identities not linked to any company' clarifies the boolean's intent slightly better than 'Return only unlinked identities'. No format or ID-source hints are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Get all identities owned by an organisation, with details on which companies they are linked to.' The plural 'all' implicitly separates it from the singular machship_get_identity sibling, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Adds a real prerequisite ('Requires administrator access to the organisation'), which helps an agent decide whether it can call this at all. However, it never contrasts with adjacent tools such as machship_get_identity for a single record or machship_get_organisation_links, so the when-to-choose guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identityGet IdentityB
Read-onlyIdempotent

Get the identity with the given ID.

Args:

  • id (number): Identity ID

NameRequiredDescriptionDefault
idYesIdentity ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, idempotent, non-destructive, open-world operation. The description adds no behavioral context beyond a basic retrieval statement, such as not-found behavior, permissions, or external-service considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loads the operation and lookup key. However, the Args block redundantly repeats structured schema information rather than adding useful detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read with comprehensive annotations and an output schema, this is sufficient to invoke the tool correctly. Explicit routing to the plural identity-list tool and brief error or ID-sourcing context would make it more complete, but these are modest gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema fully documents the single required integer ID, so the baseline of 3 applies. The Args section merely repeats 'Identity ID' and adds no format, sourcing, or validation guidance; calling it a number is also less precise than the schema's integer type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: retrieving one identity by its ID. This implicitly distinguishes it from list and provider-related siblings, but it does not explicitly clarify the identity domain or name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with the given ID' implies that the tool is appropriate when an identity ID is already known. There is no explicit guidance on when to use machship_get_identities instead, how to obtain an ID, or when this lookup is unsuitable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identity_providerGet Identity ProviderB
Read-onlyIdempotent

Get a specific identity provider by ID.

Args:

  • identityProviderId (number): Identity provider ID

NameRequiredDescriptionDefault
identityProviderIdYesIdentity provider ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on behavior for a missing or invalid ID, whether the provider is scoped to the caller's organisation, or what a null result means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence states the operation, and it is short with no filler. The trailing Args block duplicates the schema and is technically redundant, which is the only thing keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter read whose annotations and output schema carry the behavioral and return-value burden. The description is sufficient for an agent to invoke it correctly, with only minor gaps around invalid-ID handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is already documented as 'Identity provider ID' with a positive-integer constraint. The description's Args block restates the schema verbatim, adding no format, source, or discovery guidance (e.g., where to obtain the ID). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a specific identity provider by ID'), which is enough to separate it from the plural/list siblings such as machship_get_identity_providers_for_company. It stops short of naming those siblings explicitly, so it lands at a solid 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over machship_get_identity_providers_for_company, _for_logged_user, or _for_organisation, nor any preconditions noted. The 'by ID' phrasing implies a single-record lookup, but the agent must infer the routing decision entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identity_providers_for_companyGet Identity Providers for CompanyA
Read-onlyIdempotent

Get all identity providers associated with a specific company.

Args:

  • companyId (number): Company ID

NameRequiredDescriptionDefault
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without description help. The description adds only the word 'all', hinting results are unpaginated/complete, and says nothing about permission requirements to read another company's providers or about failure when the company is unknown. That is modest added context against a low bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, short, and waste-free. The trailing Args block duplicates the schema and could be dropped without loss, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter read tool with full annotation coverage, 100% schema description coverage, and an output schema that documents the return value. The description states what is fetched and for which entity, so nothing essential is missing — the only gap, sibling disambiguation, is a scoring issue under purpose clarity rather than a completeness failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single companyId parameter is fully documented in the schema with type and bounds. The description merely restates 'companyId (number): Company ID' in an Args block, adding no meaning such as where to obtain the ID or whether other identifiers are accepted; baseline 3 applies when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get all identity providers') and scopes it to 'a specific company', so the purpose is unambiguous. However, it never distinguishes itself from the closely named siblings machship_get_identity_providers_for_organisation, machship_get_identity_providers_for_logged_user, or machship_get_identity_provider, leaving an agent to infer the difference from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the 'associated with a specific company' scoping — an agent can guess this is the tool for company-scoped lookups rather than organisation- or logged-user-scoped ones. There is no explicit when-to-use statement, no exclusion of the sibling variants, and no note on when a companyId would be unavailable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identity_providers_for_logged_userGet Identity Providers for Logged-in UserA
Read-onlyIdempotent

Returns all identity providers for the current user's organisation. No parameters required.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare read-only, idempotent, non-destructive, and open-world behavior, so the description does not need to restate safety. It adds that all providers are returned and that the operation takes no parameters, but does not mention pagination, ordering, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and only two sentences long. The second sentence is mildly redundant with the empty input schema, but it usefully confirms that no inputs are needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only getter with an output schema and safety annotations, the description is largely complete. Minor gaps remain around whether 'all' includes disabled providers and how the result relates to the company-scoped sibling, but these are not critical for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema itself is complete and the baseline is 4. The description correctly reinforces that no parameters are required, though it adds no further input semantics because none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns all identity providers, scoped to the current user's organisation. That scope helps distinguish it from siblings such as get_identity_providers_for_company or get_identity_providers_for_organisation, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope 'for the current user's organisation' implies when the tool is appropriate, and 'No parameters required' clarifies there are no prerequisites. However, it does not explicitly say when to choose this over the company- or organisation-scoped provider siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_identity_providers_for_organisationGet Identity Providers for OrganisationC
Read-onlyIdempotent

Returns all identity providers for the specified organisation.

Args:

  • organisationId (number): Organisation ID

NameRequiredDescriptionDefault
organisationIdYesOrganisation ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds nothing behavioral beyond restating the operation: no indication of pagination, result size, ordering, or authorisation scope (e.g. whether the caller must belong to the organisation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The intent is front-loaded in a single sentence with no filler. The Args block is redundant with the schema but is short enough not to harm usability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the tool is a simple one-parameter read. What is missing is disambiguation from the company-scoped and logged-user-scoped siblings, which is the main thing an agent needs in this cluster.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single organisationId parameter is fully documented in the schema. The description's Args block merely repeats that text, adding no format, source, or constraint information beyond it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns all identity providers for the specified organisation') with the scoping entity named. It does not, however, distinguish itself from the closely-named siblings machship_get_identity_providers_for_company and machship_get_identity_providers_for_logged_user, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no mention of alternatives. Given three near-identical 'get identity providers for X' variants in the sibling list, the absence of any routing signal is a meaningful gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_invoice_by_document_numberGet Financial Invoice by Document NumberB
Read-onlyIdempotent

Returns a specific financial invoice by document number, with optional PDF download.

Args:

  • documentNumber (string): Invoice document number

  • returnPdfFileBytes (boolean, optional): Include PDF as base64 bytes in response

NameRequiredDescriptionDefault
documentNumberYesInvoice document number
returnPdfFileBytesNoInclude PDF as base64 bytes

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the notable behavioral detail that the call can embed a PDF as base64 bytes, but does not flag the resulting payload size or what happens when the document number is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence states the operation and the optional PDF behavior, followed by a short Args list. The Args block is somewhat redundant with the fully documented schema, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (two params) and has an output schema, so return values need not be described. However, with many invoice-adjacent siblings in the namespace, the definition omits routing guidance and error behavior, leaving real gaps for an agent choosing between invoice tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, and the description's Args block largely restates them. It adds no extra semantics such as where the document number originates or what happens if returnPdfFileBytes is omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a specific financial invoice') plus the lookup key ('by document number'), which is enough to distinguish it from list-style siblings like machship_get_posted_invoices or machship_get_carrier_invoices. It falls short of 5 because it never names those siblings explicitly as the alternative for listing invoices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus the other invoice-related siblings, nor any prerequisite (e.g., invoice must already exist / be posted). Usage is only implied by 'by document number'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_itemGet Company ItemA
Read-onlyIdempotent

Returns a single saved item (product/SKU) with its dimensions by ID.

Args:

  • id (number): Item ID

NameRequiredDescriptionDefault
idYesItem ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds only that the return includes dimensions; it says nothing about what happens with an unknown or deleted ID, or whether company scoping applies to the lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient. The trailing Args block is redundant with a fully documented one-parameter schema, which costs a little but does not obscure the main statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter read tool with an output schema and full annotations, so the description does not need to explain return values. The only substantive gap is not routing the agent among the several other item-retrieval siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required integer 'id' already documented as 'Item ID'. The description's Args block restates that verbatim, adding no format, range, or cross-reference meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: returns a single saved item (product/SKU) with its dimensions by ID. The word 'single' plus 'by ID' implicitly separates it from the list-shaped siblings machship_get_items and machship_get_items_by_skus, though it never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the 'single ... by ID' phrasing. The description never says when to prefer this over machship_get_item_by_sku or machship_get_item_complex, which are the obvious alternatives in the sibling list, and gives no preconditions or failure guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_by_skuGet Company Item by SKUB
Read-onlyIdempotent

Returns a saved item matching the given SKU for a company.

Args:

  • companyId (number): Company ID

  • sku (string): Product SKU code

NameRequiredDescriptionDefault
skuYesProduct SKU
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and repeatability profile is fully covered. The description adds only that the item is "saved" and scoped to a company; it says nothing about what happens when no SKU matches (empty result vs error) or about authentication scope, which would be the meaningful additions here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and earns its place, and the Args block is short. It is mildly redundant with the schema, but nothing is padded or confusing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter getter with an output schema and full annotations, the description is adequate — the response shape need not be explained. What's missing is the not-found behavior and any routing hint among the many item-lookup siblings, which matter given how crowded that namespace is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's Args block simply restates the parameter names, types and one-line meanings already present in the schema. Baseline 3 applies since the schema does all the work and no extra semantics (format of SKU, companyId provenance) are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Returns a saved item") plus the lookup key and scope ("matching the given SKU for a company"), which is clear on its own. However, it never differentiates itself from the many close siblings — machship_get_items_by_skus (batch), machship_get_item_complex_by_sku, or machship_get_item — so an agent must infer that this is the single, simple item lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no stated exclusions, and no reference to alternatives. The description doesn't say whether to prefer this over get_item_complex_by_sku when richer item data is needed, or over get_items_by_skus when multiple SKUs are involved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_complexGet Complex Company ItemA
Read-onlyIdempotent

Returns a single complex item (with detailed dimensions/packaging data) by ID.

Args:

  • id (number): Item ID

NameRequiredDescriptionDefault
idYesItem ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is fully covered. The description adds only that the payload carries detailed dimensions/packaging data — useful context, but no mention of not-found behavior, permissions, or lookup scope, which is the remaining gap for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus a compact args block; the distinguishing detail (dimensions/packaging) is front-loaded. The Args line duplicates the schema but is brief enough not to harm the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations are rich, so the description need not explain return shape; it just needs to say what is fetched and how it is keyed, which it does. The only shortfall is the absence of any differentiation from the SKU-based sibling, which an agent scanning item tools would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required integer id with constraints (exclusiveMinimum, maximum) documented in the schema. The description's 'id (number): Item ID' adds nothing beyond it, but with one fully documented parameter the baseline of 3 is comfortably met and slightly exceeded by the framing of the id as the item identity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a single complex item ... by ID') and the parenthetical 'with detailed dimensions/packaging data' distinguishes it from the plain machship_get_item. It stops short of naming the closest sibling (machship_get_item_complex_by_sku), so an agent must infer the retrieval-key difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the phrase 'complex item (with detailed dimensions/packaging data)' hints that this is the choice when full packaging detail is needed rather than the lean machship_get_item. There is no explicit when-to-use, when-not, or alternative routing against the many item siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_complex_by_skuGet Complex Company Item by SKUA
Read-onlyIdempotent

Returns a complex item (detailed dimensions) by SKU for a company.

Args:

  • companyId (number): Company ID

  • sku (string): Product SKU code

NameRequiredDescriptionDefault
skuYesProduct SKU
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is fully covered. The description adds only that the returned item carries detailed dimension data; it says nothing about not-found behavior or cross-company lookup failures, which would be the useful extra context here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose sentence is front-loaded and unambiguous, and the whole definition is two short lines. The trailing Args block duplicates schema information and is the only wasted content, but it is small.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes two required scalars, has a full output schema, and carries annotations that cover safety semantics, so the description does not need to explain return values. It is nearly complete; only the not-found/empty-result behavior for an unmatched SKU is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both companyId and sku documented in the schema itself. The Args block restates those same two fields without adding format, validation, or sourcing guidance, so it meets but does not exceed the baseline for a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Returns a complex item"), the lookup key (by SKU), and the scope (for a company). The parenthetical "(detailed dimensions)" signals how it differs from the plainer item lookups in the sibling list such as machship_get_item_by_sku, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the right call when it needs dimension detail rather than a basic item record, but the description never states when to prefer it over machship_get_item_by_sku, machship_get_item_complex, or machship_get_items_complex. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_label_pdfGet Item Label PDFB
Read-onlyIdempotent

Returns item/package labels for a consignment as a PDF. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

  • printA4 (boolean, optional): Print in A4 format (default: label-size)

NameRequiredDescriptionDefault
printA4NoPrint in A4 format
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds that the payload is a base64 PDF blob and that contentType is derived from the response header, which is useful runtime context, but says nothing about size limits, auth requirements, or whether all items in the consignment are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, followed by return shape and an Args block; no filler sentences. The Args list largely restates the schema, which is mild redundancy but keeps the definition self-contained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Purpose, parameters and a return shape are covered, and an output schema exists. However, for a tool with multiple ambiguous label-related siblings, the missing routing guidance leaves a real gap for an agent choosing among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by disclosing that printA4 defaults to 'label-size' when omitted, which is real semantic information an agent needs to reason about the output dimensions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns item/package labels for a consignment as a PDF'), which is clearly distinct from a consignment-level label. It does not name the closely related siblings (machship_get_consignment_label_pdf, machship_get_item_labels_zip, machship_get_item_pdf_file_info), so the differentiation is left to the 'item/package' vs 'consignment' wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. With several near neighbours in the sibling list (item labels as a ZIP, item PDF file info, consignment label PDF, return item PDFs for consignments), the agent gets no signal about which one to pick for a given need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_labels_zipGet Item Labels ZIP (Batch)A
Read-onlyIdempotent

Gets item labels as a zip file for up to 40 consignments. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentIds (number[]): Consignment IDs (max 40)

  • printA4 (boolean, optional): Print in A4 format

  • singlePdf (boolean, optional): Combine all labels into a single PDF inside the zip

NameRequiredDescriptionDefault
printA4NoPrint in A4 format
singlePdfNoCombine into single PDF
consignmentIdsYesConsignment IDs (max 40)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds real context beyond that: the hard 40-consignment cap, the encoded-file return shape, and the note that contentType is sourced from the response header rather than derived from the payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation and its batch limit, followed by return shape and a compact arg list. Structure is clean and scannable; the only waste is repeating parameter descriptions that the schema already carries verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only retrieval tool with full schema coverage, rich annotations, and an output schema, this covers what an agent needs: the batch limit, the file/zip nature, and how the two flags affect packaging. Nothing essential is missing, though a pointer to the single-consignment alternative would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the schema and the description's arg list largely restates them. The one piece of added meaning is that singlePdf combines labels "inside the zip", clarifying the interaction between the two output-shaping flags, but that is a marginal gain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Gets item labels as a zip file") and pins down the scope (batch of up to 40 consignments) plus the output format. This cleanly separates it from the single-label siblings such as machship_get_item_label_pdf and machship_get_consignment_label_pdf without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The batch and zip framing implies when the tool is appropriate, but the description never explicitly says to use it for multi-consignment retrieval instead of the single-label or PDF-file-info siblings. No exclusions or prerequisites are given, so the routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_item_pdf_file_infoGet Item Label PDF File InfoA
Read-onlyIdempotent

Returns the item/package label PDF as JSON. object.content holds the file as base64, with object.fileName and object.contentType.

Args:

  • consignmentId (number): Consignment ID

  • printA4 (boolean, optional): Whether the label is in A4 format

NameRequiredDescriptionDefault
printA4NoA4 format flag
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuine behavioral value beyond that by disclosing the response contract: base64 content in object.content with fileName and contentType. It stops short of saying whether one label or multiple item labels come back for a consignment, and says nothing about payload size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The return-shape sentence is front-loaded and high value, and the whole description is short. The Args list duplicates structured schema data and could be dropped without loss, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with full schema coverage and an output schema, the description covers what an agent needs to call it and interpret the payload. The remaining gap is disambiguation from the many adjacent label/PDF tools in the sibling list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema; the description's Args block largely restates them. The only small addition is clarifying printA4 as 'whether the label is in A4 format,' which is marginally more informative than the schema's 'A4 format flag'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Returns the item/package label PDF as JSON' — and immediately clarifies the payload shape (base64 in object.content plus fileName/contentType). The 'as JSON' framing hints at the distinction from raw-PDF siblings like machship_get_item_label_pdf, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the return-format framing: an agent can infer this is the variant to call when it wants file metadata/base64 rather than a binary stream or a zip bundle. There is no explicit statement of when to choose this over machship_get_item_label_pdf, machship_get_item_labels_zip, or machship_return_item_pdfs_for_consignments.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_itemsGet All Company ItemsA
Read-onlyIdempotent

Returns a paginated list of saved items for a company (max 200 per request).

Args:

  • companyId (number): Company ID

  • startIndex (number, optional): Pagination start index (default 1)

  • retrieveSize (number, optional): Number of items to retrieve (default 200, max 200)

NameRequiredDescriptionDefault
companyIdYesCompany ID
startIndexNoPagination start index
retrieveSizeNoItems to retrieve (max 200)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish a read-only, idempotent, non-destructive external operation. The description adds useful pagination behavior and the 200-item request cap, but provides no further context such as result ordering or how to determine whether additional pages remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and page-size limit are front-loaded in a compact opening sentence. The argument list is readable but largely redundant with the input schema, preventing a top conciseness score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read operation with complete input documentation, an output schema, and safety annotations, this is sufficient for basic invocation. Its main completeness gap is the lack of differentiation from closely related item tools, with pagination traversal guidance a secondary omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args section restates the parameter names, defaults, and maximum already present in the schema without adding meaning such as how companyId is obtained or how startIndex should advance between pages.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb, resource, and scope: returning a paginated list of saved items for a company. It does not distinguish this company-wide listing from siblings such as machship_get_items_complex, machship_get_items_by_skus, or machship_get_item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Company-scoped, paginated listing implies when the tool is useful, but there is no explicit selection guidance. Given the many closely related item-retrieval siblings, the description should explain when to use this simpler list operation instead of SKU-based, single-item, or complex-item alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_items_by_skusGet Company Items by SKUs (Batch)A
Read-onlyIdempotent

Returns a list of saved items matching any of the supplied SKUs (standard items only, max 100 SKUs). SKUs that don't match any item are silently omitted — compare returned Sku values against your input to detect misses.

Args:

  • companyId (number): Company ID

  • skus (string[]): Array of SKU codes to look up (max 100)

NameRequiredDescriptionDefault
skusYesSKU codes to look up (max 100)
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, open-world semantics. The description adds genuinely non-obvious behavior: unmatched SKUs are silently omitted rather than erroring, and the caller must diff returned Sku values against the input to detect misses. The 100-SKU cap and standard-items-only restriction are also disclosed. It does not state what happens on an empty result set versus an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the return behavior and the silent-omission caveat, which are the highest-value sentences. The trailing Args block duplicates schema text and could be dropped, but overall there is little wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return shape, and it instead spends its space on the one thing the schema cannot convey: that misses are silent and how to detect them. For a two-parameter read tool this covers everything an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description adds match-any (OR) semantics for the skus array that the schema does not express. The inline Args block largely restates the schema's own descriptions of companyId and skus, providing little beyond the limit already encoded in maxItems.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource with scope qualifiers: batch lookup of 'saved items matching any of the supplied SKUs', restricted to 'standard items only'. The batch/any-of framing and the 'standard items only' restriction distinguish it reasonably from single-lookup siblings, though it never names machship_get_item_by_sku or machship_get_items_complex explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The batch-with-max-100 nature implies when to prefer this over a single-SKU lookup, but that inference is left to the agent. There is no explicit guidance on when to use machship_get_item_by_sku, machship_get_items, or machship_get_items_complex instead, and no stated prerequisites beyond the required companyId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_items_complexGet All Complex Company ItemsA
Read-onlyIdempotent

Returns a paginated list of complex items for a company (max 200 per request).

Args:

  • companyId (number): Company ID

  • startIndex (number, optional): Pagination start index (default 1)

  • retrieveSize (number, optional): Number of items to retrieve (default 200, max 200)

NameRequiredDescriptionDefault
companyIdYesCompany ID
startIndexNoPagination start index
retrieveSizeNoItems to retrieve (max 200)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds genuinely new operational facts not in the annotations: a hard 200-item cap per request and the pagination scheme's existence. It stops short of stating what an agent should do when a company exceeds 200 items (loop until a short page?) or any rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is front-loaded with the verb, resource, scope, and cap, which is exactly what an agent needs first. The Args block is largely redundant with the structured schema, which is wasted space, though it does not obscure the core statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations are rich, so the description does not need to explain return shapes. For a simple three-parameter list tool it is close to sufficient; the main remaining gap is that 'complex item' is domain jargon left undefined and there is no guidance on paging through results when the total exceeds the 200 cap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents companyId, startIndex, and retrieveSize including defaults and the max of 200. The Args block restates those descriptions nearly verbatim and adds no new meaning such as valid ranges, index base semantics beyond the default, or ordering of results. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a paginated list of complex items') scoped to a company, which implicitly separates it from the plain machship_get_items sibling and from the single-item machship_get_item_complex. It never names those siblings explicitly, so differentiation relies on the reader knowing what 'complex items' means in this domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The paginated-list framing implies the use case (enumerate all complex items for a company), but there is no explicit when-to-use/when-not guidance and no mention of when to prefer machship_get_item_complex, machship_get_items_complex_by_sku-style lookups, or machship_get_items. Guidance is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_linked_from_organisationsGet Linked-From OrganisationsB
Read-onlyIdempotent

Returns all organisations that have linked INTO this organisation (suppliers, partners).

Args:

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • sort (string, optional): Sort field

  • searchText (string, optional): Filter by name

NameRequiredDescriptionDefault
sortNoSort field name
searchTextNoFilter results by organisation name
startIndexNoPagination start index
retrieveSizeNoNumber of results to return (max 100)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the full safety profile (readOnlyHint, idempotentHint, non-destructive, open world), so the description only needs to add context beyond that. It adds nothing about result volume, ordering, pagination behavior with startIndex/retrieveSize, or whether an empty result means no links versus insufficient permissions, which are the practical concerns for a paginated read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single explanatory sentence is well-formed and front-loaded, but the four-line Args block duplicates the input schema verbatim and consumes roughly two-thirds of the description without adding value. Stripping that would leave a tight, effective definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the four optional parameters are simple. However, given there are four closely related organisation-link siblings, the definition should explicitly situate itself among them; the "linked INTO" phrasing points in the right direction but is easy to conflate with machship_get_linked_to_organisations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args block merely restates the schema and actually loses information the schema provides (the max of 100 on retrieveSize and the minimum of 1), adding no syntax, format, or default guidance for sort or searchText.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource and crucially disambiguates the direction ("linked INTO this organisation"), with a parenthetical naming what those organisations are (suppliers, partners). That direction is the one thing distinguishing it from the sibling machship_get_linked_to_organisations, but the sibling is never named, so the agent must infer the contrast rather than be told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The direction clarification implies the use case (finding suppliers/partners that have linked in) but there is no explicit statement of when to use this instead of machship_get_linked_to_organisations, machship_get_organisation_links, or machship_get_linked_to_organisations. No prerequisites, no exclusions, and no note that mutating siblings like machship_add_organisation_link or machship_remove_organisation_link are the counterpart operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_linked_to_organisationsGet Linked-To OrganisationsB
Read-onlyIdempotent

Returns all organisations this organisation has linked TO (customers, subsidiaries).

Args:

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • sort (string, optional): Sort field

  • searchText (string, optional): Filter by name

NameRequiredDescriptionDefault
sortNoSort field name
searchTextNoFilter results by organisation name
startIndexNoPagination start index
retrieveSizeNoNumber of results to return (max 100)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds only the domain meaning of 'linked TO' (customers, subsidiaries); it says nothing about pagination behavior, default page size, ordering, or whether the link set spans the whole organisation hierarchy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is efficient and front-loaded, but the four-line Args block duplicates information already present in the input schema with zero added value, making the definition longer than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the safety profile is covered by annotations. However, for a tool sitting in a cluster of near-identically named organisation-link tools, the description leaves the key selection question unresolved, which is the main completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented, including the max-100 bound on retrieveSize and the minimum on startIndex. The Args block merely restates the schema and adds no syntax, default values, or filtering semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with a directional qualifier: organisations this organisation has linked TO, exemplified as customers and subsidiaries. That direction distinguishes it in principle from machship_get_linked_from_organisations, but the description never names that sibling or machship_get_organisation_links, so the discrimination must be inferred from the wording alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. With four closely related siblings (get_linked_from_organisations, get_organisation_links, add_organisation_link, remove_organisation_link) in the same domain, an agent gets no explicit routing rule for choosing this read tool over the alternative link-listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_locations_exactGet Locations (Exact Match)B
Read-onlyIdempotent

Returns locations that exactly match provided suburb/postcode combinations. Supports multiple location lookups in one call.

Args:

  • locations (array): Array of suburb/postcode pairs to look up exactly

NameRequiredDescriptionDefault
locationsYesSuburb/postcode pairs for exact matching

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and repeatability are covered. The description adds that lookups are exact-match only and can be batched, but says nothing about behavior when a pair yields no match, partial matches, or result ordering/limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the purpose, and the Args block is brief. The Args block largely duplicates the schema and could be dropped, but nothing is verbose or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, full schema coverage and an output schema, the definition is adequate for a simple read tool. It still leaves gaps an agent would care about: what an empty result means, whether matching is case-sensitive, and when to prefer the search or with-options siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the nested suburb/postcode fields are individually documented, so the schema carries the burden. The description's Args section merely restates the array-of-pairs shape without adding format rules (e.g., postcode string normalization, case sensitivity of suburb names).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Returns locations') plus a discriminating qualifier ('exactly match provided suburb/postcode combinations'), which separates it from fuzzy-search siblings. It does not name machship_search_locations or machship_get_locations_with_options, so the distinction is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'exact match' wording implies the tool should be used when suburb and postcode are already known precisely, and 'supports multiple location lookups in one call' hints at batching. However, there is no explicit when-to-use/when-not statement and no routing to the sibling location tools, leaving the agent to infer the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_locations_with_optionsGet Locations with Search OptionsC
Read-onlyIdempotent

Returns locations with additional search options/filters applied.

Args:

  • s (string): Search string

  • options (object): Additional search options (country, state, etc.)

NameRequiredDescriptionDefault
sYesSearch string
optionsNoAdditional location search options

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds almost nothing beyond that: no indication of result caps, pagination, how the free-form options are matched (fuzzy vs exact), or what happens when options is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose in one sentence. The following Args block largely duplicates the schema's own parameter descriptions, which is mild redundancy but not enough to hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description is not required to describe the response shape. However, for a tool with a free-form nested options object sitting alongside two sibling location tools, the description should say more about what options do and how it differs; that gap keeps it below 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters and the baseline is 3. The description does add a small amount of value by giving example option keys ('country, state, etc.'), but since options is an unconstrained additionalProperties object, this leaves the agent guessing which keys are actually honored.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb and resource are clear ('Returns locations'), but the differentiator — 'additional search options/filters applied' — merely restates the tool name and never explains what makes it distinct from siblings machship_search_locations and machship_get_locations_exact. An agent cannot tell which of the three location tools to pick from this text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no when-not-to-use, and no mention of the two sibling location lookups that would be the natural alternatives. The '(country, state, etc.)' hint implies a filtered lookup but stops short of saying when this is preferable to an exact or general search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_manifest_label_pdfGet Manifest Label PDFB
Read-onlyIdempotent

Returns the manifest document as a PDF by manifest ID. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • manifestId (number): Manifest ID

NameRequiredDescriptionDefault
manifestIdYesManifest ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is covered. The description adds genuine context by naming the return payload and noting that contentType originates from the response header, but it says nothing about size limits, expiry of the generated document, or whether repeated calls regenerate the PDF.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and return shape in two short sentences, which is effective. The trailing Args block is largely redundant with the schema and could be dropped, but it does not obscure the main statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't enumerate everything returned, and the safety profile is annotation-covered. Still missing is the differentiation from sibling PDF/file-info tools, which matters given how many near-identical manifest PDF endpoints exist in this catalogue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter and 100% schema description coverage, the schema already fully documents manifestId. The 'Args' block merely restates '(number): Manifest ID' and adds no constraints or sourcing guidance beyond what the schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the manifest document as a PDF') scoped by manifest ID, which is clear on its own. It does not, however, distinguish itself from close siblings such as machship_get_manifest_pdf_file_info (file metadata) or machship_get_manifest_label_pdf_by_consignment, so an agent must still infer which of the three to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all — nothing says to call this when you need the actual PDF bytes rather than the metadata from machship_get_manifest_pdf_file_info, or that the manifest must already exist. The agent is left to guess among several manifest/PDF siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_manifest_label_pdf_by_consignmentGet Manifest Label PDF by ConsignmentA
Read-onlyIdempotent

Returns the manifest PDF for the manifest associated with a given consignment. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds that contentType is taken from the response header, which is genuinely useful beyond the schema, but it omits the important failure mode: what happens if the consignment is not yet manifested and therefore has no manifest PDF, and whether this returns an error or empty payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and return shape are front-loaded in the first two sentences, and the description is short with no filler. The trailing Args block duplicates the schema and could be dropped, which is the only waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema, the description covers purpose, scoping, and response fields adequately. The remaining gap is the pre-condition/failure case (consignment must be manifested) and disambiguation from the manifest-ID sibling, both of which an agent would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema coverage, so the schema already fully documents consignmentId (integer, positive). The 'Args' block merely restates 'Consignment ID' without adding format, sourcing, or validation meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (returns the manifest PDF) and, crucially, the access path: the manifest 'associated with a given consignment' rather than a manifest ID. That implicitly separates it from siblings like machship_get_manifest_label_pdf, but no sibling is named explicitly, so the differentiation requires the agent to infer the lookup key difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the 'associated with a given consignment' phrasing — use this when you have a consignment ID and not a manifest ID. There is no explicit when-to-use, when-not-to-use, or named alternative (e.g. machship_get_manifest_label_pdf or machship_get_manifest_pdf_file_info for metadata-only), so the agent must infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_manifest_pdf_file_infoGet Manifest PDF File InfoB
Read-onlyIdempotent

Returns the manifest PDF as JSON. object.content holds the file as base64, with object.fileName and object.contentType.

Args:

  • manifestId (number): Manifest ID

NameRequiredDescriptionDefault
manifestIdYesManifest ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful encoding detail (base64 content plus fileName and contentType), though with an output schema present this is somewhat redundant. No auth requirements, size limits, or error behavior are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the return format. The Args section duplicates the schema but is compact; no sentence is wasteful, though it could be trimmed further.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with annotations and an output schema, the description covers the essentials. The main gap is sibling differentiation: it does not clarify when to choose this base64 JSON variant over the raw manifest PDF tools, which is important given the crowded sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single manifestId parameter is fully documented in the schema. The description's 'manifestId (number): Manifest ID' restates the schema without adding format, validation, or sourcing guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns the manifest PDF as JSON') and explains the payload shape (base64 content, fileName, contentType). It is clear what the tool produces, but it does not distinguish itself from siblings such as machship_get_manifest_label_pdf or machship_get_consignment_pdf_file_info, leaving ambiguity about which 'manifest PDF' this refers to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the direct PDF-returning siblings. An agent must infer that this is the JSON/base64 variant rather than the raw PDF variant. No prerequisites, exclusions, or alternative tools are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_manifestsGet ManifestsA
Read-onlyIdempotent

Returns a paginated list of manifests for a company (max 200 per call). A manifest represents a carrier pickup booking for a group of consignments.

Args:

  • companyId (number, optional): Company ID

  • startIndex (number, optional): Pagination start index (default 1)

  • retrieveSize (number, optional): Number to retrieve (default 40, max 200)

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

  • startDate / endDate (string, optional): Date range filter (ISO 8601)

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Array of manifest summary objects: { "id": number, "manifestDate": string, "carrierName": string, "status": string, "consignmentCount": number }

Examples:

  • Use when: "List today's manifests" -> set startDate/endDate to today

  • Use when: You need a manifestId to download a manifest PDF

NameRequiredDescriptionDefault
endDateNoFilter to date (ISO 8601)
carrierIdNoFilter by carrier ID
companyIdNoCompany ID
startDateNoFilter from date (ISO 8601)
startIndexNoPagination start index (default 1)
retrieveSizeNoNumber of results to return (default 40, max 200)
response_formatNoOutput format: 'json' (default) or 'markdown'json
includeChildCompaniesNoInclude manifests from child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds non-obvious operational facts: hard cap of 200 per call with a default of 40, default startIndex of 1, and the semantic meaning of a manifest. It stops short of mentioning authorization needs, empty-result behaviour, or date-range limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded opening sentence with scope and page cap, then Args/Returns/Examples — a predictable, scannable structure. The Args section duplicates the schema descriptions word-for-word, which is the main element that does not earn its place, but overall length is appropriate for an 8-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still sketches the manifest summary fields (id, manifestDate, carrierName, status, consignmentCount), and it covers filtering, pagination, and output format. For a read-only list tool with zero required parameters, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the Args block largely restates the schema text verbatim (e.g., "Pagination start index (default 1)", "Number to retrieve (default 40, max 200)"), so little meaning is added beyond structured fields. The only marginal additions are the max-200-per-call cap highlighted up front and pairing startDate/endDate in one line; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns a paginated list of manifests"), scopes it to a company, and defines the domain object ("a carrier pickup booking for a group of consignments"). The purpose is unmistakably distinct from neighbours like machship_manifest_consignments or machship_get_manifest_label_pdf, and the closing example explicitly hands off to the PDF-download flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two "Use when" examples give concrete invocation contexts ("List today's manifests" → set startDate/endDate to today; "need a manifestId to download a manifest PDF"). That is a clear when-to-use signal, but there are no exclusions or named alternatives (e.g., how this differs from get_unmanifested_consignments or when to prefer manifest_consignments).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_mo41_document_pdfGet MO41 Document PDFA
Read-onlyIdempotent

Returns the MO41 document PDF for a consignment (used for specific carrier compliance documents). Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and an output schema exists, so restating the { fileBase64, contentType, sizeBytes } shape is largely redundant. The one genuinely additive note is that contentType is sourced from the response header, but nothing is said about failure when no MO41 exists or about payload size concerns for base64 content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose in the first sentence and short overall. The Args block duplicates the schema verbatim, which is dead weight, but the rest is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema and complete annotations, the description covers purpose, applicability, and return shape. The remaining gap is disambiguation from the _file_info and dangerous goods PDF siblings, which the agent is left to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description merely repeats 'consignmentId (number): Consignment ID' with no added meaning. Baseline 3 is appropriate since the schema already fully documents the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the MO41 document PDF for a consignment') plus a qualifier on when this document type applies. It does not differentiate itself from the closely related sibling machship_get_mo41_document_pdf_file_info, so an agent cannot tell from the description alone which of the two to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'used for specific carrier compliance documents' gives some context on applicability, but there is no explicit when-to-use/when-not guidance and no mention of the file_info sibling that returns metadata rather than the PDF itself. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_mo41_document_pdf_file_infoGet MO41 Document PDF File InfoA
Read-onlyIdempotent

Returns the MO41 document PDF as JSON. object.content holds the file as base64, with object.fileName and object.contentType.

Args:

  • consignmentId (number): Consignment ID

NameRequiredDescriptionDefault
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety needs no restating. The description adds real behavioral context beyond that: the response is JSON with base64 content plus fileName and contentType, which tells an agent it must decode before use. It stops short of noting size limits or error behavior for an invalid consignment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short blocks, front-loaded with the return shape and followed by a minimal Args list. The Args entry duplicates the schema verbatim and could be dropped, but there is no padding or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the description still usefully summarizes the payload fields, so an agent knows what to expect. For a single-parameter read tool the definition is nearly sufficient; the only real gap is the absence of disambiguation from the sibling get_mo41_document_pdf.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage ('Consignment ID'), and the Args block merely restates it. No added meaning such as whether the consignment must exist or be manifested is provided, which is the correct baseline for a fully documented one-param schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the MO41 document PDF') and clarifies that the result is JSON rather than raw bytes. It does not explicitly distinguish itself from the sibling machship_get_mo41_document_pdf, which is the obvious ambiguity an agent would face.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by disclosing that the payload is a base64-encoded JSON envelope, but it never says when to prefer this over machship_get_mo41_document_pdf or the other *_pdf_file_info tools. The choice is left to inference from the return shape.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_organisation_by_public_keyGet Organisation Details by Public KeyA
Read-onlyIdempotent

Validates a public key and returns the corresponding organisation details. Use this to verify a partner's public key before linking.

Args:

  • publicKey (string): Organisation public key to look up

NameRequiredDescriptionDefault
publicKeyYesOrganisation public key

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the useful framing that the call performs validation as well as retrieval, but never says what happens when the key is invalid or unknown (error vs empty result) — the main behavioral question for a validation call. With an output schema present, missing return-shape detail is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences carry the substance efficiently. The trailing 'Args' section duplicates what the 100%-covered schema already says, which is minor waste but does not obscure the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with an output schema and full annotations, most structural burden is already met, so the description only needs to cover failure semantics and trust scope. It leaves both unaddressed — an openWorld call validating an external partner key would benefit from stating whether invalid keys raise an error and whether the returned details are public-safe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter at 100% schema description coverage, so the schema already fully documents publicKey. The description's 'Args' block merely restates 'Organisation public key to look up' with no format, length, or sourcing guidance (e.g. where a partner's key comes from). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Validates a public key and returns the corresponding organisation details'), and the lookup direction (key -> organisation) distinguishes it from the sibling machship_get_organisation_public_key, which goes the other way. It stops short of naming that sibling explicitly, so sibling differentiation is left partly to inference from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to verify a partner's public key before linking' states a concrete precondition scenario and implicitly routes the agent away from machship_add_organisation_link and machship_reset_organisation_public_key. There is no explicit when-not clause or named alternative, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_organisation_public_keyGet Organisation Public KeyA
Read-onlyIdempotent

Returns the public key for an organisation, used to set up inter-organisation links.

Args:

  • id (number, optional): Organisation ID (defaults to current org)

NameRequiredDescriptionDefault
idNoOrganisation ID (optional)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description contributes one genuinely useful behavioral fact — that omitting id falls back to the current organisation — but says nothing about key sensitivity, sharing, or failure modes for an invalid id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A short, front-loaded purpose sentence followed by the single parameter note; nothing extraneous. The args block partially duplicates the schema, but its inclusion of the default rule justifies the repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read tool with an output schema, the definition covers purpose, default behavior and the linking context. The only minor gap is that it does not address what happens if the org has no key or the id is invalid, which an agent might want to anticipate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by disclosing the default behavior ("defaults to current org"), which the schema's "Organisation ID (optional)" does not state. That default is exactly the kind of semantic an agent needs to decide whether to pass id at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns the public key for an organisation") plus the business purpose (setting up inter-organisation links). This separates it reasonably well from siblings like machship_reset_organisation_public_key and machship_get_organisation_by_public_key, though it does not name those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "used to set up inter-organisation links" implies the workflow context in which to call it, which is more than nothing. However, it gives no explicit when-to-use boundaries, no mention of the related link/reset/key-lookup tools, and no prerequisites for the linking flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_pending_consignmentGet Pending ConsignmentA
Read-onlyIdempotent

Returns details for a single pending consignment by ID.

Args:

  • id (number): Pending consignment ID

NameRequiredDescriptionDefault
idYesPending consignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that this returns one pending consignment by ID and does not add further behavioral context such as error behavior or pagination, which is acceptable here but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and short: the core behavior is stated in the first sentence. The following Args block mostly repeats the schema's existing id documentation, which is minor redundancy rather than harmful verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-record getter with an output schema, full parameter description coverage, and clear read-only annotations, the definition is largely complete. The main missing piece is sibling differentiation, especially versus plural pending-consignment lookups and get_consignment_by_pending_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already defines the single required id parameter with type integer and a positive constraint. The description repeats the parameter as 'id (number)' without adding format or lookup semantics beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it 'Returns details for a single pending consignment by ID.' This is clear, but it does not explicitly distinguish itself from close siblings such as machship_get_pending_consignments_by_ids or machship_get_consignment_by_pending_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ID' implies that this tool should be used when a single pending consignment ID is known. However, the description gives no explicit when-to-use guidance, no exclusions, and no comparison to the plural or pending-ID-related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_pending_consignments_by_idsGet Pending Consignments by IDs (Batch)B
Read-onlyIdempotent

Returns details for multiple pending consignments by IDs (max 10 per request).

Args:

  • ids (number[]): Pending consignment IDs (max 10)

NameRequiredDescriptionDefault
idsYesPending consignment IDs (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety and side-effect profile is fully covered without the description. The description adds only the 'max 10 per request' batch cap, which is already encoded as maxItems=10 in the schema; it says nothing about partial results, missing/invalid IDs, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and short, with no wasted prose. The trailing 'Args:' block is largely redundant with the schema and slightly inflates the definition, but overall it is tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter at full schema coverage, an output schema present, and annotations covering read-only/idempotent behavior, an agent has everything needed to invoke this correctly. The description does not need to explain return values or pagination here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one parameter, whose type, minimum, and maxItems are all declared in the schema. The description's 'ids (number[]): Pending consignment IDs (max 10)' restates the schema verbatim without adding format or selection meaning, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — returns details for multiple pending consignments by ID — so an agent can tell this is a batched ID lookup rather than a single fetch (machship_get_pending_consignment) or a reference search. It does not explicitly name those siblings, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The word 'multiple' hints at batching, but the description never says to prefer machship_get_pending_consignment for a single ID or machship_get_pending_consignments_by_reference1/2 when only references are known, leaving the agent to infer routing from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_pending_consignments_by_reference1Get Pending Consignments by Reference 1B
Read-onlyIdempotent

Finds pending consignments by Reference 1 field. Max 10 per request.

Args:

  • references (string[]): Reference 1 values (max 10)

NameRequiredDescriptionDefault
referencesYesReference 1 values (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one genuinely useful constraint ('Max 10 per request'), but it does not say what happens when more than 10 references are supplied (error vs. truncation) or whether matching is exact or partial, and an output schema exists so return-shape disclosure isn't required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the 10-item limit are front-loaded in a single short sentence, and the document is brief. The trailing Args block largely duplicates the schema, which is minor waste but not damaging.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with rich annotations and an output schema, the definition covers the essentials plus the batch limit. It is still thin on edge behavior — no-match results, batch overflow, and matching semantics — which matter for an agent deciding how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema for 'references' already reads 'Reference 1 values (max 10)' — the description's Args block repeats this almost verbatim. No additional semantics (case sensitivity, whitespace handling, exact vs. fuzzy matching) are added, so the high-coverage baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Finds pending consignments') and names the lookup key ('Reference 1 field'), which distinguishes it from siblings such as machship_get_consignments_by_reference1 (non-pending) and machship_get_pending_consignments_by_reference2. It never explicitly contrasts with those siblings, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the name and the phrase 'Finds pending consignments by Reference 1 field'. There is no explicit when-to-use guidance, no mention of when to prefer get_pending_consignments_by_ids or the reference2 variant, and no statement about what to do if the caller has more than 10 references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_pending_consignments_by_reference2Get Pending Consignments by Reference 2B
Read-onlyIdempotent

Finds pending consignments by Reference 2 field. Max 10 per request.

Args:

  • references (string[]): Reference 2 values (max 10)

NameRequiredDescriptionDefault
referencesYesReference 2 values (max 10)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds one genuine behavioral fact beyond them: a hard cap of 10 references per request, which tells the agent to batch. It does not say whether matching is exact or partial/case-sensitive, or what happens when a reference is not found, which matters for a lookup keyed on a free-text field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence and the request cap follows immediately with no filler. The Args block duplicates the schema property description almost verbatim and is somewhat wasted space, but overall the text is short and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter, a full output schema, and rich annotations, so return values and safety need no explanation. What is missing is the matching behavior for Reference 2 and any note on partial results, which is the main thing an agent would need to interpret a returned set. Adequate but with a clear gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter is fully documented structurally. The description's parameter note ('Reference 2 values (max 10)') merely restates the schema's own text, adding no matching semantics such as case sensitivity or substring behavior. Baseline 3 applies when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Finds pending consignments by Reference 2 field.' The 'pending' qualifier is the key distinguisher from the sibling machship_get_consignments_by_reference2, and the by-reference-2 filter distinguishes it from machship_get_pending_consignments_by_ids and _by_reference1. It stops short of naming those siblings explicitly, so it is clear but not fully self-differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of when to prefer this over the non-pending reference-2 lookup or the by-ids variant, and no prerequisites (e.g. does the consignment need to be in a specific state to count as pending). In a sibling set with three near-identical pending-consignment lookups, that omission leaves the agent to infer the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_permanent_pickupsGet Permanent Pickups for Company LocationA
Read-onlyIdempotent

Gets all permanent scheduled pickups configured for a company location.

Args:

  • companyLocationId (number): Company location ID

NameRequiredDescriptionDefault
companyLocationIdYesCompany location ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide strong behavioral context, such as being read-only and idempotent. The description adds value by specifying that it retrieves *configured* schedules, which is useful domain context without being strictly necessary for safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise, presenting the core function in a single sentence. The inclusion of the required Args block is structured and efficient, with no unnecessary padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 parameter) and comprehensive annotations regarding safety, the description provides all necessary context for an AI agent to understand the tool's function and required inputs without further probing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for a single parameter. The description provides the required label and meaning ('Company location ID'), meeting the minimum viable definition when the input structure is fully mapped by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Gets'), the specific resource ('permanent scheduled pickups'), and the scope ('configured for a company location'). This makes it immediately identifiable as a retrieval tool focused on specific configurations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly defines what the tool retrieves. While it does not explicitly name the sibling tools (like 'add' or 'modify') that it is contrasted against, its singular focus on 'get' provides strong implicit guidance for when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_posted_invoicesGet Posted Financial InvoicesB
Read-onlyIdempotent

Returns posted financial invoices within an optional date range (max 100 per call).

Args:

  • startDate (string, optional): Start date filter (ISO 8601)

  • endDate (string, optional): End date filter (ISO 8601)

  • startIndex (number, optional): Pagination start index (default 1)

  • retrieveSize (number, optional): Number to retrieve (default 100, max 100)

NameRequiredDescriptionDefault
endDateNoEnd date filter (ISO 8601)
startDateNoStart date filter (ISO 8601)
startIndexNoPagination start index (default 1)
retrieveSizeNoNumber of results to return (default 100, max 100)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds operational behavior the annotations do not: a 100-per-call cap and pagination controls. It says nothing about default ordering, what 'posted' means in lifecycle terms, or whether date filters are inclusive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line summary is well front-loaded and earns its place. The Args block, however, is pure duplication of schema descriptions and consumes most of the description's length without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations are rich, so the burden is light, and the pagination cap is a genuinely useful addition. Still, for an open-world list tool with four sibling invoice tools, the absence of any disambiguation or result-ordering context leaves an agent under-informed about when to pick this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including defaults and bounds. The Args block restates the schema text nearly verbatim (it even omits the schema's maximum/minimum on retrieveSize) and adds no format or edge-case guidance such as inclusive-date semantics or how startIndex interacts with date filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns posted financial invoices') plus a scope constraint (optional date range, max 100 per call). It does not name or differentiate itself from near-siblings such as machship_get_carrier_invoices or machship_get_invoice_by_document_number, so an agent must infer which invoice surface it wants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and the crowded sibling set contains at least two other invoice retrieval tools. The description never indicates that this is for posted/financial invoices as opposed to carrier invoices or single-document lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_quoteGet QuoteA
Read-onlyIdempotent

Returns full details for a single quote by ID, including all carrier rate options.

Args:

  • id (number): Quote ID

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Full quote object with all carrier rate options, addresses, and item details.

Examples:

  • Use when: "Show me the full details for quote 456"

  • Use when: You have a quote ID and need the carrier rates to pick one for a consignment

NameRequiredDescriptionDefault
idYesQuote ID
response_formatNoOutput format: 'json' (default) or 'markdown'json

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the useful payload scope (carrier rate options, addresses, item details) but says nothing about behavior on an unknown/invalid ID or whether rate options can be stale.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then compact Args/Returns/Examples blocks. The Args section restates the schema and the Returns section restates what an output schema already covers, so a small amount of text doesn't earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema and rich annotations, the description covers purpose, inputs, and example triggers adequately. Only failure/error semantics are missing, which is a minor gap at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents both parameters including the enum default, so the Args section is largely repetition. It adds no extra meaning such as whether the ID must be an existing MachShip quote or what happens with a quote from another organisation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns full details for a single quote by ID') and scopes it to one record with 'including all carrier rate options', which separates it from list-oriented siblings like machship_get_quotes and from machship_create_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Two concrete 'Use when' scenarios tell the agent exactly the situation (you already have a quote ID and need carrier rates to pick one for a consignment). It doesn't explicitly name the alternative tool to use when you lack an ID, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_quotesGet All QuotesA
Read-onlyIdempotent

Returns all quotes for a given company.

Args:

  • companyId (number): Company ID

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Array of quote summary objects: { "id": number, "reference": string, "status": string, "createdDate": string }

Examples:

  • Use when: "List all quotes for company 123"

  • Use when: You need a quote ID to pass to machship_get_quote for full details

  • Don't use when: You want to create a new quote (use machship_create_quote instead)

Error Handling:

  • Error 404: companyId does not exist or is not accessible

NameRequiredDescriptionDefault
companyIdYesCompany ID
response_formatNoOutput format: 'json' (default) or 'markdown'json

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds error behavior (404 when companyId is invalid or inaccessible) which is not derivable from annotations. It omits any statement about result volume/pagination for "all quotes", which is the main behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior and then cleanly sectioned into Args/Returns/Examples/Errors, which is easy to scan. The Args section is redundant with the schema, costing a bit of tightness, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't document return values, yet it still summarizes the quote shape and covers the 404 error case, so it is broadly complete for a simple two-param read. The lack of any statement about how many quotes are returned or ordering limits keeps it from full marks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the Args block merely restates the schema's own param descriptions (companyId, response_format enum with default) without adding new meaning. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (returns all quotes) scoped to a given company, and the examples explicitly distinguish it from machship_get_quote (full details for one quote) and machship_create_quote (creating). An agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit "Use when" conditions plus a "Don't use when" exclusions pointing to the correct sibling (machship_create_quote). The "need an ID for machship_get_quote" case is a genuinely useful workflow hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_recent_consignmentsGet Recently Created or Updated ConsignmentsA
Read-onlyIdempotent

Returns consignments created or updated within a UTC date range. Ideal for sync/polling workflows.

Args:

  • companyId (number): Company ID

  • fromDateUtc (string): Start datetime in UTC (ISO 8601)

  • toDateUtc (string): End datetime in UTC (ISO 8601)

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

  • getNotes (boolean, optional): Include notes in response

  • getReconciliationData (boolean, optional): Include reconciliation data

NameRequiredDescriptionDefault
getNotesNoInclude notes in the response
carrierIdNoFilter by carrier ID
companyIdYesCompany ID
toDateUtcYesEnd datetime UTC (ISO 8601)
startIndexNoPagination start index (default 1)
fromDateUtcYesStart datetime UTC (ISO 8601)
retrieveSizeNoNumber of results to return (default 40, max 200)
getReconciliationDataNoInclude reconciliation data in the response
includeChildCompaniesNoInclude consignments from child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and open-world, so the safety profile is fully covered. The description adds the sync/polling framing and the optional response-shaping flags, but says nothing about result ordering, maximum date-range span, or rate limits that would matter for a polling tool. Useful but not rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two opening sentences are well-formed and front-loaded with the key scoping fact. The nine-line Args block then duplicates parameter documentation the schema already carries verbatim-or-better, padding the definition without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, rich annotations, and full schema coverage, the description only needs to establish purpose and scoping, which it does. Minor gaps around date-range limits and result ordering keep it from a 5, but an agent can call this correctly from what is given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args block mostly restates the schema, and in a few places is thinner than it ("startIndex: Pagination start index" omits the default of 1; "retrieveSize: Number to retrieve" omits the default 40 and max 200 that the schema states), so it adds no meaning beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with a clear scope: consignments created OR updated within a UTC date range, and ties it to sync/polling workflows. This implicitly separates it from siblings like machship_get_all_consignments or machship_get_active_consignments, but it never names an alternative, so it stops short of explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Ideal for sync/polling workflows" gives a concrete use case, which is enough context to pick this over a general list or search tool. It provides no when-not-to-use conditions and no named alternatives for the case where an agent needs a different filter (e.g. carrier-only or status-based retrieval).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_recent_pending_consignmentsGet Recently Created/Updated Pending ConsignmentsB
Read-onlyIdempotent

Returns pending consignments created or updated within a UTC date range. Useful for sync workflows.

Args:

  • companyId (number): Company ID

  • fromDateUtc (string): Start datetime UTC (ISO 8601)

  • toDateUtc (string): End datetime UTC (ISO 8601)

  • startIndex (number, optional): Pagination start

  • retrieveSize (number, optional): Page size

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

  • getDeleted (boolean, optional): Include deleted pending consignments

NameRequiredDescriptionDefault
carrierIdNoFilter by carrier ID
companyIdYesCompany ID
toDateUtcYesEnd datetime UTC (ISO 8601)
getDeletedNoInclude deleted pending consignments
startIndexNoPagination start index
fromDateUtcYesStart datetime UTC (ISO 8601)
retrieveSizeNoNumber of results to return (max 200)
includeChildCompaniesNoInclude pending consignments from child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered by structured data and the description adds little there. The text does contribute some behavioral context beyond annotations: results are delimited by UTC date bounds on creation/update, deleted records are excluded unless getDeleted is set, and paging is via startIndex/retrieveSize. It says nothing about volume, ordering, or the max-200 cap implications, so it remains mid-range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening two sentences are well front-loaded and earn their place, but the eight-line Args enumeration is redundant duplication of a schema that is already 100% documented and in places less precise than the schema. Trimming that block would drop the description from a bulky listing to a tight, purposeful one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema, rich annotations, and complete schema descriptions, the burden on the description is low, and the essentials (resource, date-range scope, sync use case) are present. Gaps remain around ordering, the practical effect of the 200 page cap, and which sibling to use for non-date-based retrieval, but none of these are blocking for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every one of the eight parameters, making 3 the baseline. The Args block in the description largely restates the schema wording verbatim (e.g. 'End datetime UTC (ISO 8601)', 'Include sub-companies') and even drops details present in the schema, such as the retrieveSize maximum of 200 and the startIndex minimum. It adds almost no meaning beyond structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns pending consignments') plus the scoping condition ('created or updated within a UTC date range'), which is enough for an agent to distinguish it from ID/reference-based siblings like get_pending_consignments_by_ids. However, unlike the strongest definitions, it never names the sibling to prefer when a date range is not the right selector, so differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Useful for sync workflows' implies the intended context and hints at a polling pattern, but there is no explicit when-to-use versus when-not-to-use guidance and no named alternative among the many pending-consignment and consignment list tools. The agent must infer the selection criteria from the tool name and the date-range requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_routesGet Available RoutesA
Read-only

Returns a list of available freight routes and carrier services for a single shipment request. Use this to find all carrier options (rates, ETAs) before creating a consignment.

Args:

  • request (object): Route request including:

    • companyId: Company ID (required)

    • fromLocation: { suburb, postcode, state, country } — origin location

    • toLocation: { suburb, postcode, state, country } — destination location

    • items: Array of packages with weight (kg), length/width/height (cm), name (string), quantity (integer > 0)

    • despatchDate (optional): Planned despatch date (ISO 8601)

Example: { "companyId": 1790, "fromLocation": { "suburb": "Melbourne", "postcode": "3000", "state": "VIC", "country": "AU" }, "toLocation": { "suburb": "Sydney", "postcode": "2000", "state": "NSW", "country": "AU" }, "items": [{ "weight": 10, "length": 30, "width": 30, "height": 30, "name": "Parcel", "quantity": 1 }] }

NameRequiredDescriptionDefault
requestYesRoute request (companyId, from/to location, items with weight/dimensions, optional despatchDate)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that results are carrier options with rates and ETAs for a single shipment, but says nothing about error or empty-result behavior, rate-freshness caveats implied by idempotentHint=false, or response shape beyond the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and workflow guidance are front-loaded in two sentences, followed by a compact Args outline and one concrete example. Nothing is decorative, and the example earns its space because the schema does not type the nested request fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a nested-object parameter, annotated read-only behavior and an output schema, the definition covers what an agent needs to construct a valid request. It falls short only on failure/no-route handling and on disambiguating itself from the batch and complex-item route variants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema leaves the request object as an empty property bag with only a one-line summary, so the description is effectively the only source of field semantics. It documents companyId as required, the suburb/postcode/state/country shape of fromLocation and toLocation, item fields with explicit units (kg, cm), quantity > 0, and despatchDate as optional ISO 8601 — plus a worked example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource: 'Returns a list of available freight routes and carrier services for a single shipment request', and it clarifies the value of the result ('rates, ETAs'). The phrase 'single shipment request' implicitly separates it from the batch and complex-item route siblings, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: 'Use this to find all carrier options (rates, ETAs) before creating a consignment', which tells the agent where this sits in the quoting-to-booking workflow. It does not say when to prefer machship_get_routes_batch or machship_get_routes_complex_items, so the alternative-selection guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_routes_batchGet Available Routes (Batch)B
Read-only

Returns available routes for multiple shipment requests in a single call. Efficient for bulk rate shopping across multiple shipments.

Args:

  • requests (array): Array of route request objects (same structure as single route request)

NameRequiredDescriptionDefault
requestsYesArray of route requests

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the batch/efficiency rationale but omits batch-specific behavior an agent needs: whether one invalid request fails the whole call, whether partial results are returned, and any size or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and efficiency rationale are front-loaded in two short sentences, followed by a compact Args block. The Args line largely restates the schema property description, so it is slightly redundant but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover safety, so the description needn't explain returns. However, for a batch fan-out tool the agent still lacks per-request failure semantics and any cap on array length, which are the main things that affect correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is only one parameter, so baseline is 3. The note that each element has 'the same structure as single route request' does add real meaning, since the schema types items as an unconstrained object, but it points to an unnamed sibling rather than describing the fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns available routes') plus the batching scope ('for multiple shipment requests in a single call'), which separates it from the singular sibling machship_get_routes. It does not name that sibling explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Efficient for bulk rate shopping across multiple shipments' implies the batch scenario where this tool beats the single-request version. There is no explicit when-not guidance (e.g. when a single route call is preferable) and no prerequisite or limit information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_routes_complex_itemsGet Available Routes with Complex ItemsB
Read-only

Returns available routes for a shipment with complex item definitions (dangerous goods, specialised packaging).

Args:

  • request (object): Route request with complexItems array (including dangerous goods classifications)

NameRequiredDescriptionDefault
requestYesRoute request with complexItems (dangerous goods, specialised packaging)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description's contribution is clarifying what 'complex items' means (dangerous goods classifications, specialised packaging), but it says nothing about validation failures, carrier availability behavior, or why idempotentHint is false for a read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded statements with no filler; the core purpose comes first. The 'Args:' block duplicates what the schema already documents, which is slight waste but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and annotations are present, so return values and safety need not be explained. However, for a tool whose only differentiator is 'complex items' versus two sibling route tools, the description omits the selection guidance an agent most needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required 'request' object, so the schema already documents the parameter and its nested complexItems content. The description restates the same thing and adds only a marginal note about dangerous goods classifications, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns available routes') and qualifies the input shape ('shipment with complex item definitions'), which distinguishes it from the plain routes tools in spirit. It does not explicitly name machship_get_routes or machship_get_routes_batch as the non-complex alternatives, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is for shipments containing dangerous goods or specialised packaging, but there is no explicit 'use this instead of X when Y' or statement of prerequisites. With two closely named siblings (get_routes, get_routes_batch) present, an explicit routing rule would be expected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_special_instructions_pdfGet Special Instructions PDFB
Read-onlyIdempotent

Returns the special instructions document PDF for a consignment. Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentId (number): Consignment ID

  • printA4 (boolean, optional): Print in A4 format

NameRequiredDescriptionDefault
printA4NoPrint in A4 format
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds that contentType originates from the response header, which is genuine extra context, but says nothing about payload size, base64 handling, or error behavior for an unknown consignmentId.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are front-loaded and earn their place. The Args section, however, duplicates parameter text already fully documented in the schema and could be dropped without loss, making the definition longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema, complete annotations, and 100% parameter coverage, the description is complete enough to call the tool correctly. The only residual gap is that it repeats the return shape already present in the output schema rather than covering error or size-limit behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's Args block restates consignmentId and printA4 almost verbatim from the schema, adding no format, range, or default semantics beyond what the structured field already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: returns the special instructions document PDF for a consignment. That is distinct from the many other PDF siblings (label PDF, dangerous goods PDF, MO41 PDF, and the *_pdf_file_info variants). It does not explicitly name a sibling it is not, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose: fetch the special-instructions PDF for a given consignment. There is no explicit when-to-use/when-not guidance and no pointer to alternatives such as machship_get_consignment_pdf_file_info or machship_get_consignment_attachments, which an agent choosing among PDF tools would benefit from.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_unmanifested_consignment_for_editGet Unmanifested Consignment for EditA
Read-onlyIdempotent

Get an unmanifested consignment in the same format required to perform an update via the editUnmanifestedConsignment endpoint.

Args:

  • id (number): Consignment ID (must be in unmanifested state)

NameRequiredDescriptionDefault
idYesConsignment ID (must be unmanifested)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds non-obvious behavioral context the annotations cannot: the response is shaped as an update payload, and the call is only valid for consignments in unmanifested state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core capability is front-loaded in one sentence with zero preamble. The 'Args' block duplicates the schema's parameter description, which is minor waste but doesn't obscure the main point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations are rich, so return values needn't be described. For a single-parameter read tool this is nearly complete, though it could note the failure mode when the consignment is already manifested.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema description coverage, the schema already documents 'id' and its unmanifested constraint. The description restates the same constraint rather than adding new meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get an unmanifested consignment') plus a distinctive output trait: it is returned in the same format the editUnmanifestedConsignment endpoint requires. That distinguishes it from plain readers like machship_get_consignment, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It establishes the workflow context clearly (fetch this before performing an update) and states a hard precondition (the consignment must be in unmanifested state). It does not explicitly say which sibling to use when the consignment is NOT unmanifested, leaving that fallback to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_get_unmanifested_consignmentsGet Unmanifested ConsignmentsA
Read-onlyIdempotent

Returns consignments that have been created but not yet manifested (booked with carrier).

Args:

  • companyId (number): Company ID

  • startIndex (number, optional): Pagination start index

  • retrieveSize (number, optional): Number to retrieve

  • carrierId (number, optional): Filter by carrier

  • includeChildCompanies (boolean, optional): Include sub-companies

NameRequiredDescriptionDefault
carrierIdNoFilter by carrier ID
companyIdYesCompany ID
startIndexNoPagination start index
retrieveSizeNoItems to retrieve
includeChildCompaniesNoInclude child companies

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds the domain meaning of 'unmanifested' and the pagination parameters, but says nothing about ordering, total counts, or behaviour when no consignments are pending — and an output schema exists, so return-shape detail is not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and precise, and the Args list is scannable. The Args block duplicates what the schema already says, so it is mild padding rather than wasted prose overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, a rich annotation set, and an output schema, the definition supplies the one thing structured data cannot: what 'unmanifested' means in this domain. The only gap is disambiguation from machship_get_unmanifested_consignment_for_edit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters, including defaults (startIndex=1, retrieveSize=40) and bounds (retrieveSize max 200) that the description omits. The Args block largely restates the schema with less precision, so it adds no meaning beyond the structured fields — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource plus a domain-defining qualifier: consignments 'created but not yet manifested (booked with carrier)', which meaningfully separates it from generic siblings like machship_get_all_consignments or machship_get_active_consignments. It stops short of naming the nearest sibling, machship_get_unmanifested_consignment_for_edit, so an agent must still infer which of the two 'unmanifested' tools fits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the state filter ('not yet manifested'), so an agent can reason that this is the tool for finding shipments awaiting booking. However, there is no explicit when-to-use/when-not-to-use guidance, no mention of prerequisites such as needing a manifest workflow next, and no reference to the near-identical _for_edit sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_group_all_for_manifestGroup All Unmanifested Consignments for ManifestA
Read-only

Groups ALL unmanifested consignments for a company into manifest groups (preview before manifesting).

Args:

  • companyId (number): Company ID

NameRequiredDescriptionDefault
companyIdYesCompany ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false. The description usefully reinforces that the operation is a preview and does not actually manifest anything, resolving the ambiguity of a 'grouping' mutation-looking name. It says nothing about idempotency or what happens on repeat calls, so it adds some but not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient, but the trailing Args block duplicates schema information and slightly dilutes an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the scope (all unmanifested consignments for a company) and the preview nature. Minor gap: no note on prerequisites such as consignments being unmanifested or the effect of calling twice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single companyId parameter is fully documented in the schema; the description's Args block merely restates it. No additional meaning (e.g. whether companyId must be the authenticated company) is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (groups) plus resource (unmanifested consignments), and the emphasis on 'ALL' implicitly separates it from the sibling machship_group_consignments_for_manifest which handles a supplied subset. The added '(preview before manifesting)' clarifies the output is grouping, not actual manifesting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical indicates this is a pre-manifest preview step, which implies when to call it, but it never names the sibling alternatives (group_consignments_for_manifest, manifest_consignments) or states exclusions such as requiring consignments to be unmanifested first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_group_and_perform_consolidationGroup and Perform ConsolidationB

Groups and consolidates consignments in a single operation (combines grouping + performing).

Args:

  • options (object): Consolidation options (companyId, carrierId, grouping rules, etc.)

NameRequiredDescriptionDefault
optionsYesConsolidation options

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description should add what the annotations cannot: whether the grouping and consolidation are atomic, what happens if consolidation fails after grouping, and what state the consignments end up in. None of that is disclosed. The 'single operation' phrasing gestures at atomicity but never confirms it, which is a notable gap for a mutation that alters multiple consignments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short elements, front-loaded with the action, followed by the argument note; there is no filler. The parenthetical '(combines grouping + performing)' is slightly redundant with the verb 'groups and consolidates' but does double as the only sibling differentiation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, but the tool is a multi-entity mutation taking an untyped options blob and the description says nothing about failure/rollback behavior, prerequisite state of the consignments, or how it differs in outcome from the two-step siblings. That is insufficient for the complexity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema is a free-form object of additionalProperties, and the description adds value by naming likely option keys (companyId, carrierId, grouping rules). However the trailing 'etc.' leaves the option surface open-ended, giving no guidance on required versus optional keys or the shape of the grouping rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource pair ('groups and consolidates consignments') and clarifies the scope with 'in a single operation (combines grouping + performing)', which implicitly maps to the siblings machship_group_consignments_for_consolidation and machship_perform_consolidation. It never names those siblings directly, so an agent must infer the relationship rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Combines grouping + performing' hints at when this composite call is preferable to the two-step pair, but the description never states a use case, a precondition, or an exclusion. There is no explicit guidance such as 'use this instead of calling group then perform separately' or 'use the separate tools when you need to inspect groups before performing'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_group_consignments_for_consolidationGroup Consignments for ConsolidationA
Read-only

Automatically groups consignments into consolidation groups based on options (carrier, route, etc.). Returns groups without actually consolidating — preview step before consolidation.

Args:

  • options (object): Consolidation grouping options (companyId, carrierId, etc.)

NameRequiredDescriptionDefault
optionsYesConsolidation grouping options

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'without actually consolidating — preview step before consolidation', which is the single most important behavioral fact for an agent deciding whether it is safe to call. It does not cover idempotency (annotations say idempotentHint=false, meaning repeated calls may yield different groupings) or how grouping is decided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load purpose and the no-side-effect guarantee, and the Args block is short. The redundant 'options (object): Consolidation grouping options' restates the schema description verbatim, which is minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool whose only input is a free-form options bag, the description is thin: it lists two example keys and 'etc.' with no indication of required vs optional keys, default grouping behavior, or what the returned groups look like structurally. The presence of an output schema excuses explaining return values, but the untyped nested object still warrants more guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the 'options' object is declared as additionalProperties:{} with no defined properties, so the schema conveys essentially no semantics. The description partially compensates by naming companyId and carrierId, but 'etc.' leaves the agent guessing which grouping keys are actually accepted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('groups') on a specific resource ('consignments into consolidation groups') and immediately states the crucial scope: it returns groups without consolidating. That distinguishes it in practice from the perform-consolidation siblings, though it never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Preview step before consolidation' tells the agent when to reach for this instead of actually consolidating. It stops short of naming machship_perform_consolidation or machship_group_and_perform_consolidation as the follow-up alternatives, so the routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_group_consignments_for_manifestGroup Consignments for ManifestB
Read-only

Groups a specific set of consignments into manifest groups (preview before manifesting).

Args:

  • consignmentIds (number[]): Consignment IDs to group

NameRequiredDescriptionDefault
consignmentIdsYesConsignment IDs to group

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; 'preview' is consistent with that and adds a little confirmation. The description does not address idempotentHint=false (whether repeated calls with the same IDs produce different groupings) or what grouping state, if any, is returned or persisted — the notable remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and the parenthetical preview note is well placed. The 'Args:' section is pure repetition of the schema and could be dropped, but overall it is short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the single parameter is documented. What is missing for a workflow-oriented grouping tool is the state model: whether the grouping is ephemeral preview data or persisted, and what the agent should do with the result before calling the manifest tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully typed with minItems, so the schema carries the load. The description's 'Args' block restates the schema text verbatim and adds no meaning about ordering, duplicate IDs, or cross-company constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Groups a specific set of consignments into manifest groups') and adds a scope qualifier ('specific set'), which implicitly separates it from machship_group_all_for_manifest. It stops short of naming any sibling outright, so an agent must infer the boundary from the word 'specific'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'preview before manifesting' tells the agent this is a pre-step in the manifest workflow, which is useful context. However, it never states when to choose this over machship_group_all_for_manifest, machship_group_and_perform_consolidation, or machship_manifest_consignments, and gives no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_group_consignments_for_printingGroup Consignments for PrintingB
Read-only

Groups consignments for batch label printing and returns print groups.

Args:

  • consignmentIds (number[]): Consignment IDs to group for printing

NameRequiredDescriptionDefault
consignmentIdsYesConsignment IDs

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that the output is 'print groups', but says nothing about whether the grouping is persisted, ordering, or how the groups are structured beyond what the output schema presumably shows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence stating purpose and return value, front-loaded and free of padding. The extra Args block is redundant with the already-complete schema but is short and does not obscure the main sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter, full schema coverage, an output schema, and annotations, the description covers enough to invoke the tool correctly. The only meaningful gap is disambiguation from the sibling grouping tools in this dense toolset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one required parameter, so the schema already fully documents consignmentIds. The description's Args block merely restates it without adding format, batch limits, or grouping semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Groups consignments') plus the end goal ('batch label printing') and what it returns ('print groups'). It is not, however, distinguished from the very similar siblings machship_group_consignments_for_consolidation, machship_group_consignments_for_manifest, and machship_group_all_for_manifest.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for batch label printing' hints at the use case but gives no explicit when-to-use guidance, no prerequisites, and no exclusions. With several near-identical grouping tools and label-retrieval tools like machship_get_consignment_label_pdf and machship_send_labels_to_printer in the sibling list, an agent is left to guess which one to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_manifest_consignmentsManifest / Book Consignments with CarrierA

Books/manifests consignments with the carrier — creates the pickup booking and generates tracking numbers. This is the final step in the consignment workflow before physical pickup.

Args:

  • manifests (array): Array of booked manifest objects with consignment IDs and carrier booking details

NameRequiredDescriptionDefault
manifestsYesManifest booking objects (consignmentIds, carrierId, despatchDate, etc.)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations’ external, non-idempotent mutation profile, the description discloses that the call creates a pickup booking and generates tracking numbers. It omits duplicate-booking, partial-failure, and retry behavior, but the concrete side effects provide useful additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and workflow position are front-loaded in two efficient sentences. The Args block is somewhat redundant with the schema, but the overall definition remains short and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema removes the need to document return values, and the description covers the operation’s basic role and effects. However, the free-form manifest item objects, lack of payload-construction guidance, and absence of routing to grouping or rebooking siblings leave gaps for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The manifests argument is described in both the description and fully covered schema, and the description adds little beyond “consignment IDs and carrier booking details.” With 100% schema coverage the baseline is 3; neither source defines the item object’s required fields or formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line gives a specific verb and resource—“Books/manifests consignments with the carrier”—and adds concrete outcomes. It does not distinguish this operation from siblings such as machship_rebook_manifest_pickup or the manifest-grouping tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

“This is the final step in the consignment workflow before physical pickup” supplies clear sequencing and when-to-use context. It does not state prerequisites, when not to use it, or which sibling to use for grouping or rebooking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_perform_consolidationPerform ConsolidationB

Consolidates a set of consignments into consolidated shipments. This merges multiple consignments into fewer shipment units for carrier efficiency.

Args:

  • request (object): Consolidation request with consignment IDs and consolidation parameters

NameRequiredDescriptionDefault
requestYesConsolidation request payload

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so safety and repeat-call behavior are covered. The description adds the useful semantic that multiple consignments collapse into fewer shipment units, but does not say what happens to the original consignments (consumed, linked, voided) or whether the operation is reversible, which matters for a non-idempotent mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the action and its effect, followed by a short Args note. The Args line largely restates the schema and could be trimmed, but there is no padding or redundancy elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a non-idempotent, open-world mutation with a nested request object, yet the description omits preconditions, ordering relative to the grouping tools, and the fate of source consignments. An output schema exists so return values need not be explained, but the missing workflow and side-effect context is a real gap for an agent deciding whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the schema is effectively opaque ('Consolidation request payload' with additionalProperties {}), so the description's hint that the request contains consignment IDs and consolidation parameters is genuinely additive. However, it gives no field names, formats, or which consolidation parameters exist, so it only partially compensates for the loose schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Consolidates a set of consignments into consolidated shipments', plus a one-line rationale about merging into fewer shipment units. It is clear what the tool does, but it never distinguishes itself from the near-identical sibling machship_group_and_perform_consolidation or from machship_group_consignments_for_consolidation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the two consolidation-related siblings, no mention of prerequisites (e.g. whether consignments must first be grouped via machship_group_consignments_for_consolidation), and no exclusions. The agent must infer the workflow entirely from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_pingPing / Check Auth StatusA
Read-onlyIdempotent

Determines the current user's login status and retrieves session properties from Machship. Use this to verify authentication is working and to get the current user/company context.

Returns: session info including user details, company ID, and permissions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that this is an auth/session check returning user details, company ID and permissions, but that return content is largely duplicated by the existing output schema. It does not mention failure behavior (e.g., what an unauthenticated response looks like), which is the one piece of behavior an agent would most want here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core purpose before usage and return summary. The 'Returns:' line partially restates what the output schema already provides, which is minor redundancy but not harmful bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only, output-schema-backed tool, the description covers purpose, usage and return content sufficiently. The only real gap is error/unauthenticated behavior, which matters for an auth-check tool but is a small omission against an otherwise complete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to disambiguate; baseline for a zero-param tool is 4. Nothing in the description misleads about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: determines login status and retrieves session properties from Machship, reinforced by the title 'Ping / Check Auth Status'. An agent can immediately tell this is the auth/session-check tool, though the description does not explicitly name a distinguishing case against siblings (none of which overlap functionally).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to verify authentication is working and to get the current user/company context' gives clear when-to-use guidance tied to a concrete scenario. It stops short of stating when not to use it or pointing to any alternative, but with zero-parameter scope and no functional siblings, that omission is low-cost.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_rebook_manifest_pickupRebook Manifest PickupA

Rebooks the carrier pickup for an existing manifest (e.g. missed pickup or changed schedule).

Args:

  • rebooking (object): Rebooking details including manifestId and new pickup datetime

NameRequiredDescriptionDefault
rebookingYesRebooking details (manifestId, pickupDate, etc.)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnly=false, destructive=false, idempotent=false, openWorld=true). The description adds only that the manifest must already exist, and omits what actually happens to the original pickup, whether retries risk duplicate rebookings given idempotent=false, or any carrier-side side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and wastes no words. The follow-on 'Args' block largely duplicates the schema description, which is minor redundancy rather than harm.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile and an output schema covering the return value, the description supplies the essential purpose and trigger conditions. It is only marginally incomplete on non-idempotent retry consequences and the fate of the prior pickup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the single 'rebooking' object and its example fields. The description's 'manifestId and new pickup datetime' roughly restates that, adding little beyond what is structured, and the free-form additionalProperties object leaves field requirements unclear in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Rebooks the carrier pickup for an existing manifest', which an agent can distinguish from manifest creation (machship_manifest_consignments) and permanent pickup tools. It does not name a sibling explicitly, so it falls just short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'e.g. missed pickup or changed schedule' gives concrete triggering scenarios, which is more than most siblings offer. It provides no when-not guidance (e.g. vs. machship_add_permanent_pickups for recurring pickups), so the agent must infer exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_reenable_identitiesRe-enable IdentitiesA

Re-enable previously disabled identities, restoring login access.

Args:

  • ids (number[]): Array of identity IDs to re-enable

NameRequiredDescriptionDefault
idsYesIdentity IDs to re-enable

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so safety is covered structurally. The description adds a real consequence beyond annotations: logins are restored. However, it says nothing about required permissions, what happens when an ID is not disabled, or whether the call is safe to repeat (annotations say idempotentHint=false but the description does not explain that).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and earns its place. The Args block is redundant with a 100%-covered schema, which is minor waste for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter mutation with an output schema present and clear annotations, the definition covers what the tool does and its net effect. Only permission requirements and failure behavior for non-disabled IDs are missing, which are modest gaps at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully documented in the schema, including minItems and integer constraints. The 'Args:' block merely restates the schema description, adding no format or semantics beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Re-enable') and resource ('previously disabled identities') and adds the outcome ('restoring login access'). It implicitly distinguishes itself from the sibling machship_disable_identities by the 'previously disabled' framing, though it never names the counterpart tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously disabled identities' implies the precondition (the identity must already be disabled), but there is no explicit when-to-use guidance, no exclusions, and no reference to the sibling machship_disable_identities or machship_delete_identities as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_reset_organisation_public_keyReset Organisation Public KeyA

Resets the public key for an organisation (generates new key). Does NOT affect existing links.

Args:

  • id (number, optional): Organisation ID (defaults to current org)

NameRequiredDescriptionDefault
idNoOrganisation ID (optional)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=false; the description adds real context beyond them by explaining that a new key is generated and that existing organisation links are unaffected, which bounds the blast radius. It still doesn't say whether the previous key is immediately invalidated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is two tight, front-loaded sentences with the key scope caveat up front. The repeated 'Args:' block largely duplicates the fully documented schema, which is minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation, and impact on links is covered. However, for a key-rotation mutation the description omits whether the old key stops working and whether elevated permissions are required, which are the operationally critical facts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already typed, but the description adds the meaningful default behavior ('defaults to current org') that the schema's 'Organisation ID (optional)' does not convey, so the agent knows it can call with no arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource ('Resets the public key for an organisation') and clarifies the effect with '(generates new key)', which separates it from the read-only sibling machship_get_organisation_public_key. It stops short of naming the sibling alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a partial exclusion ('Does NOT affect existing links') that tells the agent this is not a link-management tool, but no positive guidance on when to reset versus merely reading the key with get_organisation_public_key, and no stated prerequisites or permissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_return_identity_public_keysReturn Identity Public KeysA
Read-onlyIdempotent

Get the public keys of the supplied identities. These keys can be used by a linked organisation to grant those identities access to companies in their organisation. Requires administrator access.

Args:

  • ids (number[]): Array of identity IDs to retrieve public keys for

NameRequiredDescriptionDefault
idsYesIdentity IDs

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that: the admin-access requirement and the fact that the returned keys are meant to be shared with a linked organisation. It says nothing about rate limits or ordering of returned keys, but the added auth context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the access constraint are front-loaded and easy to scan. The trailing Args block duplicates the schema's description of 'ids' and could be dropped without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full annotations and an output schema, the description covers what it does, why the keys matter, and the admin requirement. Return-value format need not be explained since an output schema exists; only explicit alternative-tool routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ids' array is already documented in the schema. The description's Args block largely restates that field ('Array of identity IDs to retrieve public keys for'), adding only marginal meaning. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the public keys of the supplied identities') and adds why the keys matter (granting linked organisations access to companies). This distinguishes it from the closest sibling machship_get_organisation_public_key, though it never names that alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a prerequisite ('Requires administrator access') and explains the downstream use case, which implies when an agent would want this. However, it offers no explicit when-to-use vs when-not-to-use guidance or routing against sibling key-related tools such as machship_get_organisation_public_key or machship_reset_organisation_public_key.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_return_item_pdfs_for_consignmentsReturn Item PDFs for Consignments (POST)A
Read-onlyIdempotent

Returns item labels as a zip for up to 40 consignments (POST variant — use this when passing a body payload is preferred over query string). Returns { fileBase64, contentType, sizeBytes }. contentType comes from the response header.

Args:

  • consignmentIds (number[]): Consignment IDs (max 40)

  • printA4 (boolean, optional): Print in A4 format

NameRequiredDescriptionDefault
printA4NoPrint in A4 format
consignmentIdsYesConsignment IDs (max 40)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, open-world behavior. The description adds useful runtime context: the response is a zip with fileBase64, contentType, and sizeBytes, and contentType comes from the response header. It does not cover auth, rate limits, or error behavior, but with annotations and an output schema a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the outcome and POST-variant guidance, then gives a compact args list. The args section largely repeats the fully documented schema, and the return-shape sentence overlaps with the output schema, so there is minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with rich annotations, full schema coverage, and an output schema, the description covers outcome, limits, variant selection, and return payload. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented. The description restates consignmentIds (max 40) and optional printA4 but adds no syntax or edge-case meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns item labels as a zip for up to 40 consignments. It also explicitly identifies the POST variant, distinguishing it from query-string label retrieval siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this POST variant when a body payload is preferred over a query string, giving a clear selection condition. It does not name the alternative tool directly or state when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_search_consignmentsSearch ConsignmentsC
Read-onlyIdempotent

Searches consignments by reference numbers (Reference 1, Reference 2, or carrier IDs).

Args:

  • references (string[]): Array of reference strings to search for

NameRequiredDescriptionDefault
referencesYesReference values to search

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds nothing behavioral beyond that — no statement on whether references are matched exactly or partially, case sensitivity, mixed reference types in one call, or result limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that conveys the essentials, followed by an Args block that duplicates the schema. Short and readable, with only minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and only one parameter is involved. Still missing is the crucial disambiguation from several near-identical sibling tools and any note on match semantics, which leaves the definition minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes 'Reference values to search'; the description's Args block merely restates the array of strings. It could have added which reference namespaces are searched (Reference 1, Reference 2, carrier ID) per element, but the semantics of matching remain unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('Searches consignments') and names the three reference keys it accepts. However, it never distinguishes itself from the dedicated siblings machship_get_consignments_by_reference1, _by_reference2, and _by_carrier_id, which occupy nearly the same purpose space.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this multi-key search versus the single-key get_consignments_by_reference1/2/carrier_id tools, nor versus get_consignments_by_ids or get_all_consignments. The agent must infer routing from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_search_locationsSearch LocationsA
Read-onlyIdempotent

Returns up to 10 Machship locations matching a suburb or postcode search string. Use this to look up valid delivery/pickup locationIds before creating consignments.

Args:

  • s (string): Search string — suburb name, postcode, or both (e.g. "Melbourne 3000")

  • response_format ('json' | 'markdown'): Output format (default: 'json')

Returns: Array of location objects: { "id": number, "suburb": string, "postcode": string, "state": string, "country": string }

Examples:

  • Use when: "What location ID is for Sydney 2000?" -> search "Sydney 2000", pick from results

  • Use when: Validating a delivery address before creating a consignment

NameRequiredDescriptionDefault
sYesSearch string: suburb name, postcode, or both (e.g. 'Melbourne 3000')
response_formatNoOutput format: 'json' (default) or 'markdown'json

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: a 10-result cap and the intended validation-before-consignment workflow. It does not discuss auth or rate limits, but that is a minor gap given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded with the core purpose and result limit, and the Args/Returns/Examples structure is easy to scan. There is some duplication of schema and output-schema information, but the description remains compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with rich annotations and an output schema, the description covers the search purpose, result cap, parameters, return fields, and examples. Its main completeness gap is the lack of explicit comparison to sibling location lookup tools, which would help an agent choose correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters, including the same 'Melbourne 3000' example and the response_format default. The description repeats those details but adds no meaning beyond the input schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: searching Machship locations by suburb or postcode, returning up to 10 matches. It clearly explains the result shape and the pre-consignment lookup use case, but does not distinguish this tool from sibling location tools such as machship_get_locations_exact or machship_get_locations_with_options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: look up valid delivery/pickup locationIds before creating consignments, with examples for Sydney 2000 and address validation. It does not state when not to use this tool or name the alternative location lookup tools, so it stops short of explicit alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_send_labels_to_printerSend Labels to PrinterB

Sends labels directly to a configured printer in Machship.

Args:

  • requests (array): Array of print requests, each with consignmentId, printerId, labelType, etc.

NameRequiredDescriptionDefault
requestsYesPrint requests (consignmentId, printerId, labelType)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the side-effecting, non-idempotent nature is covered structurally. The description reinforces that labels go to an external, pre-configured printer, but says nothing about printer-unavailable failures, whether the call blocks, or how many labels get produced per request.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and unambiguous, and the Args block is compact. Slight redundancy against the schema keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations present and an output schema available, the description needn't explain return values. However, for a tool that emits physical print jobs, the absence of any note on printer configuration requirements or failure behaviour leaves a meaningful gap for an agent deciding how to handle results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already names consignmentId, printerId and labelType, so the description's Args block largely restates structured data. The trailing 'etc.' adds no real meaning about any additional request fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: sends labels directly to a configured printer. An agent can distinguish this from sibling PDF-retrieval tools like machship_get_consignment_label_pdf, though the description never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the word 'directly' and 'configured printer' suggest a physical print action rather than downloading a label file, which is enough to infer when to prefer this over machship_get_consignment_label_pdf. No explicit when-to-use, prerequisites, or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_update_consignment_statusesUpdate Consignment Tracking StatusesB

Manually updates tracking statuses for consignments (e.g. mark as delivered).

Args:

  • statuses (array): Array of manual tracking status objects, each with consignmentId, status, and datetime

NameRequiredDescriptionDefault
statusesYesTracking status updates

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true, so the safety profile is covered. The description adds the valuable manual-vs-automatic framing, but omits what an agent most needs for a non-idempotent mutation: whether a new status is appended to history or overwrites the current one, what happens on duplicate calls, and whether this changes downstream business state (reports, invoicing, reconciliation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short parts: a front-loaded purpose sentence followed by an args list. Nothing is padded, though the args block largely duplicates the already-complete input schema and could be dropped in favor of the behavioral detail that is actually missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. That leaves the description adequate but thin for a non-idempotent, open-world mutation: it should say what gets changed and whether repeated or conflicting updates are safe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already documents consignmentId, status and dateTimeUtc. The description restates the fields but calls the timestamp "datetime" rather than the actual property name "dateTimeUtc", and does not say the timestamp is optional or what format/constraint the status string accepts beyond the schema's terse "Status value".

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: "Manually updates tracking statuses for consignments," with a concrete example ("mark as delivered") that makes the effect tangible. It is distinguishable from the read-side sibling machship_get_consignment_statuses by the verb, though the description never names that sibling to draw the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word "Manually" implies this is for overriding/setting statuses rather than reading carrier-driven status history, which is useful implied guidance. However, it never states when to use this instead of machship_get_consignment_statuses or the automated reconciliation path (machship_attempt_auto_reconciliation), nor any prerequisites such as needing the consignment to exist or not be manifested/completed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_update_custom_schemaUpdate Custom SchemaC

Updates an existing custom schema by its DotNet class ID.

Args:

  • id (string): DotNet class ID of the schema to update

  • schema (object): Updated JSON schema definition

NameRequiredDescriptionDefault
idYesDotNet class ID
schemaYesUpdated JSON schema definition

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true; the description adds essentially nothing beyond them. Key behaviors are undisclosed: whether the supplied schema replaces the stored definition wholesale, what happens on an unknown id, and whether the change is reversible. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is front-loaded and precise. The Args block duplicates the input schema verbatim, which adds a little redundancy but is harmless and short.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the parameters are fully covered by the schema. However, for a mutation tool with a free-form nested object argument, the missing replacement-semantics and error behavior leave a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description merely repeats the schema text and gives no hint about the shape or expected structure of the nested 'schema' object beyond 'Updated JSON schema definition'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Updates an existing custom schema') plus the identifier used (DotNet class ID). The verb distinguishes it from the get/create/delete custom-schema siblings, though it does not explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus machship_create_custom_schema or machship_get_custom_schema, no preconditions (must the schema already exist?), and no indication of whether this is a full replacement or a partial patch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_update_despatch_datesUpdate Despatch Dates for ManifestC

Updates despatch dates and estimated time of arrival (ETA) for a set of consignments.

Args:

  • updates (array): Array of objects with consignmentId and new despatch date/ETA

NameRequiredDescriptionDefault
updatesYesDespatch date updates (consignmentId, despatchDate, eta)

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true, so the description needs to add operational context and does not: no statement about required permissions, whether manifested consignments are rejected, whether a re-manifest is triggered, or how partial failures across the array are handled. The non-idempotent hint is especially relevant for a bulk update and is left entirely unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in one clear sentence, and the total length is small. The trailing Args block largely duplicates the input schema, which is redundant but only mildly wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values need not be explained. But for a bulk mutation with a single required array parameter, the description omits eligibility rules, manifest interaction implied by the title, batch failure semantics, and idempotency implications, leaving meaningful gaps for an agent to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents the single 'updates' array with its consignmentId, despatchDate and eta members. The description's Args block restates that same list without adding format, date encoding, max batch size, or behavior for unknown consignmentIds, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Updates despatch dates and estimated time of arrival (ETA) for a set of consignments'), making the operation identifiable at a glance. However, the title references 'Manifest' while the description never mentions manifests, so the agent cannot tell from the description whether consignments must be manifested or grouped before this applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, what state the consignments must be in, or what to do instead (e.g., edit_consignment or re-manifest) when a date change is not permitted. The only hint of scope is 'a set of consignments,' which is not actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_update_identityUpdate IdentityA

Updates properties on an identity. All fields except password are required; omitted fields are set to null.

Args:

  • id (number): Identity ID (required)

  • givenName (string): First name (required)

  • familyName (string): Last name (required)

  • displayName (string): Display name (required)

  • emailAddress (string): Email address (required)

  • owningCompanyId (number): Owning company ID (required)

  • password (string, optional): New password

  • phone / businessPhone / mobile / position / notes (optional)

NameRequiredDescriptionDefault
idYesIdentity ID
notesNoAdditional notes about the identity
phoneNoPhone number
mobileNoMobile number
passwordNoNew password (optional)
positionNoJob position or title
givenNameYesFirst name
familyNameYesLast name
displayNameYesDisplay name
emailAddressYesEmail address
businessPhoneNoBusiness phone number
owningCompanyIdYesOwning company ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the description carries the burden of disclosing what actually happens on a write. It does this well: omitting any non-password field silently nulls it out, which is effectively partial data loss that destructiveHint=false does not signal. The gap is that it never states whether providing the same payload twice produces the same result, despite idempotentHint=false, or what a failed update leaves behind.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded sentence contains the one fact that matters most, the null-overwrite rule, before any enumeration. The Args block duplicates the schema and lengthens the definition, but it is clearly structured and contains no filler prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the required/optional split plus null-fill semantics cover what an agent needs to construct a correct call. Missing is anything about failure modes, such as invalid email format at the API level or a nonexistent id, and confirmation that id refers to an identity from get_identities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters, and the description's Args list largely restates them. Its only added meaning is grouping the optional tail (phone, businessPhone, mobile, position, notes) and flagging password as the sole truly optional field not subject to the null-fill rule, which the schema's 'required' array only partially conveys. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Updates properties on an identity'), which cleanly separates it from machship_create_identities, machship_delete_identities, machship_get_identity and machship_disable_identities in the sibling list. It stops short of naming which sibling to use when, but the operation itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'All fields except password are required; omitted fields are set to null' implicitly tells the agent this is a full replacement rather than a patch, which is a real usage constraint. However, there is no explicit guidance on when to choose this over disable_identities, link_identities_to_companies, or reenable_identities, and no prerequisites such as permissions or which company the identity must belong to.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_update_reprice_consignmentUpdate and Reprice ConsignmentA

Updates consignment items on a carrier invoice entry and triggers repricing. Use for reconciling carrier invoice discrepancies.

Args:

  • body (object): Repricing request payload (consignmentId, items, etc.)

NameRequiredDescriptionDefault
bodyYesRepricing request payload

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnly=false, non-idempotent, non-destructive and open-world behavior. The description adds one genuinely useful behavioral fact beyond them: that repricing is triggered as a side effect of the update. It says nothing about what state is overwritten, whether repricing can fail, or any permission requirements, so it clears the lowered bar without being rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a short Args block, with purpose and usage front-loaded. The Args line mostly repeats the schema's own parameter description, but it is small enough not to be a real liability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a mutation whose sole parameter is an untyped nested payload, though, 'etc.' leaves the agent guessing about required body structure and about the repricing outcome, which is a meaningful gap for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the body parameter is a free-form object with no typed properties, so the schema conveys almost nothing. The description compensates by naming expected payload members (consignmentId, items), which gives the agent a starting shape it could not get from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: updates consignment items on a carrier invoice entry and triggers repricing. The phrasing is slightly muddled about whether the invoice entry or the consignment is the object being updated, but an agent can still tell this is a write-plus-reprice operation distinct from the many read-only consignment tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a use context ('Use for reconciling carrier invoice discrepancies'), which is more than nothing. However, it never names an alternative or exclusion, despite sibling tools like machship_attempt_auto_reconciliation and machship_get_carrier_invoice_entries that plausibly overlap, so the routing decision is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_upload_attachmentsUpload AttachmentsB

Uploads one or more attachments to Machship.

Args:

  • attachments (array): Array of attachment objects. Each object should contain:

    • consignmentId (number): Consignment to attach to

    • fileName (string): File name with extension

    • fileBase64 (string): Base64-encoded file content

    • attachmentTypeId (number, optional): Type of attachment

NameRequiredDescriptionDefault
attachmentsYesAttachments to upload

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare that this is a non-read-only, non-idempotent, non-destructive operation, and the description is consistent with that. It adds that multiple attachments can be uploaded and tied to consignments, but it does not cover permissions, file size limits, duplicate-handling behavior, or other operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core action before listing the attachment object shape. The Args section repeats schema information, but it remains readable and does not contain unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter shape, complete schema coverage, rich annotations, and the presence of an output schema, the description provides enough information to invoke the tool correctly. It could still mention prerequisites such as the target consignment needing to exist, but that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the attachment object fields. The description mirrors the schema's field meanings without adding format details, constraints, or examples beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: uploading one or more attachments to Machship. It is clearly distinct from retrieval tools like get_attachment, but it does not explicitly differentiate itself from other upload-related siblings such as upload_commercial_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but gives no guidance on when to use it, when not to use it, or which alternative attachment tool to choose. The usage context is only implied by the tool name and action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

machship_upload_commercial_invoiceUpload Commercial InvoiceB

Uploads one or more commercial invoice files for a consignment (for international shipments). Files are provided as base64-encoded content.

Args:

  • consignmentId (number): The consignment to attach the invoice to

  • files (array): Array of files, each with fileName and fileBase64 content

NameRequiredDescriptionDefault
filesYesInvoice files to upload
consignmentIdYesConsignment ID

Output Schema

NameRequiredDescription
errorsNoValidation errors returned by Machship, if any
objectNoResponse payload from the Machship API

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the write/side-effect profile is covered structurally. The description adds that multiple files are accepted and that content is base64-encoded, but it does not say what happens on re-upload (append vs replace), whether duplicates are allowed, or any file size/format limits — relevant for a non-idempotent write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, which is good, but the subsequent 'Args' block largely duplicates a schema that already has 100% description coverage, and the standalone sentence about base64 repeats the fileBase64 field description. Roughly a third of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple two-parameter upload tool with full schema coverage and an output schema, so return-value explanation is unnecessary. The description covers purpose, encoding, and batching adequately; only edge behavior (replace vs append, size limits) is missing, which is a minor gap for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both consignmentId and the nested fileName/fileBase64 fields are already documented in the schema. The Args section restates the same information without adding format, constraint, or format-specific meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Uploads one or more commercial invoice files for a consignment') and scopes it with '(for international shipments)', which tells an agent the domain. It does not explicitly distinguish itself from the sibling machship_upload_attachments or explain how it differs from machship_get_commercial_invoice_pdf, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'for international shipments' gives a usage condition, implying this should be used when a consignment requires a commercial invoice for cross-border movement. However, there is no explicit when-not guidance, no mention of when to prefer machship_upload_attachments, and no prerequisites such as whether the consignment must exist or be in a particular status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 125 tool updatesv1.0.1
    • Changedmachship_add_organisation_link2 fields changed
      • addedInput schema / properties / request / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_add_permanent_pickups2 fields changed
      • addedInput schema / properties / payload / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_attempt_auto_reconciliation2 fields changed
      • addedInput schema / properties / body / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_company_location2 fields changed
      • addedInput schema / properties / location / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_consignment2 fields changed
      • addedInput schema / properties / consignment / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_consignment_existing_items2 fields changed
      • addedInput schema / properties / consignment / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_consignment_with_complex_items2 fields changed
      • addedInput schema / properties / consignment / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_custom_schema2 fields changed
      • addedInput schema / properties / schema / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_identities13 fields changed
      • removedInput schema / properties / identities / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / identities / items / properties / businessPhone / description
        Added value: +"Business phone number"
      • addedInput schema / properties / identities / items / properties / emailAddress / pattern
        Added value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
      • addedInput schema / properties / identities / items / properties / enableEmailNotifications / description
        Added value: +"Enable email notifications for this identity"
      • addedInput schema / properties / identities / items / properties / identityProviderId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / identities / items / properties / mobile / description
        Added value: +"Mobile number"
      • addedInput schema / properties / identities / items / properties / notes / description
        Added value: +"Additional notes about the identity"
      • addedInput schema / properties / identities / items / properties / organisationId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / identities / items / properties / owningCompanyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / identities / items / properties / phone / description
        Added value: +"Phone number"
      • addedInput schema / properties / identities / items / properties / position / description
        Added value: +"Job position or title"
      • addedInput schema / properties / identities / items / properties / userAndCompanyLinks / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_item_complex3 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / item / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_pending_consignment2 fields changed
      • addedInput schema / properties / consignment / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_quote2 fields changed
      • addedInput schema / properties / quote / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_create_quote_complex_items2 fields changed
      • addedInput schema / properties / quote / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_delete_consignments2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_delete_custom_schema1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_delete_identities2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_delete_item2 fields changed
      • addedInput schema / properties / companyItemId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_delete_pending_consignments2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_disable_identities2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_edit_company_location2 fields changed
      • addedInput schema / properties / location / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_edit_consignment2 fields changed
      • addedInput schema / properties / consignment / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_active_consignments4 fields changed
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_all_consignments10 fields changed
      • addedInput schema / properties / carrierId / description
        Added value: +"Filter by carrier ID"
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / filterByEtaCompletedOrDespatch / description
        Added value: +"Filter by ETA, completed, or despatch status"
      • addedInput schema / properties / includeChildCompanies / description
        Added value: +"Include consignments from child companies"
      • addedInput schema / properties / includeDeletedConsignments / description
        Added value: +"Include deleted consignments in results"
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (default 40, max 200)"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index (default 1)"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_attachment2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_attachment_pod_report2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_attachments_by_consignment_ids2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_available_roles2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_carrier_invoice_entries2 fields changed
      • addedInput schema / properties / carrierInvoiceId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_carrier_invoices4 fields changed
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / invoiceId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_commercial_invoice_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_companies2 fields changed
      • addedInput schema / properties / atOrBelowCompanyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_company_carriers2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_company_location2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_company_locations2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_completed_consignments3 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / includeChildCompanies / description
        Added value: +"Include consignments from child companies"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_attachments2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_by_pending_id2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_creation_settings2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_for_clone2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_label_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_notes2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_pdf_file_info2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignment_statuses2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignments_by_carrier_id1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignments_by_ids2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignments_by_pending_ids2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignments_by_reference11 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_consignments_by_reference21 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_custom_schema1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_custom_schemas1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_dangerous_goods_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_dangerous_goods_pdf_file_info2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identities3 fields changed
      • addedInput schema / properties / identityProviderId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / organisationId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identity2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identity_provider2 fields changed
      • addedInput schema / properties / identityProviderId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identity_providers_for_company2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identity_providers_for_logged_user1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_identity_providers_for_organisation2 fields changed
      • addedInput schema / properties / organisationId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_invoice_by_document_number1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_by_sku2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_complex2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_complex_by_sku2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_label_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_labels_zip2 fields changed
      • addedInput schema / properties / consignmentIds / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_item_pdf_file_info2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_items3 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_items_by_skus2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_items_complex3 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_linked_from_organisations6 fields changed
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (max 100)"
      • addedInput schema / properties / searchText / description
        Added value: +"Filter results by organisation name"
      • addedInput schema / properties / sort / description
        Added value: +"Sort field name"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_linked_to_organisations6 fields changed
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (max 100)"
      • addedInput schema / properties / searchText / description
        Added value: +"Filter results by organisation name"
      • addedInput schema / properties / sort / description
        Added value: +"Sort field name"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_locations_exact2 fields changed
      • removedInput schema / properties / locations / items / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_locations_with_options2 fields changed
      • addedInput schema / properties / options / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_manifest_label_pdf2 fields changed
      • addedInput schema / properties / manifestId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_manifest_label_pdf_by_consignment2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_manifest_pdf_file_info2 fields changed
      • addedInput schema / properties / manifestId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_manifests8 fields changed
      • addedInput schema / properties / carrierId / description
        Added value: +"Filter by carrier ID"
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / includeChildCompanies / description
        Added value: +"Include manifests from child companies"
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (default 40, max 200)"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index (default 1)"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_mo41_document_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_mo41_document_pdf_file_info2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_organisation_by_public_key1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_organisation_links2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_organisation_public_key2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_pending_consignment2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_pending_consignments_by_ids2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_pending_consignments_by_reference11 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_pending_consignments_by_reference21 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_permanent_pickups2 fields changed
      • addedInput schema / properties / companyLocationId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_posted_invoices4 fields changed
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (default 100, max 100)"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index (default 1)"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_quote2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_quotes2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_recent_consignments10 fields changed
      • addedInput schema / properties / carrierId / description
        Added value: +"Filter by carrier ID"
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / getNotes / description
        Added value: +"Include notes in the response"
      • addedInput schema / properties / getReconciliationData / description
        Added value: +"Include reconciliation data in the response"
      • addedInput schema / properties / includeChildCompanies / description
        Added value: +"Include consignments from child companies"
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (default 40, max 200)"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index (default 1)"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_recent_pending_consignments9 fields changed
      • addedInput schema / properties / carrierId / description
        Added value: +"Filter by carrier ID"
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / getDeleted / description
        Added value: +"Include deleted pending consignments"
      • addedInput schema / properties / includeChildCompanies / description
        Added value: +"Include pending consignments from child companies"
      • addedInput schema / properties / retrieveSize / description
        Added value: +"Number of results to return (max 200)"
      • addedInput schema / properties / startIndex / description
        Added value: +"Pagination start index"
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_routes2 fields changed
      • addedInput schema / properties / request / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_routes_batch2 fields changed
      • addedInput schema / properties / requests / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_routes_complex_items2 fields changed
      • addedInput schema / properties / request / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_special_instructions_pdf2 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_unmanifested_consignment_for_edit2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_get_unmanifested_consignments4 fields changed
      • addedInput schema / properties / carrierId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / startIndex / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_group_all_for_manifest2 fields changed
      • addedInput schema / properties / companyId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_group_and_perform_consolidation2 fields changed
      • addedInput schema / properties / options / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_group_consignments_for_consolidation2 fields changed
      • addedInput schema / properties / options / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_group_consignments_for_manifest2 fields changed
      • addedInput schema / properties / consignmentIds / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_group_consignments_for_printing2 fields changed
      • addedInput schema / properties / consignmentIds / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_link_identities_to_companies5 fields changed
      • removedInput schema / properties / links / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / links / items / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / links / items / properties / identityId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / links / items / properties / roles / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_manifest_consignments2 fields changed
      • addedInput schema / properties / manifests / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_perform_consolidation2 fields changed
      • addedInput schema / properties / request / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_ping1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_rebook_manifest_pickup2 fields changed
      • addedInput schema / properties / rebooking / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_reenable_identities2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_remove_organisation_link2 fields changed
      • addedInput schema / properties / request / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_reset_organisation_public_key2 fields changed
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_return_identity_public_keys2 fields changed
      • addedInput schema / properties / ids / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_return_item_pdfs_for_consignments2 fields changed
      • addedInput schema / properties / consignmentIds / items / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_search_consignments1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_search_locations1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_send_labels_to_printer2 fields changed
      • addedInput schema / properties / requests / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_unlink_identities_from_companies4 fields changed
      • removedInput schema / properties / unlinks / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / unlinks / items / properties / companyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / unlinks / items / properties / identityId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_update_consignment_statuses3 fields changed
      • removedInput schema / properties / statuses / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / statuses / items / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_update_custom_schema2 fields changed
      • addedInput schema / properties / schema / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_update_despatch_dates2 fields changed
      • addedInput schema / properties / updates / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_update_identity9 fields changed
      • addedInput schema / properties / businessPhone / description
        Added value: +"Business phone number"
      • addedInput schema / properties / emailAddress / pattern
        Added value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
      • addedInput schema / properties / id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / mobile / description
        Added value: +"Mobile number"
      • addedInput schema / properties / notes / description
        Added value: +"Additional notes about the identity"
      • addedInput schema / properties / owningCompanyId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / phone / description
        Added value: +"Phone number"
      • addedInput schema / properties / position / description
        Added value: +"Job position or title"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_update_reprice_consignment2 fields changed
      • addedInput schema / properties / body / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_upload_attachments5 fields changed
      • removedInput schema / properties / attachments / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / attachments / items / properties / attachmentTypeId / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / attachments / items / properties / attachmentTypeId / minimum
        Added value: +-9007199254740991
      • addedInput schema / properties / attachments / items / properties / consignmentId / maximum
        Added value: +9007199254740991
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmachship_upload_commercial_invoice3 fields changed
      • addedInput schema / properties / consignmentId / maximum
        Added value: +9007199254740991
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "errors": {
        +      "anyOf": [
        +        {
        +          "items": {},
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Validation errors returned by Machship, if any"
        +    },
        +    "object": {
        +      "description": "Response payload from the Machship API"
        +    }
        +  },
        +  "type": "object"
        +}
  2. 125 tool updatesv1.0.0
    • First observedmachship_add_organisation_link
    • First observedmachship_add_permanent_pickups
    • First observedmachship_attempt_auto_reconciliation
    • First observedmachship_create_company_location
    • First observedmachship_create_consignment
    • First observedmachship_create_consignment_existing_items
    • First observedmachship_create_consignment_with_complex_items
    • First observedmachship_create_custom_schema
    • First observedmachship_create_identities
    • First observedmachship_create_item_complex
    • First observedmachship_create_pending_consignment
    • First observedmachship_create_quote
    • First observedmachship_create_quote_complex_items
    • First observedmachship_delete_consignments
    • First observedmachship_delete_custom_schema
    • First observedmachship_delete_identities
    • First observedmachship_delete_item
    • First observedmachship_delete_pending_consignments
    • First observedmachship_disable_identities
    • First observedmachship_edit_company_location
    • First observedmachship_edit_consignment
    • First observedmachship_get_active_consignments
    • First observedmachship_get_all_consignments
    • First observedmachship_get_attachment
    • First observedmachship_get_attachment_pod_report
    • First observedmachship_get_attachments_by_consignment_ids
    • First observedmachship_get_available_roles
    • First observedmachship_get_carrier_invoice_entries
    • First observedmachship_get_carrier_invoices
    • First observedmachship_get_commercial_invoice_pdf
    • First observedmachship_get_companies
    • First observedmachship_get_company_carriers
    • First observedmachship_get_company_location
    • First observedmachship_get_company_locations
    • First observedmachship_get_completed_consignments
    • First observedmachship_get_consignment
    • First observedmachship_get_consignment_attachments
    • First observedmachship_get_consignment_by_pending_id
    • First observedmachship_get_consignment_creation_settings
    • First observedmachship_get_consignment_for_clone
    • First observedmachship_get_consignment_label_pdf
    • First observedmachship_get_consignment_notes
    • First observedmachship_get_consignment_pdf_file_info
    • First observedmachship_get_consignment_statuses
    • First observedmachship_get_consignments_by_carrier_id
    • First observedmachship_get_consignments_by_ids
    • First observedmachship_get_consignments_by_pending_ids
    • First observedmachship_get_consignments_by_reference1
    • First observedmachship_get_consignments_by_reference2
    • First observedmachship_get_custom_schema
    • First observedmachship_get_custom_schemas
    • First observedmachship_get_dangerous_goods_pdf
    • First observedmachship_get_dangerous_goods_pdf_file_info
    • First observedmachship_get_identities
    • First observedmachship_get_identity
    • First observedmachship_get_identity_provider
    • First observedmachship_get_identity_providers_for_company
    • First observedmachship_get_identity_providers_for_logged_user
    • First observedmachship_get_identity_providers_for_organisation
    • First observedmachship_get_invoice_by_document_number
    • First observedmachship_get_item
    • First observedmachship_get_item_by_sku
    • First observedmachship_get_item_complex
    • First observedmachship_get_item_complex_by_sku
    • First observedmachship_get_item_label_pdf
    • First observedmachship_get_item_labels_zip
    • First observedmachship_get_item_pdf_file_info
    • First observedmachship_get_items
    • First observedmachship_get_items_by_skus
    • First observedmachship_get_items_complex
    • First observedmachship_get_linked_from_organisations
    • First observedmachship_get_linked_to_organisations
    • First observedmachship_get_locations_exact
    • First observedmachship_get_locations_with_options
    • First observedmachship_get_manifest_label_pdf
    • First observedmachship_get_manifest_label_pdf_by_consignment
    • First observedmachship_get_manifest_pdf_file_info
    • First observedmachship_get_manifests
    • First observedmachship_get_mo41_document_pdf
    • First observedmachship_get_mo41_document_pdf_file_info
    • First observedmachship_get_organisation_by_public_key
    • First observedmachship_get_organisation_links
    • First observedmachship_get_organisation_public_key
    • First observedmachship_get_pending_consignment
    • First observedmachship_get_pending_consignments_by_ids
    • First observedmachship_get_pending_consignments_by_reference1
    • First observedmachship_get_pending_consignments_by_reference2
    • First observedmachship_get_permanent_pickups
    • First observedmachship_get_posted_invoices
    • First observedmachship_get_quote
    • First observedmachship_get_quotes
    • First observedmachship_get_recent_consignments
    • First observedmachship_get_recent_pending_consignments
    • First observedmachship_get_routes
    • First observedmachship_get_routes_batch
    • First observedmachship_get_routes_complex_items
    • First observedmachship_get_special_instructions_pdf
    • First observedmachship_get_unmanifested_consignment_for_edit
    • First observedmachship_get_unmanifested_consignments
    • First observedmachship_group_all_for_manifest
    • First observedmachship_group_and_perform_consolidation
    • First observedmachship_group_consignments_for_consolidation
    • First observedmachship_group_consignments_for_manifest
    • First observedmachship_group_consignments_for_printing
    • First observedmachship_link_identities_to_companies
    • First observedmachship_manifest_consignments
    • First observedmachship_perform_consolidation
    • First observedmachship_ping
    • First observedmachship_rebook_manifest_pickup
    • First observedmachship_reenable_identities
    • First observedmachship_remove_organisation_link
    • First observedmachship_reset_organisation_public_key
    • First observedmachship_return_identity_public_keys
    • First observedmachship_return_item_pdfs_for_consignments
    • First observedmachship_search_consignments
    • First observedmachship_search_locations
    • First observedmachship_send_labels_to_printer
    • First observedmachship_unlink_identities_from_companies
    • First observedmachship_update_consignment_statuses
    • First observedmachship_update_custom_schema
    • First observedmachship_update_despatch_dates
    • First observedmachship_update_identity
    • First observedmachship_update_reprice_consignment
    • First observedmachship_upload_attachments
    • First observedmachship_upload_commercial_invoice

TDQS

B3.1/5.0

Scored across 125 tools

Disambiguation2/5

Several tool pairs are functionally near-duplicates: the PDF getters exist in two flavours (e.g. machship_get_consignment_label_pdf vs machship_get_consignment_pdf_file_info, same for item, manifest, dangerous goods and MO41), and machship_get_item_labels_zip vs machship_return_item_pdfs_for_consignments is explicitly the same operation with a different payload style. Search surfaces also overlap heavily: machship_search_consignments versus the three machship_get_consignments_by_reference1/reference2/carrier_id tools, and machship_search_locations vs machship_get_locations_exact vs machship_get_locations_with_options. On top of that, machship_create_quote and machship_get_routes both return carrier rate options, making selection genuinely uncertain.

Naming Consistency4/5

Almost every tool follows a predictable machship_verb_noun snake_case pattern (get_, create_, update_, delete_, group_, upload_). Minor deviations exist: machship_ping has no verb_noun form, 'edit' is used alongside 'update' (machship_edit_consignment, machship_edit_company_location vs machship_update_custom_schema, machship_update_despatch_dates), and 'return' is used inconsistently (machship_return_identity_public_keys, machship_return_item_pdfs_for_consignments). These are small blemishes rather than a broken convention.

Tool Count1/5

125 tools for a single server is far past any reasonable agent-facing surface; selection cost and misselection risk dominate. A meaningful chunk of that count is redundant (duplicated PDF variants, POST-vs-GET duplicates, three location search variants), so the surface could be halved without losing capability. Even for a broad TMS domain, this is an extreme overload.

Completeness4/5

Coverage across the freight lifecycle is genuinely deep: consignments (create/edit/delete/search/statuses/despatch dates), pending consignments, quoting and route shopping, manifests and rebooking, labels/PODs/commercial invoices, attachments, items, locations, identities/roles, organisation links, custom schemas and carrier invoice reconciliation. The main gaps are around items (there is create_item_complex and delete_item but no standard create_item and no update/edit item) and no manifest cancellation operation. These are minor and workable rather than blocking.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage global shipping operations, including rate comparison, shipment creation, label purchasing, tracking, pickup scheduling, address validation, billing, and analytics, via natural language.
    32 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to track packages, rate and create shipments, manage pickups and customs documentation, and perform international shipping logistics checks through natural language.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants in Cursor and other MCP hosts to connect to a company REST API, handling token-based authentication, read-only lookups, and guarded job/package creation with optional shipping labels.
    16 npm
    MIT