Skip to main content
Glama

A self-hostable Model Context Protocol server for Alopeyk (الوپیک) — an Iranian on-demand delivery & logistics company.

CI Docker Python 3.11+ License: MIT


Unofficial integration. This is a community-built MCP server. The "Alopeyk" and "Alonomic" names and logos belong to their owner. Not affiliated with, endorsed by, or sponsored by Alopeyk. Creating real deliveries/parcels incurs real charges — use the order tools at your own risk.

alopeyk-mcp exposes Alopeyk's APIs as MCP tools and prompts so an LLM agent (Claude, etc.) can geocode addresses, quote and track deliveries, manage business parcels, and — when you explicitly allow it — create and cancel real deliveries/parcels. It is a small, stateless, async Python process you run yourself.

It mirrors the structure and quality of the sibling ramzinex-mcp / roshan-* servers: typed httpx client, pydantic-settings configuration, full test suite, Docker / Helm / Kubernetes / Terraform deploy assets, and generated architecture diagrams.

Two services in one server

Alopeyk runs two distinct API services, and this server wraps both behind one process, routing each call to the right base automatically:

Service

Base URL

Auth

Tool prefix

On-Demand

https://api.alopeyk.com/api/v2/ (sandbox: https://sandbox-api.alopeyk.com/api/v2/)

Authorization: Bearer <access_token> (pre-issued JWT)

alopeyk_

Alonomic (الونومیک)

https://api.alopeyk.com/business-service/api/v1/

email/password → token (cached, re-login on 401), or pre-issued alonomic_token

alonomic_

🔐 Required header

Every call to both services carries:

X-Requested-With: XMLHttpRequest
Content-Type: application/json; charset=utf-8

The server adds these automatically.

⚠️ Ordering safety

Creating, updating, cancelling, or finishing real deliveries/parcels (and buying loyalty products) is gated by a single per-instance flag, default false:

  • enable_ordering gates alopeyk_create_order, alopeyk_cancel_order, alopeyk_finish_order, alopeyk_loyalty_products(buy=true), alonomic_create_parcel, alonomic_update_parcel, and alonomic_cancel_parcel.

A master read_only flag forces ordering off regardless of its value. When the gate is off the tool returns a structured refusal and never calls the API:

{"error": "ordering_disabled", "message": "Set enable_ordering=true (and read_only=false) to create/modify real deliveries/parcels."}

Read-only tools (geocoding, pricing, viewing orders/parcels, days, sizes, address book) are always allowed. The access token, the Alonomic login token, and the password are never logged and are redacted from every error message.

Production vs. sandbox — selected per instance by environment:

environments

Related MCP server: royalmail-mcp

Install

pip install -e .            # from a checkout
# or, for development:
pip install -e ".[dev]"

Requires Python 3.11+.

Quick start

The offline/static tools (docs, transport types, cities, URL helpers, parcel statuses) work with zero configuration:

python -m alopeyk_mcp          # stdio transport (default)

To use On-Demand tools, provide the pre-issued JWT; to use Alonomic tools, provide an email + password (or a pre-issued alonomic_token):

export ALOPEYK_ENVIRONMENT=production              # or sandbox
# On-Demand (/api/v2/):
export ALOPEYK_ACCESS_TOKEN=your-ondemand-jwt
# Alonomic (/business-service/): email + password login (cached, re-login on 401)
export ALOPEYK_EMAIL=ops@example.com
export ALOPEYK_PASSWORD=your-password
# ...or a pre-issued Alonomic token instead:
# export ALOPEYK_ALONOMIC_TOKEN=your-alonomic-token

# Opt in to the gated mutation tools (default false):
export ALOPEYK_ENABLE_ORDERING=true                # allow create/cancel/finish + parcels
python -m alopeyk_mcp

Run over HTTP for networked clients:

python -m alopeyk_mcp --transport streamable-http --host 0.0.0.0 --port 8000

Order lifecycle — creating/cancelling is gated by enable_ordering:

order-lifecycle

Configuration (multi-account / multi-instance)

Configuration is read from environment variables via pydantic-settings. One process can front many Alopeyk accounts/environments — each is a named instance with its own credentials and safety policy. Every API tool accepts an optional instance argument; omit it to use the default.

Shorthand (single default instance)

Variable

Default

Description

ALOPEYK_ENVIRONMENT

production

production or sandbox (selects default base/tracking URLs).

ALOPEYK_ACCESS_TOKEN

On-Demand JWT (Authorization: Bearer).

ALOPEYK_EMAIL

Alonomic login email (with ALOPEYK_PASSWORD).

ALOPEYK_PASSWORD

Alonomic login password.

ALOPEYK_ALONOMIC_TOKEN

Pre-issued Alonomic token (wins over email/password).

ALOPEYK_ENABLE_ORDERING

false

Allow creating/modifying real deliveries/parcels.

ALOPEYK_READ_ONLY

false

Master switch: forces ordering off.

ALOPEYK_ONDEMAND_BASE_URL

derived

Override the On-Demand base URL.

ALOPEYK_BUSINESS_BASE_URL

derived

Override the Alonomic base URL.

ALOPEYK_TRACKING_URL

derived

Override the tracking web-app base URL.

ALOPEYK_VERIFY_SSL

true

Verify TLS certificates.

ALOPEYK_TIMEOUT

30

Per-request timeout (seconds).

ALOPEYK_DEFAULT_INSTANCE

default

Instance used when instance is omitted.

ALOPEYK_LOG_LEVEL

INFO

DEBUG / INFO / WARNING / ...

Nested (named instances)

Variable

Description

ALOPEYK__INSTANCES__<NAME>__ENVIRONMENT

production / sandbox for <NAME>.

ALOPEYK__INSTANCES__<NAME>__ACCESS_TOKEN

On-Demand JWT for <NAME>.

ALOPEYK__INSTANCES__<NAME>__EMAIL

Alonomic login email for <NAME>.

ALOPEYK__INSTANCES__<NAME>__PASSWORD

Alonomic login password for <NAME>.

ALOPEYK__INSTANCES__<NAME>__ALONOMIC_TOKEN

Pre-issued Alonomic token for <NAME>.

ALOPEYK__INSTANCES__<NAME>__ENABLE_ORDERING

Ordering switch for <NAME>.

ALOPEYK__INSTANCES__<NAME>__READ_ONLY

Master switch (forces ordering off) for <NAME>.

ALOPEYK__INSTANCES__<NAME>__ONDEMAND_BASE_URL

On-Demand base for <NAME>.

ALOPEYK__INSTANCES__<NAME>__BUSINESS_BASE_URL

Alonomic base for <NAME>.

ALOPEYK__INSTANCES__<NAME>__TRACKING_URL

Tracking base for <NAME>.

ALOPEYK__INSTANCES__<NAME>__VERIFY_SSL

TLS verification (default true).

ALOPEYK__INSTANCES__<NAME>__TIMEOUT

Per-request timeout seconds (default 30).

ALOPEYK__DEFAULT_INSTANCE

Instance used when instance is omitted.

ALOPEYK__LOG_LEVEL

DEBUG / INFO / WARNING / ...

Example: a production business account, a sandbox account, and a strictly read-only viewer.

ALOPEYK__INSTANCES__BIZ__ENVIRONMENT=production
ALOPEYK__INSTANCES__BIZ__ACCESS_TOKEN=prod-ondemand-jwt
ALOPEYK__INSTANCES__BIZ__EMAIL=ops@example.com
ALOPEYK__INSTANCES__BIZ__PASSWORD=secret
ALOPEYK__INSTANCES__BIZ__ENABLE_ORDERING=true
ALOPEYK__INSTANCES__SANDBOX__ENVIRONMENT=sandbox
ALOPEYK__INSTANCES__SANDBOX__ACCESS_TOKEN=sandbox-jwt
ALOPEYK__INSTANCES__SANDBOX__ENABLE_ORDERING=true
ALOPEYK__INSTANCES__READONLY__ACCESS_TOKEN=viewer-jwt
ALOPEYK__INSTANCES__READONLY__READ_ONLY=true
ALOPEYK__DEFAULT_INSTANCE=biz

See .env.example for a complete, annotated file. Use list_instances to see what's configured (names, environment, base URLs, has_ondemand_credentials, has_alonomic_credentials, alonomic_auth_method, enable_ordering, read_only, ordering_allowed) — it never reveals credential values.

Control flags & safety

Flag

Default

Gates

Effective when

enable_ordering

false

alopeyk_create_order, alopeyk_cancel_order, alopeyk_finish_order, alopeyk_loyalty_products(buy=true), alonomic_create_parcel, alonomic_update_parcel, alonomic_cancel_parcel

enable_ordering=true and read_only=false

read_only

false

forces enable_ordering off

When the gate is off, the tool returns {"error": "ordering_disabled", "message": ...} and never contacts the API.

Authentication

  • On-Demand — a pre-issued access_token (JWT), sent as Authorization: Bearer <token>. Required for all alopeyk_* network tools.

  • Alonomic — either a pre-issued alonomic_token, or email + password which the server POSTs to login, caching the returned token in memory per instance, reusing it, and re-authenticating once on a 401. Call alonomic_login to trigger/verify the login explicitly (it never returns the token).

The access token, the Alonomic token, and the password are never logged or echoed (Authorization / access_token / alonomic_token / token / password are all redacted from errors).

The read_only master switch overrides the enable_ordering gate:

safety-gates

Use with an MCP client

Add it to your client's MCP server config (stdio):

{
  "mcpServers": {
    "alopeyk": {
      "command": "python",
      "args": ["-m", "alopeyk_mcp"],
      "env": {
        "ALOPEYK_ENVIRONMENT": "production",
        "ALOPEYK_ACCESS_TOKEN": "your-ondemand-jwt",
        "ALOPEYK_EMAIL": "ops@example.com",
        "ALOPEYK_PASSWORD": "your-password",
        "ALOPEYK_ENABLE_ORDERING": "false"
      }
    }
  }
}

Tools

All 34 tools (17 On-Demand alopeyk_* + 14 Alonomic alonomic_* + 3 meta) accept an optional instance except the two purely-local meta tools (list_instances, alopeyk_docs).

On-Demand (alopeyk_) — /api/v2/, JWT Bearer

Tool

Method · Endpoint

Notes

alopeyk_get_address(lat, lng)

GET locations?latlng=<lat>,<lng>

reverse geocode

alopeyk_location_suggestion(input, latlng?)

GET locations?input=&location=

autocomplete

alopeyk_get_price(transport_type, addresses, has_return?, cashed?, optimize?)

POST orders/price/calc

read-only quote

alopeyk_get_batch_price(orders)

POST orders/batch-price

≤15 orders

alopeyk_create_order(transport_type, addresses, has_return?, cashed?, scheduled_at?, discount_coupon?)

POST orders

⚠️ enable_ordering

alopeyk_get_order(order_id)

GET orders/{id}?columns=...

read-only

alopeyk_cancel_order(order_id, comment)

GET orders/{id}/cancel?comment=

⚠️ enable_ordering

alopeyk_finish_order(order_id, comment?, rate?)

POST orders/{id}/finish

⚠️ enable_ordering

alopeyk_get_config()

GET config

read-only

alopeyk_get_profile()

GET show-profile?columns=*,credit

read-only

alopeyk_validate_coupon(code)

POST coupons

read-only

alopeyk_loyalty_products(product_id?, buy?)

GET|POST loyalty/customer/products/{id?}

buy ⚠️ enable_ordering

alopeyk_tracking_url(order_token)

local <tracking>#/<token>

no network

alopeyk_print_invoice_url(order_id, order_token)

local

no network

alopeyk_payment_route(user_id, amount, gateway=saman)

local (saman|zarinpal)

no network

alopeyk_transport_types()

local

motorbike, motor_taxi, cargo, cargo_s, car

alopeyk_cities()

local

tehran, shemiranat, rey, karaj, isfahan, tabriz, mashhad, shiraz

Alonomic (alonomic_) — /business-service/api/v1/, email/password login

Tool

Method · Endpoint

Notes

alonomic_login()

POST login

caches token (never returns it)

alonomic_get_me()

GET me

read-only

alonomic_get_days()

GET days

read-only

alonomic_get_days_index()

GET days/index

7 days, each {same, next}

alonomic_create_parcel(drop, parcel, pickup, delivery_proofs?, parcel_extra_params?)

POST parcels

⚠️ enable_ordering

alonomic_get_parcel(parcel_id)

GET parcels/{id}

read-only

alonomic_update_parcel(parcel_id, ...)

PUT parcels/{id}

⚠️ enable_ordering

alonomic_cancel_parcel(parcel_id)

DELETE parcels/{id}

⚠️ enable_ordering (204)

alonomic_calc_parcel(drop, parcel, pickup?)

POST parcels/calc

read-only estimate

alonomic_get_parcel_sizes()

GET parcels/size

12 box sizes

alonomic_get_saved_addresses()

GET pickup-saved-addresses

read-only

alonomic_add_saved_address(title, lat, lng, address, ...)

POST pickup-saved-addresses

address book

alonomic_delete_saved_address(address_id)

DELETE pickup-saved-addresses/{id}

address book (204)

alonomic_parcel_statuses()

local

static status → Persian label map

Meta

Tool

Description

healthcheck

Calls the On-Demand config endpoint and reports reachability.

list_instances

Lists configured instances (environment, base URLs, which creds set, enable_ordering, read_only, ordering_allowed) — never credential values.

alopeyk_docs(topic?)

Offline reference for both services + links to https://docs.alopeyk.com.

⚠️ = creates/modifies a real delivery/parcel; gated by enable_ordering (forced off by read_only).

All 34 tools at a glance, grouped by service:

endpoint-map

Prompts

The server also ships MCP prompts — safety-aware workflows your client can list and run (details in prompts/README.md):

  • quote_delivery — geocode origin/destination, then quote with alopeyk_get_price.

  • create_delivery_safely — a careful checklist that verifies enable_ordering, confirms addresses/type/price, then creates the order.

  • track_orderalopeyk_get_order + alopeyk_tracking_url.

  • alonomic_send_parcel — login → days/indexcalc → create the parcel safely.

  • address_book — review Alonomic saved addresses + parcel box sizes.

Skill

A ready-to-use Claude/agent skill lives at skills/alopeyk/SKILL.md. It describes when and how to use these tools across both services — quoting/tracking, the safe delivery flow, and the Alonomic parcel flow — with example tool sequences.

Architecture

The MCP client talks to one alopeyk-mcp process, which routes alopeyk_* calls to the On-Demand API (/api/v2/) and alonomic_* calls to the Alonomic business API (/business-service/api/v1/).

architecture

One process can serve many accounts/environments; the instance argument selects which credentials / ordering policy to use.

self-hosting

A typical On-Demand flow: suggest/geocode an address, quote the price, check the enable_ordering gate, then create and track the order.

request-flow

The full tool surface, grouped by service: The order lifecycle and the Alonomic parcel flow: alonomic-parcel-flow

The read_only master switch over enable_ordering, and the two environments: Regenerate the diagrams with make diagrams (uses the diagrams package + Graphviz dot and cairosvg).

Self-hosting & scaling

alopeyk-mcp is stateless, so you can run as many replicas as you like behind a load balancer. One process fronts multiple accounts via ALOPEYK__INSTANCES__<NAME>__* — no code change. Back off on HTTP 429 if Alopeyk rate-limits you. See deploy/ for Docker Compose, Kubernetes (raw + Kustomize), a Helm chart, and a Terraform module.

Testing

make smoke          # no-network smoke test (tools + prompts + descriptions)
make test           # full pytest suite (offline; all HTTP incl. Alonomic login mocked with respx)
make lint           # ruff

Live tests against the real API are skipped unless ALOPEYK_LIVE=1 is set (and the relevant credentials provided):

ALOPEYK_LIVE=1 ALOPEYK_ACCESS_TOKEN=... pytest tests/live -q

License

MIT. alopeyk-mcp is an unofficial, community-built integration; the Alopeyk and Alonomic names and logos belong to their owner.

Available Tools

34 tools
alonomic_add_saved_addressA

Save a new pickup address.

Persian purpose: افزودن یک آدرس پیکاپ جدید. Maps to POST /business-service/api/v1/pickup-saved-addresses. This manages your address book (not a delivery), so it is NOT gated by enable_ordering.

Args: title: A label for the saved address. lat: Latitude (-90..90). lng: Longitude (-180..180). address: Free-text street address. person_name: Optional contact name at the address. person_phone: Optional contact phone. plate_number: Optional building plate number. unit_number: Optional unit number. postal_code: Optional postal code. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
latYes
lngYes
addressYes
person_nameNo
person_phoneNo
plate_numberNo
unit_numberNo
postal_codeNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided. The description indicates a POST mapping and 'Save a new pickup address,' implying creation. It does not disclose error conditions, idempotency, side effects, or permissions beyond the absence of the enable_ordering gate.

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?

Purpose stated first, then endpoint, then parameter list. The Persian sentence is redundant for English agents but does not harm clarity. The parameter list is well-organized but slightly long. Overall 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?

Given 10 parameters, 0% schema coverage, no annotations, and an output schema (context indicates it exists), the description adequately covers the tool's function and parameter semantics. It does not explain output, but output schema presumably handles that. No major gaps.

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 0%, so the description carries full burden. It lists all 10 parameters with brief but helpful explanations (e.g., lat: 'Latitude (-90..90)' adds constraint, address: 'Free-text street address'). While not exhaustive, it adds meaningful context beyond the schema's names and types.

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 'Save a new pickup address,' specifies the endpoint, and distinguishes this address-book operation from delivery tools. It explicitly mentions it is not gated by enable_ordering, separating it from other tools.

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 states when to use (address book, not delivery) and explicitly says 'NOT gated by enable_ordering,' giving context on prerequisites. However, it does not explicitly compare to sibling tools like alonomic_delete_saved_address or alonomic_get_saved_addresses, nor provide when-not-to-use scenarios.

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

alonomic_calc_parcelA

Estimate a parcel's price and dimensions (read-only).

Persian purpose: محاسبه هزینه و ابعاد یک مرسوله. Does NOT create a parcel. Maps to POST /business-service/api/v1/parcels/calc. The response includes id, length, width, height, worth.

Args: drop: Drop-off, {address: {province, city}} (route end). parcel: {size, value, weight, is_packaging_required?, is_label_required?}. pickup: Optional {date_type, date, address: {province, city}}. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
dropYes
parcelYes
pickupNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must carry the burden. It states read-only and non-creating behavior, and lists response fields, but does not disclose auth needs, rate limits, or other side effects. 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?

Efficiently conveys purpose, endpoint, and parameter details in a short paragraph. Front-loaded with main purpose. Could be slightly more concise, but no wasted sentences.

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 output schema present, description only needs to highlight key return fields, which it does. Covers all parameters with adequate detail for a nested-object tool. Leaves little ambiguity.

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 0%, so description compensates fully by explaining each parameter's content (drop address structure, parcel fields, optional pickup details, instance). Adds meaning beyond vague schema types.

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?

Description states specific verb 'Estimate' and resource 'parcel's price and dimensions', and explicitly says 'read-only' and 'Does NOT create a parcel', clearly distinguishing from sibling 'alonomic_create_parcel'.

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 states that the tool is read-only and does not create a parcel, providing clear context for when to use (estimation) vs. alternative creation tools. However, lacks explicit when-not or other alternative names.

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

alonomic_cancel_parcelA

Cancel a parcel before pickup — WARNING: changes a real parcel.

Persian purpose: لغو یک مرسوله پیش از جمع‌آوری. Requires Alonomic credentials AND enable_ordering=true (and read_only=false); otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to DELETE /business-service/api/v1/parcels/{id} (HTTP 204 on success).

Args: parcel_id: Numeric id of the parcel to cancel. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
parcel_idYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description reveals key behavioral traits: it changes a real parcel (destructive), maps to a DELETE operation returning HTTP 204, and requires specific conditions. It does not mention idempotency or rate limits, but provides sufficient insight for safe use.

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?

The description is compact, starting with purpose and warning, then prerequisites, HTTP mapping, and parameter docs. Every sentence adds value, and the Persian translation is a nice touch without being verbose.

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 tool's simplicity and existence of an output schema, the description covers purpose, prerequisites, error cases, and parameters. It does not discuss idempotency or retry behavior, but overall it is sufficiently complete for a cancel operation.

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 0%, so the description adds meaning by explaining parcel_id as numeric id and instance as configured instance with default. While brief, it provides necessary context beyond the schema types.

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 tool cancels a parcel before pickup, using specific verbs and resource. It distinguishes from sibling tools like alonomic_create_parcel or alonomic_get_parcel by explicitly focusing on cancellation before pickup.

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 provides clear prerequisites (credentials, enable_ordering=true, read_only=false) and explains the error response when prerequisites are not met. However, it does not explicitly state when not to use this tool compared to alternatives (e.g., after pickup or using other cancel tools).

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

alonomic_create_parcelA

Create a REAL business parcel — WARNING: this is billable.

Persian purpose: ثبت یک مرسوله واقعی. Requires Alonomic credentials AND enable_ordering=true (and read_only=false); otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to POST /business-service/api/v1/parcels.

Args: drop: Drop-off, {address: {province, city, lat, lng, address, person_name, person_phone, plate_number, unit_number, postal_code, description}}. parcel: Parcel details, {size:int, barcode?, invoice?, value:int, weight:int, is_packaging_required:0/1, is_label_required:0/1}. pickup: Pickup, {date, date_type:"same"|"next", address: {lat, lng, address, person_name, person_phone, postal_code}}. delivery_proofs: Optional {code, image, signature}. parcel_extra_params: Optional {custom_field_1, custom_field_2}. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
dropYes
parcelYes
pickupYes
delivery_proofsNo
parcel_extra_paramsNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It warns of billing and explains the error response when ordering is disabled. It does not mention side effects like irreversibility, but the warning about 'real business parcel' implies a permanent mutation. Overall transparent enough.

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 well-organized with a bold warning, Persian text, endpoint mapping, and structured Args. It is informative but slightly verbose; could be more concise without losing clarity.

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 complex tool with 6 parameters, nested objects, and no schema descriptions, the description is comprehensive. It covers all necessary information: purpose, preconditions, error handling, parameter structures, and endpoint. The presence of an output schema further reduces burden.

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 0%, so the description fully explains each parameter. The Args section provides detailed structure for drop, parcel, pickup, delivery_proofs, parcel_extra_params, and instance, including nested objects and optional fields. This exceeds what the schema alone offers.

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 verb ('Create') and resource ('REAL business parcel'), and includes a warning about billing. It distinguishes from siblings such as alonomic_calc_parcel (calculation vs. creation) and alonomic_update_parcel (update vs. create).

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 specifies prerequisites: Alonomic credentials, enable_ordering=true, read_only=false. It also warns about billable nature. Although it doesn't explicitly state when not to use it, the precondition effectively guides usage. Could mention alternatives like alonomic_calc_parcel for non-billable estimates.

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

alonomic_delete_saved_addressA

Delete a saved pickup address.

Persian purpose: حذف یک آدرس پیکاپ ذخیره‌شده. Maps to DELETE /business-service/api/v1/pickup-saved-addresses/{id} (HTTP 204 on success). Manages the address book, so it is NOT gated by enable_ordering.

Args: address_id: Numeric id of the saved address to delete. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
address_idYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context (e.g., not gated by enable_ordering, HTTP 204 on success). It does not cover error conditions, idempotency, or side effects beyond deletion.

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 concise and well-structured, with key information upfront. The Persian line may be extraneous for an English-speaking agent but does not detract significantly.

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 description covers core functionality but omits details like error handling, authorization requirements, and output expectations (though output schema exists). Given the tool's simplicity, it is adequate but not thorough.

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?

Despite 0% schema coverage, the description adds meaningful context for both parameters: 'Numeric id of the saved address to delete' and 'Configured instance to use.' This goes beyond the schema's type and default information.

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 ('Delete a saved pickup address') and resource, includes a Persian translation, and maps to the HTTP DELETE endpoint. It distinguishes from sibling tools like add or get.

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 provides context that the tool is not gated by enable_ordering, helping the agent understand when it applies. However, it does not explicitly state when to use vs alternatives or when not to use.

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

alonomic_get_daysA

Get today/tomorrow working pickup days (read-only).

Persian purpose: دریافت روزهای کاری امروز و فردا. Maps to GET /business-service/api/v1/days.

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description notes the tool is read-only and maps to a GET endpoint, providing basic behavioral context. However, it omits details about rate limits, error handling, or any constraints on the data 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 description is concise and front-loaded with the main purpose. The inclusion of a Persian translation is extra but not harmful. The structure is clear and efficient, though the Persian line is redundant for English agents.

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 tool has one optional parameter and an output schema, the description covers the essential information: purpose, param, and read-only nature. It does not describe the output format, but the output schema compensates. Overall adequate for a simple 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 parameter 'instance' is briefly explained as 'Configured instance to use (default when omitted)', which adds some meaning beyond the schema's type definition. However, with 0% schema description coverage and only one parameter, a more detailed explanation of 'instance' values or defaults would improve clarity.

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 it gets working pickup days for today/tomorrow and specifies it is read-only. It also provides the API endpoint, distinguishing it from siblings like 'alonomic_get_days_index' which likely serves a different purpose.

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 for retrieving current and next day's pickup slots but does not explicitly state when to use this tool versus alternatives like 'alonomic_get_days_index' or other scheduling tools. No exclusions or context are provided.

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

alonomic_get_days_indexA

Get the next 7 days with same/next-day availability (read-only).

Persian purpose: تقویم ۷ روز آینده با امکان ارسال همان‌روز/روز بعد. Maps to GET /business-service/api/v1/days/index. Each day is shaped like {same: bool, next: bool}.

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It explicitly labels the tool as 'read-only', maps to a GET endpoint, and indicates data structure. This is sufficient for basic transparency, though rate limits or auth aren't 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?

Compact and well-organized: main English purpose, Persian translation for locale, endpoint reference, data shape, and argument docs. No wasted words, but could be slightly more structured with separate sections.

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 an output schema exists, return values need no description. The description covers purpose, data shape, endpoint, and parameters. It is largely complete for a simple read tool, though clarity on sibling differentiation 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?

With 0% schema description coverage, the description adds value by explaining the 'instance' parameter as 'Configured instance to use (default when omitted).' However, it remains brief and does not elaborate on instance selection or behavior beyond defaults.

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?

Clearly states it retrieves the next 7 days with same/next-day availability, provides the API endpoint, and describes the shape of each day object as {same: bool, next: bool}. This goes beyond a simple verb+resource to include scope and data structure.

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?

No explicit guidance on when to use this tool versus siblings like alonomic_get_days. The 'read-only' hint implies it should be used for non-mutative queries, but lacks direct comparisons or exclusions.

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

alonomic_get_meA

Get the Alonomic business account profile and credit (read-only).

Persian purpose: دریافت اطلاعات حساب کاربری الونومیک. Logs in implicitly if needed. Maps to GET /business-service/api/v1/me. Returns {id, name, phone_number, email, credit, final_credit}.

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description takes full burden. Declares read-only, implicit login, endpoint mapping, and return fields. Lacks error handling or rate limits but sufficient for a simple retrieval.

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?

Very concise: two lines of English, Persian translation, endpoint, return fields, and parameter explanation. No redundant words.

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 output schema present, description covers all needed: purpose, usage, parameter, return values. Complete for a simple read-only tool.

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 has one parameter 'instance' with no description. The description adds 'Configured instance to use (default when omitted)', clarifying its purpose and optionality. Schema coverage 0% makes this addition valuable.

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?

Description clearly states 'Get the Alonomic business account profile and credit (read-only)'. Provides Persian translation and endpoint mapping, leaving no ambiguity. Distinct from sibling tools like alonomic_login.

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?

Mentions 'Logs in implicitly if needed', giving context on when to call. However, no explicit when-not-to-use or comparison to alternatives beyond the read-only nature.

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

alonomic_get_parcelA

Get one business parcel by id (read-only).

Persian purpose: دریافت مشخصات یک مرسوله. Maps to GET /business-service/api/v1/parcels/{id}.

Args: parcel_id: Numeric id of the parcel. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
parcel_idYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It states read-only and maps to a GET endpoint, but does not disclose permissions, rate limits, or what happens if the parcel does not exist.

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?

The description is extremely concise, with a clear purpose in the first sentence and a single additional sentence for parameters. No wasted words.

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 presence of an output schema reduces the need to describe return values. However, the description lacks context about when this tool is appropriate relative to many sibling tools and does not address error conditions or prerequisites.

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

Parameters2/5

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

Schema coverage is 0%, so the description must add value. It describes parcel_id as 'numeric id' and instance as 'configured instance'—these are slightly informative but still vague, especially for instance, which defaults to null.

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 tool retrieves one business parcel by ID and is read-only. It effectively distinguishes from sibling tools like create, cancel, and update, which involve mutations.

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 use for fetching parcel details but provides no explicit guidance on when to use this tool versus alternatives (e.g., alopeyk_get_order). No exclusions or prerequisites are mentioned.

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

alonomic_get_parcel_sizesB

List the standard parcel box sizes (read-only).

Persian purpose: فهرست اندازه‌های استاندارد جعبه. Maps to GET /business-service/api/v1/parcels/size (12 box sizes with dimensions).

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states the tool is read-only and lists sizes, but does not disclose authentication needs, rate limits, error behaviors, or what happens if the instance parameter is omitted. Minimal disclosure beyond the obvious.

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?

Description is concise: 6 lines covering purpose, Persian translation, API mapping, and parameter explanation. No unnecessary words, but the structure could be improved by grouping related information. Still, it is well within acceptable length.

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 tool's simplicity (one optional parameter, read-only list), the description is mostly complete. It specifies the number of items (12) and dimensions. The existence of an output schema reduces the need to detail return values. Brief but adequate for basic usage.

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 0%, so description must add meaning. It explains the 'instance' parameter as a configured instance to use, with a default when omitted. This provides some context beyond the schema, but is brief and does not elaborate on how the instance is used or what constitutes a valid instance.

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?

Clearly states it lists standard parcel box sizes and is read-only. Specifies the API endpoint and mentions it returns 12 box sizes with dimensions. Distinguishes from sibling tools like create/update/cancel by being read-only.

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 guidance on when to use this tool vs alternatives. Only mentions it is read-only, but does not state when to choose it over other parcel-related tools. Lacks when-not-to-use or alternative references.

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

alonomic_get_saved_addressesB

List saved pickup addresses (read-only).

Persian purpose: فهرست آدرس‌های پیکاپ ذخیره‌شده. Maps to GET /business-service/api/v1/pickup-saved-addresses.

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It notes 'read-only' but does not disclose authorization needs, rate limits, or behavior when no addresses exist.

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 includes only necessary info, with a clear args list. However, the Persian line may be redundant for an English-speaking agent.

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?

Given the output schema exists and the tool is simple, the description is adequate for listing addresses but lacks completeness on behavioral context (e.g., pagination, error states).

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 0%, so description must add meaning. It explains the 'instance' parameter as 'Configured instance to use (default when omitted)', providing context beyond the schema but not specifying types or allowed values.

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 'List saved pickup addresses (read-only)', which is a specific verb+resource. It distinguishes from sibling tools like add or delete saved addresses.

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 for listing addresses but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives or exclusions.

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

alonomic_loginA

Log in to Alonomic and cache the token (no token leaked).

Persian purpose: ورود به سرویس الونومیک و کش‌کردن توکن. Runs the email/password login (POST /business-service/api/v1/login) and caches the returned token in memory for subsequent Alonomic calls. If the instance is configured with a pre-issued alonomic_token instead, it simply reports success. The token value is NEVER returned.

Args: instance: Configured instance to log in (default when omitted).

Returns: {authenticated: true, instance, method} on success, where method is "alonomic_token" or "login"; otherwise a structured error.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it caches the token in memory, never returns the token, calls POST /business-service/api/v1/login, and handles a pre-issued token scenario. The return structure is detailed.

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 reasonably concise, with key information front-loaded. The Persian repetition adds a minor redundancy but does not significantly detract.

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?

Given the output schema exists (mentioned) and the description covers input, endpoint, caching, return keys, and error behavior, it is complete for the tool's 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 0%, so the description must compensate. It adds a brief explanation for the 'instance' parameter ('Configured instance to log in (default when omitted)'), but this provides only basic context and no further semantics.

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 'Log in to Alonomic and cache the token (no token leaked).' It specifies the verb (login) and resource (Alonomic), and this tool is the only login tool among siblings, distinguishing it effectively.

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 before other Alonomic calls but does not explicitly state when to use or not use this tool. No alternatives are mentioned, so guidance is minimal.

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

alonomic_parcel_statusesA

List Alonomic parcel status codes and Persian labels (static).

Persian purpose: فهرست وضعیت‌های مرسوله و معنای فارسی آن‌ها. Returns a static map of status code -> Persian label. No request is sent.

Args: instance: Accepted for symmetry; ignored (static data).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Since no annotations are provided, the description fully discloses behavior: it is static, no request is sent, and the instance parameter is ignored. This gives the agent complete transparency about the tool's side effects (none) and behavior.

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?

The description is concise with no wasted words. The first sentence provides the core purpose, followed by a Persian translation and clear parameter explanation. It is well-structured and easy to parse.

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?

Given the tool's simplicity and the presence of an output schema, the description covers all necessary aspects: purpose, behavior, parameter semantics, and return type. No gaps are apparent.

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 description adds meaning to the single parameter 'instance' by explaining it is accepted for symmetry and ignored, which goes beyond the schema's type/default info. With 0% schema description coverage, this is valuable semantic context.

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 tool lists Alonomic parcel status codes and Persian labels, returning a static map. It distinguishes well from siblings which handle parcel creation, calculation, cancellation, etc., by specifying it's a static mapping with no request sent.

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 implies when to use (if you need status codes/labels) and indicates it's static and safe, but does not explicitly mention when not to use or provide alternatives. The context of sibling tools suggests alternatives for other operations.

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

alonomic_update_parcelA

Update a parcel before final send — WARNING: changes a real parcel.

Persian purpose: ویرایش یک مرسوله پیش از ارسال نهایی. Requires Alonomic credentials AND enable_ordering=true (and read_only=false); otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to PUT /business-service/api/v1/parcels/{id}. Only fields you pass are sent.

Args: parcel_id: Numeric id of the parcel to update. drop: Optional updated drop-off object. parcel: Optional updated parcel details object. pickup: Optional updated pickup object. delivery_proofs: Optional updated {code, image, signature}. parcel_extra_params: Optional {custom_field_1, custom_field_2}. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
parcel_idYes
dropNo
parcelNo
pickupNo
delivery_proofsNo
parcel_extra_paramsNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Warns about destructive nature upfront, explains API endpoint, specifies that only passed fields are sent, and describes error behavior. With no annotations, the description effectively discloses key behaviors.

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?

Well-structured with warning, purpose, and Args section. Persian translation is slightly extraneous but not detrimental. Generally 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?

Covers mutation behavior, prerequisites, error handling, and parameter roles. Output schema exists, so return values need not be detailed. Complete enough for effective tool selection.

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?

Lists all parameters with brief descriptions (e.g., 'Numeric id', 'Optional updated drop-off object'). Schema coverage is 0%, so description adds some meaning but lacks details about object structures.

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?

Clearly states 'Update a parcel before final send' with a warning that it changes a real parcel. Maps to PUT endpoint. Distinguishes from siblings like create_parcel and cancel_parcel.

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 states prerequisites (Alonomic credentials, enable_ordering=true, read_only=false) and notes error condition if disabled. Does not explicitly name alternative tools but provides clear context.

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

alopeyk_cancel_orderA

Cancel an order — WARNING: this changes a real delivery.

Persian purpose: لغو یک سفارش. On-Demand, requires an access_token AND enable_ordering=true (and read_only=false); otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to GET /api/v2/orders/{id}/cancel?comment=<c>.

Args: order_id: Numeric id of the order to cancel. comment: Reason / note for the cancellation (required by Alopeyk). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
commentYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses destructive nature, disabled state return, and underlying HTTP method. Could mention reversibility or side effects, but covers essential behavioral traits.

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 warning and purpose. Args section is clear. Slightly lengthy but every sentence adds value. Could be more concise without losing clarity.

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?

Covers prerequisites, parameter details, and API mapping. Missing description of return value, but output schema exists. Adequate for a cancellation tool with given complexity.

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?

Despite 0% schema coverage, the description explains each parameter: order_id as numeric, comment as required reason, instance as optional with default. Adds meaning beyond schema types.

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 'Cancel an order' with a warning about real delivery. It distinguishes itself from sibling tools like 'alonomic_cancel_parcel' by specifying it's for Alopeyk orders. Includes Persian purpose and API endpoint mapping.

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 warns about destructive action and states prerequisites (access_token, enable_ordering, read_only). Tells agent when the tool will fail. However, no direct comparison to siblings like 'alopeyk_finish_order' for alternative usage.

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

alopeyk_citiesA

List the cities served by Alopeyk On-Demand (static, no network).

Persian purpose: فهرست شهرهای تحت پوشش. Returns the static list of supported city slugs. No request is sent.

Args: instance: Accepted for symmetry; ignored (static data).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that no network request is sent and the tool is static. It also explains the instance parameter is ignored. This is transparent for a simple static tool, though it could note if there are any 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 description is concise at two lines plus an args section, but includes a redundant Persian phrase. Still, it is front-loaded with the core action and efficiently communicates key behavior.

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 tool's simplicity (one optional param, static data), the description covers purpose, parameter semantics, and return type. An output schema exists, so not explaining return values is acceptable. It is adequately complete.

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 0%, but the description adds meaning to the only parameter: 'instance' is explained as 'Accepted for symmetry; ignored (static data)'. This goes beyond the schema's bare typing and default value.

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 verb 'List' and the resource 'cities served by Alopeyk On-Demand'. It differentiates from siblings by emphasizing 'static, no network', which distinguishes it from tools that make network requests. The return type (list of city slugs) is explicitly mentioned.

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 tool versus alternatives. While it states 'static, no network' implying safety, it does not mention when not to use it or compare to sibling tools like alopeyk_get_address or alopeyk_location_suggestion.

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

alopeyk_create_orderA

Create a REAL delivery order — WARNING: this is billable.

Persian purpose: ثبت یک سفارش واقعی. On-Demand, requires an access_token AND enable_ordering=true (and read_only=false) on the instance; otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to POST /api/v2/orders.

Dispatches a courier and charges the account. Confirm the addresses, transport type, and price (via alopeyk_get_price) before calling.

Args: transport_type: Vehicle class (motorbike, motor_taxi, cargo, cargo_s, car). addresses: Ordered stops, each {type, lat, lng} — one origin and one or more destinations. has_return: Whether the courier returns to origin (default false). cashed: Whether the delivery is cash-on-delivery (default false). scheduled_at: Optional ISO timestamp to schedule the pickup. discount_coupon: Optional discount coupon code to apply. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
transport_typeYes
addressesYes
has_returnNo
cashedNo
scheduled_atNo
discount_couponNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, description discloses key traits: billable, dispatches courier, charges account, error if ordering_disabled. Missing details on idempotency or cancellation, but adequate for a creation 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?

Well-structured with warning, purpose, prerequisites, then parameter details. Front-loaded with critical info. Slightly verbose in repeating defaults that schema already provides, but overall efficient.

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?

Covers purpose, prerequisites, parameters, error conditions, and usage guidance. Output schema exists, so return values need not be described. Complete for a billable ordering tool.

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?

All 7 parameters are described with meaning, constraints, and examples (e.g., addresses format, transport_type values). Compensates fully for 0% schema coverage.

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?

Description clearly states it creates a real delivery order (billable), maps to POST /api/v2/orders, and distinguishes from siblings like alopeyk_get_price and alopeyk_cancel_order.

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 clear context: requires access_token, enable_ordering=true, and advises to confirm addresses/price via alopeyk_get_price before calling. Does not explicitly state when not to use, but context is sufficient.

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

alopeyk_docsA

Return offline documentation about both Alopeyk services and the tools.

Persian purpose: راهنمای آفلاین الوپیک و ابزارها. Use this to learn what Alopeyk offers across its On-Demand and Alonomic services and how each tool maps to the underlying API, without making any network call. Links point to https://docs.alopeyk.com.

Args: topic: Optional tool name (e.g. alopeyk_get_price or alonomic_create_parcel) to fetch docs for a single tool. When omitted, returns the service overview plus the full tool list.

Returns: A dict with service metadata and matching tool documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided. The description states it returns offline documentation without network calls, but does not mention idempotence, caching, or data freshness. More explicit safety guarantees would improve transparency.

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 well-structured with a purpose line, explanation, and args/returns. It is concise but includes all necessary details, though it could be slightly more compact.

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 documentation tool with one optional parameter and an output schema, the description covers usage well. It mentions the return format as a dict with service metadata and tool documentation, which combined with the output schema is sufficient.

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 only parameter 'topic' is clearly explained: it is an optional tool name to fetch docs for a single tool, and omitting returns the full overview. Schema has 0% description coverage, so the description adds necessary meaning.

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 tool returns offline documentation about Alopeyk services and tools. It includes a Persian purpose line and explains usage, distinguishing it from sibling API tools.

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 explicitly says to use this to learn about Alopeyk without network calls and explains when to provide a topic vs. omit. While it doesn't explicitly say when not to use or compare alternatives, the context makes it clear.

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

alopeyk_finish_orderA

Finish/close an order, optionally rating it — WARNING: real delivery.

Persian purpose: اتمام و امتیازدهی به یک سفارش. On-Demand, requires an access_token AND enable_ordering=true (and read_only=false); otherwise it returns {"error": "ordering_disabled", ...} without contacting the API. Maps to POST /api/v2/orders/{id}/finish with body {comment, rate}.

Args: order_id: Numeric id of the order to finish. comment: Optional free-text comment about the delivery. rate: Optional courier rating (typically 1-5). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
commentNo
rateNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description warns 'WARNING: real delivery', implies the action is terminal, and details the HTTP mapping and error conditions. This sufficiently discloses the tool's impact.

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 moderately long but well-structured: purpose, warning, prerequisites, HTTP mapping, and arg list. Each sentence adds value, though the Persian repetition slightly lengthens it.

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 no annotations and 4 parameters, the description covers purpose, prerequisites, HTTP details, and parameter semantics. It is complete enough for an ordering tool, though output schema is not described (but exists).

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 0%, but the description explains each parameter: order_id is numeric and required, comment is optional free-text, rate is optional 1-5, instance defaults when omitted. This adds significant meaning beyond 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 tool 'finishes/closes an order, optionally rating it' and provides the Persian purpose. It explicitly maps to a POST endpoint, distinguishing it from sibling tools like 'alopeyk_cancel_order'.

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 specifies prerequisites: requires access_token, enable_ordering=true, and read_only=false, and warns that otherwise an error is returned. It does not explicitly contrast with siblings, but the purpose alone makes it clear when to use this tool.

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

alopeyk_get_addressA

Reverse-geocode a coordinate to a human-readable address.

Persian purpose: تبدیل مختصات جغرافیایی به آدرس. On-Demand, requires an access_token. Maps to GET /api/v2/locations?latlng=<lat>,<lng>.

Args: lat: Latitude (-90..90). lng: Longitude (-180..180). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lngYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry full burden. It discloses the GET mapping and token requirement, suggesting idempotent read behavior. However, it lacks explicit statements about side effects, rate limits, or idempotence.

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?

The description is efficient: two sentences plus a bulleted Args list. The main purpose is front-loaded, and every sentence adds value. No unnecessary words.

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 an output schema exists, the description need not detail return values. It covers all three parameters, the API method, and authentication. Minor gaps: no example usage or formatting guide, but overall sufficient for a simple reverse geocoding tool.

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 0%, but the description adds meaning via the Args section: 'lat: Latitude (-90..90), lng: Longitude (-180..180), instance: Configured instance to use.' This provides range and purpose beyond the schema's titles and types.

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 'Reverse-geocode a coordinate to a human-readable address,' which is a specific verb and resource. The Persian purpose and API endpoint further clarify. It distinguishes from siblings like alopeyk_location_suggestion.

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 mentions 'On-Demand, requires an access_token' and maps to a GET endpoint, implying usage context. However, it does not explicitly state when to use this tool versus alternatives like alopeyk_location_suggestion or alonomic_get_addresses.

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

alopeyk_get_batch_priceA

Calculate prices for up to 15 orders in one call (read-only).

Persian purpose: محاسبه قیمت گروهی چند سفارش. On-Demand, requires an access_token. This does NOT create orders. Maps to POST /api/v2/orders/batch-price.

Args: orders: A list (max 15) of order objects, each shaped like the body of alopeyk_get_price (transport_type + addresses + flags). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
ordersYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, description must disclose behavior. It correctly states read-only and no order creation, but does not cover potential rate limits, error handling, or side effects beyond 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?

Description is concise with key info front-loaded. Two short paragraphs plus bullet. Could be more structured but no excess words.

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 batch pricing tool with an output schema, it covers the limit, order shape, read-only nature, and auth requirement. Lacks mention of error scenarios but is largely complete.

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 0%, but description adds meaning: orders must be max 15 objects shaped like alopeyk_get_price body (transport_type + addresses + flags). Instance parameter is explained as 'Configured instance to use (default when omitted).'

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 it calculates prices for up to 15 orders in one call and is read-only. It distinguishes itself from alopeyk_get_price (single order) and alopeyk_create_order (creates orders) by saying 'This does NOT create orders.'

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 mentions read-only, requires access_token, and max 15 orders. It implicitly compares to alopeyk_get_price for batch vs single, but does not explicitly state when not to use or list alternatives beyond that.

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

alopeyk_get_configA

Get the On-Demand service configuration (read-only).

Persian purpose: دریافت تنظیمات سرویس آن‌دیمند. Requires an access_token. Maps to GET /api/v2/config. Returns service-wide settings (pricing params, supported types, limits, ...).

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description fully bears the burden. It declares the tool as 'read-only', requires an access_token, and outlines the return type (service-wide settings). No contradictions. Missing details on rate limits or error behavior, but adequate for a simple getter.

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 concise with a clear structure: purpose, Persian line, endpoint, return summary, and args. The Persian line adds minor bloat but does not harm. Every sentence adds 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?

Given an output schema exists, the description need not detail return values, but it already summarizes them well. It covers auth, parameters, and endpoint. Slightly missing error scenarios, but overall sufficient for the tool's simplicity.

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 schema has 0% description coverage, so the description must compensate. It explains the single optional parameter 'instance' as 'Configured instance to use (default when omitted)', clarifying its role and default behavior beyond the schema's type anyOf.

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 'Get the On-Demand service configuration (read-only)' and provides the endpoint, distinguishing it from sibling tools that handle orders, profiles, cities, etc.

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 mentions the prerequisite of an access_token and implies it is for reading configuration, but does not explicitly specify when to use this over alternatives or provide when-not scenarios. Sibling tools are not compared.

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

alopeyk_get_orderA

Get one order with rich columns (status, courier, ETA) — read-only.

Persian purpose: مشخصات کامل یک سفارش. On-Demand, requires an access_token. Maps to GET /api/v2/orders/{id} with a rich columns set (addresses, progress, courier_info, eta_minimal, ...).

Args: order_id: Numeric id of the order to fetch. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so description carries the full burden. It appropriately declares read-only behavior, authentication requirement, and the rich columns set returned. However, it does not disclose error handling 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.

Conciseness5/5

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

Description is concise, starting with a clear purpose, followed by useful auxiliary information (Persian, endpoint mapping), and structured with an 'Args:' section. Every sentence adds value without redundancy.

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 an output schema exists, full return value details are not needed. The description covers purpose, parameters, authentication, and the rich columns set. It is adequate but could mention when to fetch instead of list or search.

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?

With 0% schema description coverage, the description compensates well by explicitly listing both parameters (order_id and instance) with clear explanations, including data type and default value for instance.

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?

Description clearly states 'Get one order with rich columns' and includes Persian purpose and endpoint mapping, making the tool's action and scope unambiguous. It effectively distinguishes from sibling tools like alopeyk_cancel_order or alopeyk_create_order.

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?

Description mentions read-only and requires access_token, but does not explicitly state when to use this tool versus alternatives like aget_address. Usage context is implied but not fully detailed with exclusions.

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

alopeyk_get_priceA

Calculate the price for a delivery between stops (read-only).

Persian purpose: محاسبه قیمت یک سفارش. On-Demand, requires an access_token. This does NOT create an order. Maps to POST /api/v2/orders/price/calc. The response includes status, price, credit, distance, duration, user_credit, and price_with_return.

Args: transport_type: Vehicle class (e.g. motorbike, motor_taxi, cargo, cargo_s, car). See alopeyk_transport_types. addresses: Ordered stops, each {type, lat, lng} — one type="origin" followed by one or more type="destination". has_return: Whether the courier returns to the origin (default false). cashed: Whether the delivery is cash-on-delivery (default false). optimize: Whether to optimize the multi-stop route (default false). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
transport_typeYes
addressesYes
has_returnNo
cashedNo
optimizeNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description declares it as read-only, mentions the endpoint, and lists response fields. It does not discuss rate limits or detailed auth, but adequately conveys safety for a price calculator.

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 well-structured with a lead sentence, clarification, endpoint, response, and parameter args. While slightly long, every part adds 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?

Given the presence of an output schema (response fields listed), the description covers return values and refers to a sibling tool for transport types. It lacks some address format detail but is largely complete.

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 0%, so the description compensates excellently by explaining each parameter: transport_type with examples, addresses with structure, and defaults for others.

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 'Calculate the price for a delivery between stops (read-only)' and explicitly states it does NOT create an order, distinguishing it from alopeyk_create_order.

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 explicitly notes that it does not create an order and requires an access_token, but does not directly compare to alternatives like alopeyk_get_batch_price. The sibling context helps infer usage.

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

alopeyk_get_profileA

Get the authenticated user's profile and wallet credit (read-only).

Persian purpose: دریافت پروفایل و اعتبار کاربر. Requires an access_token. Maps to GET /api/v2/show-profile?columns=*,credit.

Args: instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It correctly labels the operation as read-only and notes the API endpoint, but does not disclose error states, rate limits, or authentication failure behavior.

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?

The description is very concise, front-loading the purpose and including relevant details like the Persian translation and API mapping without unnecessary text.

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 presence of an output schema (not shown), the description adequately covers the operation. It mentions the endpoint, required authentication, and what data is retrieved, missing only potential edge cases or usage constraints.

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 0% schema coverage, the description must compensate. It explains the single 'instance' parameter briefly ('Configured instance to use'), which adds value but lacks detail on what instance represents or allowed values.

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 it retrieves the authenticated user's profile and wallet credit, with a read-only nature. It maps to a specific API endpoint, distinguishing it from other tools that fetch orders or addresses.

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 mentions that an access_token is required, but does not explicitly state when to use this tool over alternatives. However, the context of being a simple profile fetch makes usage obvious.

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

alopeyk_location_suggestionA

Autocomplete address suggestions for a free-text query.

Persian purpose: پیشنهاد آدرس بر اساس متن جست‌وجو. On-Demand, requires an access_token. Maps to GET /api/v2/locations?input=<query>&location=<latlng?>.

Args: input: The partial address / place name to search for. latlng: Optional "lat,lng" bias to rank nearby results first. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
latlngNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It states the HTTP method (GET) and mentions it's on-demand with token requirement. However, it does not explicitly say it is read-only or describe any side effects. The description is adequate but could be more explicit about safety (e.g., non-destructive).

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?

The description is concise, with three short sentences plus an Args section. It front-loads the main purpose and includes a Persian translation and HTTP mapping. Every sentence adds value, and there is no redundant 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?

Given that an output schema exists (context signals indicate 'Has output schema: true'), the description does not need to detail return values. It covers the input parameters, endpoint, and authentication requirement. It is complete for an autocomplete tool, though it could mention that results are suggestions to match user input.

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 0%, so the description must compensate. It explains all three parameters: input (partial address/place name), latlng (optional bias), and instance (default). This adds meaning beyond the schema's type definitions. The explanations are clear and sufficient for an agent to use the parameters correctly.

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 tool provides autocomplete address suggestions for a free-text query. It specifies the verb (autocomplete) and resource (addresses). The Persian text and HTTP endpoint further clarify the purpose, and it is easily distinguished from siblings like alopeyk_get_address.

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 mentions it requires an access_token and is on-demand, which guides when to use it. It does not explicitly state when not to use it, but the autocomplete nature and optional latlng bias provide sufficient context. No explicit alternatives are given, but the sibling list is available.

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

alopeyk_loyalty_productsA

List loyalty products, or buy one — buying is gated by enable_ordering.

Persian purpose: مشاهده محصولات وفاداری یا خرید یک محصول. Requires an access_token. Listing (buy=false) maps to GET /api/v2/loyalty/customer/products/{id?}. Buying (buy=true) maps to POST /api/v2/loyalty/customer/products/{id} and spends loyalty points/credit — it requires enable_ordering=true (and read_only=false), otherwise it returns {"error": "ordering_disabled", ...} without contacting the API.

Args: product_id: Optional loyalty product id (required when buy=true). buy: When true, purchase the product (a real, gated action). instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idNo
buyNo
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: listing is GET, buying is POST, buying spends loyalty points/credit, requires enable_ordering and read_only=false, and returns error if gated. Also mentions access_token requirement.

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 well-structured with a summary, Persian purpose, technical mapping, and args. However, it is slightly verbose (e.g., Persian purpose may be redundant for an English AI agent).

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?

Given that an output schema exists, the description covers input behavior comprehensively: listing, buying, gating, and error cases. It is complete enough for an agent to use correctly.

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 description coverage is 0%, yet the description explains each parameter: product_id is optional but required when buy=true, buy is a boolean defaulting to false, instance is default when omitted. This adds significant meaning beyond 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 tool lists or buys loyalty products, using specific verbs like 'list' and 'buy'. It distinguishes itself from siblings (e.g., alopeyk_create_order) by focusing exclusively on loyalty products.

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 explains when to list (buy=false) vs buy (buy=true), including the gating condition enable_ordering=true for buying. It does not explicitly compare with alternatives, but the domain loyalty products is well-defined.

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

alopeyk_payment_routeA

Build a wallet top-up payment route URL (no network call).

Persian purpose: ساخت مسیر پرداخت برای شارژ کیف پول. Returns a payment URL on the On-Demand host for the chosen gateway. No request is sent.

Args: user_id: Numeric id of the user to credit. amount: Amount to top up (in the account's currency unit). gateway: Payment gateway, saman or zarinpal (default saman). instance: Configured instance whose On-Demand base URL to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
amountYes
gatewayNosaman
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'no network call' and returns a URL, but fails to disclose authentication needs, rate limits, failure modes, or whether the URL has expiration. This is insufficient for safe invocation.

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 description is front-loaded with a clear one-line summary, but the Persian line adds redundancy without value for an English-speaking agent. The Args block is well-structured, but overall it could be trimmed.

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?

Given the presence of an output schema, return values need not be explained. However, the description does not mention prerequisites like authentication or that the instance must be fetched from 'list_instances', which is a sibling. The 'instance' parameter is ambiguous without that context.

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 description coverage is 0%, but the description adds detailed explanations for each parameter: user_id (numeric id), amount (in account currency), gateway (with two options), and instance (configured instance). It also specifies defaults. This greatly enhances understanding beyond 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 it builds a wallet top-up payment route URL and is not a network call. The verb 'build' and resource 'payment route URL' are specific, and the tool is distinct from siblings like order-related tools.

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 provides clear context: it returns a URL for a selected gateway without sending a request. However, it does not explicitly exclude alternatives or state when not to use it, though siblings do not overlap significantly.

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

alopeyk_print_invoice_urlA

Build the printable invoice URL for an order (no network call).

Persian purpose: ساخت لینک چاپ فاکتور سفارش. Returns a URL on the On-Demand host for printing the order's invoice. No request is sent.

Args: order_id: Numeric id of the order. order_token: The order's token. instance: Configured instance whose On-Demand base URL to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
order_tokenYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly states 'no network call' (safe read operation) and that it returns a URL. No side effects mentioned, but for a simple URL builder, this is sufficient.

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 concise with an Args section, but includes a redundant Persian phrase. Still, every sentence serves a purpose and it is front-loaded.

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 no annotations and minimal schema, the description covers the tool's core behavior (URL building, no network call) and parameters. Output schema exists, so return value explanation is not needed. Adequate for a simple 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 0%, so the description must explain parameters. It does so minimally: 'order_id: Numeric id' and 'instance: base URL'. Adds meaning beyond the schema's titles but could be more detailed (e.g., token source).

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 tool's verb ('Build') and resource ('printable invoice URL'), and distinguishes it from siblings like 'alopeyk_tracking_url' by specifying it's for invoices. The Persian purpose adds clarity.

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 guidance on when to use this tool versus alternatives or when not to use it. The description only mentions 'no network call', but does not compare to other URL-building or order-related tools.

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

alopeyk_tracking_urlA

Build the public tracking URL for an order token (no network call).

Persian purpose: ساخت لینک رهگیری سفارش. Returns <tracking>#/<token> where the tracking base comes from the instance's environment (production vs sandbox). No request is sent.

Args: order_token: The order's tracking token (from a created order). instance: Configured instance whose tracking base URL to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_tokenYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation is local (no network call), returns a formatted URL, and uses environment-specific base. It also includes a Persian note. This provides adequate behavioral context beyond 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.

Conciseness5/5

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

The description is extremely concise: a single main sentence, a Persian note, a format line, and two bullet-point args. Every sentence adds value, and it is front-loaded with the key purpose. No extraneous 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?

Given that an output schema exists (marked true), the description does not need to detail return values. It covers purpose, behavior, parameters, and special notes (no network call, Persian purpose). For a simple URL-building tool, this is complete and sufficient.

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 0%, but the description compensates by explaining each parameter: order_token is the tracking token from a created order, instance is the configured instance to derive the base URL. This adds meaningful context beyond the bare schema types.

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 specifies the verb 'build', the resource 'public tracking URL', and the input 'order token'. It distinguishes from network calls by stating 'no network call'. Compared to siblings, this tool uniquely constructs a URL without a remote request.

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 states when to use (to build a tracking URL from an order token) and that it makes no network call, implying it's low-cost. However, it does not explicitly mention when not to use or provide direct alternatives among siblings.

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

alopeyk_transport_typesA

List the available transport (vehicle) types (static, no network).

Persian purpose: فهرست انواع وسیله نقلیه. Returns the known transport types used by the pricing/order tools. No request is sent.

Args: instance: Accepted for symmetry; ignored (static data).

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that no network request is sent ('static, no network') and that the parameter 'instance' is ignored. However, it does not mention authentication requirements or potential side effects, though these are minimal for a static list.

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?

The description is extremely concise: two short sentences plus a Persian translation and a brief parameter note. Every sentence adds value without redundancy.

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 description explains the tool's purpose, static nature, and parameter meaning. Since an output schema exists (not shown), it does not need to detail return values. It is complete for an agent to decide when to invoke this tool.

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 single parameter 'instance' is minimally described in the schema (type only). The description adds critical context: it is 'Accepted for symmetry; ignored (static data)', which clarifies its irrelevance and prevents misuse.

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 'List the available transport (vehicle) types' and explicitly notes it is 'static, no network', distinguishing it from sibling list tools that may fetch dynamic data. It also mentions its role in pricing/order tools, providing precise context.

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 indicates the tool returns transport types used by pricing/order tools, implying when to use it. While it does not explicitly exclude alternatives, the 'static, no network' flag helps differentiate from network-dependent sibling tools.

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

alopeyk_validate_couponA

Validate a discount coupon code (read-only).

Persian purpose: بررسی اعتبار کد تخفیف. Requires an access_token. Maps to POST /api/v2/coupons with body {code}.

Args: code: The coupon code to validate. instance: Configured instance to use (default when omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

The description explicitly states the tool is 'read-only' and 'Requires an access_token', which are key behavioral traits. With no annotations provided, the description carries the transparency burden and does so reasonably well. However, it does not mention response format or error conditions, which would enhance trust.

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 concise and front-loaded with the main purpose. It includes a Persian translation for localization but remains efficient. The structure is logical: purpose, requirements, API mapping, then parameters.

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 an output schema, so the description need not detail return values, but it omits information like whether the coupon is valid or expired, or error handling. While adequate for a simple validation tool, it lacks completeness regarding what the agent can expect from the response.

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

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate. For 'code', it merely restates the parameter name ('The coupon code to validate'), adding no meaningful detail. For 'instance', it adds context ('Configured instance to use (default when omitted)') but fails to fully clarify the parameter's purpose or allowed values.

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 'Validate a discount coupon code (read-only)' and includes a Persian translation for context. It specifies the verb 'validate' and the resource 'coupon code', and distinguishes itself from sibling tools like alopeyk_create_order or alopeyk_get_price, which have different purposes.

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 the tool is for validating coupon codes but does not explicitly state when to use it versus alternatives or when not to use it. It provides no exclusions or guidance on scenarios, leaving the agent to infer usage from the tool name and context.

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

healthcheckA

Check that Alopeyk is reachable via a lightweight On-Demand call.

Persian purpose: بررسی در دسترس بودن الوپیک. Calls the On-Demand GET /api/v2/config endpoint and reports whether the API responded. Requires an access_token (config is an authenticated endpoint). Returns {reachable: true} on success or a structured error otherwise.

Args: instance: Name of the configured Alopeyk instance. Defaults to the configured default instance when omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description fully discloses the behavior: requires access_token, calls a specific endpoint, returns success indicator or structured error. It lacks mention of rate limits or side effects, which are minimal for a health check.

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?

The description is concise, front-loaded with the primary purpose, includes a secondary language line, then details on endpoint, auth, and return value. Every sentence adds value without 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 health check tool with one optional parameter and an output schema, the description covers all essential aspects: purpose, endpoint, auth, return value, and parameter meaning. It is complete given the tool's simplicity.

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 provides only type and default for 'instance'. The description adds semantic meaning: it names the Alopeyk instance and explains the default behavior. This compensates for the 0% schema description coverage.

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 that the tool checks if Alopeyk is reachable via a lightweight call, specifies the endpoint, and explains the return value. This distinguishes it from siblings like 'alopeyk_get_config' which likely returns more detailed data.

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 provides clear context on when to use (health check) and mentions authentication requirement, but does not explicitly state when not to use or suggest alternatives among siblings. Adequate but not complete guidance.

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

list_instancesA

List the configured Alopeyk instances (no secrets).

Persian purpose: فهرست نمونه‌های پیکربندی‌شده. Useful for discovering which instance values the other tools accept, which environment each targets, and which credentials/flags are set. Credential values (access_token, email, password, alonomic_token) are NEVER returned — only booleans saying whether they are configured.

Returns: {default_instance, instances: [{name, environment, ondemand_base_url, business_base_url, tracking_url, has_ondemand_credentials, has_alonomic_credentials, alonomic_auth_method, enable_ordering, read_only, ordering_allowed, verify_ssl}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: it never returns credential values, only booleans indicating configuration. It lists the exact fields returned in the output, providing complete transparency.

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 concise with a few sentences, includes a Persian purpose that may not be necessary but doesn't harm clarity. It is well-structured with a clear return format.

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?

Given the tool has no parameters and the output schema is described, the description is fully complete for an agent to understand what the tool does and what to expect.

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 has zero parameters, so the schema provides full coverage. The description adds no extra parameter information, which is acceptable at baseline 4.

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 tool lists configured Alopeyk instances and specifies it returns no secrets. It differentiates itself by noting it is useful for discovering which instance values other tools accept, which distinguishes it from siblings like alopeyk_get_config.

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 explicitly says the tool is 'useful for discovering which instance values the other tools accept', giving a clear usage context. It does not explicitly mention when not to use it or alternatives, but the use case is straightforward and no sibling directly overlaps.

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. 34 tool updatesv0.1.0
    • First observedalonomic_add_saved_address
    • First observedalonomic_calc_parcel
    • First observedalonomic_cancel_parcel
    • First observedalonomic_create_parcel
    • First observedalonomic_delete_saved_address
    • First observedalonomic_get_days
    • First observedalonomic_get_days_index
    • First observedalonomic_get_me
    • First observedalonomic_get_parcel
    • First observedalonomic_get_parcel_sizes
    • First observedalonomic_get_saved_addresses
    • First observedalonomic_login
    • First observedalonomic_parcel_statuses
    • First observedalonomic_update_parcel
    • First observedalopeyk_cancel_order
    • First observedalopeyk_cities
    • First observedalopeyk_create_order
    • First observedalopeyk_docs
    • First observedalopeyk_finish_order
    • First observedalopeyk_get_address
    • First observedalopeyk_get_batch_price
    • First observedalopeyk_get_config
    • First observedalopeyk_get_order
    • First observedalopeyk_get_price
    • First observedalopeyk_get_profile
    • First observedalopeyk_location_suggestion
    • First observedalopeyk_loyalty_products
    • First observedalopeyk_payment_route
    • First observedalopeyk_print_invoice_url
    • First observedalopeyk_tracking_url
    • First observedalopeyk_transport_types
    • First observedalopeyk_validate_coupon
    • First observedhealthcheck
    • First observedlist_instances

TDQS

A3.9/5.0

Scored across 34 tools

Disambiguation5/5

Tools are clearly separated by prefix (alopeyk_ vs alonomic_) and each has a distinct purpose. Even within groups, tools like alopeyk_get_price and alopeyk_get_batch_price are well-differentiated. Overlap is minimal.

Naming Consistency4/5

The majority follow a verb_noun pattern with consistent prefixes. However, a few tools (healthcheck, list_instances, alopeyk_payment_route, alopeyk_print_invoice_url) break the pattern, causing minor inconsistency.

Tool Count4/5

34 tools is on the higher side but reasonable for a server covering two distinct service APIs with full CRUD and utility operations. Each tool earns its place without unnecessary duplication.

Completeness3/5

The tool set covers core operations for both Alopeyk and Alonomic services, but lacks listing tools for orders and parcels. Agents cannot retrieve a list of existing orders or parcels, which is a notable gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Production-ready MCP server for AI agents — web search, content extraction, screenshots, weather, finance, email validation, translation, and IP geolocation.
    6 npm
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Connect any MCP-compatible AI to Royal Mail shipping. This server exposes five tools that let Claude, Cursor or any MCP client book orders, fetch postage labels, track shipments and cancel bookings through the official Click & Drop API.
    5
    10 npm
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that wraps the ShipSaving logistics REST API, enabling AI assistants like Claude to perform shipping operations through natural language.
    30
    13 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for tracking Japanese logistics carriers (Yamato, Sagawa, Japan Post) via mock or AfterShip adapter. Enables AI agents to query shipment status and history in natural language.
    3
    MIT