Skip to main content
Glama

🚚 AURA COURIER MCP v2.5.0 — THE ENTERPRISE LOGISTICS MASTER MANUAL

Universal Multi-Carrier Logistics Engine, Spatial Intelligence Hub & Zero-Risk COD Gateway

Published by Aura Agentic AI · Architected with DeepMind Principles & Google Maps Platform

Google Cloud Partner Advantage auraajenticai/aura-courier-mcp MCP server Antigravity Plugin License: Apache-2.0 Status Node


1. Executive Architecture Overview

Aura Courier MCP (https://courier.auraajenticai.cloud/mcp) is an enterprise-grade, carrier-agnostic Cash On Delivery (COD) logistics gateway and Model Context Protocol (MCP) server. It bridges autonomous AI models (Vertex AI, Claude, Antigravity, ChatGPT, Cursor) with physical courier networks across all 64 districts of Bangladesh.

Core Architectural Pillars

graph TD
    AI[AI Agent / Vertex AI / Dashboard] -->|Streamable-HTTP / MCP| MCP[Aura Courier MCP Server v2.4]
    
    subgraph "Intelligent Logic Engines"
        MCP --> ROUTER[Multi-Carrier Smart Router]
        MCP --> FRAUD[Bayesian Fraud & Delivery Risk Engine]
        MCP --> SPATIAL[Google Maps Platform Spatial Engine]
        MCP --> NDR[Automated NDR Resolution Suite]
        MCP --> WEBHOOKS[Bidirectional Webhook Hub]
    end
    
    subgraph "Physical Logistics Carriers"
        ROUTER --> SF[Steadfast Courier - 64 Districts]
        ROUTER --> PT[Pathao Express - On-Demand]
        ROUTER --> RX[RedX Delivery - 2,849 Hubs]
        ROUTER --> PF[Paperfly Go - Doorstep Coverage]
    end
    
    subgraph "Spatial Services"
        SPATIAL --> GEO[Geocoding API]
        SPATIAL --> ROUTES[Routes API v2:computeRoutes]
        SPATIAL --> STUDIO[Dynamic Map Studio]
    end
  1. Carrier-Agnostic Multi-Routing: Unifies Steadfast, Pathao, RedX, and Paperfly into a single normalized interface.

  2. Zero Mock Data Policy: Every single metric, delivery status, tariff calculation, and fraud score is computed against live carrier databases or authentic mathematical models.

  3. Spatial Hierarchy Resolver: Resolves street addresses into precise administrative hierarchies (City → Zone → Area) eliminating HTTP 422 errors.

  4. Automated NDR & Dispute Suite: Resolves failed courier deliveries via automated customer WhatsApp re-engagement and carrier operational hold tickets.

  5. Real-Time Webhook Processing: Instant asynchronous updates from carriers dispatched directly to merchant dashboards.


Related MCP server: renfield-mcp-tracking

2. Multi-Carrier Enterprise Integration Matrix

Aura Courier MCP seamlessly interfaces with all tier-1 Bangladesh courier APIs under a unified standard:

Provider

Endpoint / Base URL

Merchant Account / IDs

Auth Header / Secret

Operational Status

Steadfast

https://portal.packzy.com/api/v1

Account: <MERCHANT> (ID: <STORE_ID>)

Api-Key: <STEADFAST_API_KEY>Secret-Key: <STEADFAST_SECRET_KEY>

Active: get_balance verified 200 OK. Order booking pending carrier-side toggle.

Pathao

https://api-hermes.pathao.com

User: <PATHAO_USERNAME>Store: <MERCHANT> (ID: <PATHAO_STORE_ID>)

Client-ID: <PATHAO_CLIENT_ID>Client-Secret: <PATHAO_CLIENT_SECRET>

100% Active: OAuth2 token issuing, price calculation, auto-geocoding live.

RedX

https://openapi.redx.com.bd/v1.0.0-beta

Shop ID: <REDX_SHOP_ID>Pickup Store ID: <REDX_STORE_ID>

API-ACCESS-TOKEN: <REDX_API_TOKEN>(JWT Bearer Token)

100% Active: 2,849 delivery areas and parcel booking verified.

Paperfly

https://api.paperfly.com.bd

Store: <MERCHANT>User: <PAPERFLY_USERNAME>

paperflykey: <PAPERFLY_KEY>Basic Auth: <PAPERFLY_USERNAME> / <PAPERFLY_PASSWORD>

100% Active: Order placement (new_order_v2.php) and tracking verified.

Google Maps

https://maps.googleapis.com

Project: <GOOGLE_CLOUD_PROJECT>

<GOOGLE_MAPS_API_KEY>(Field Masked)

100% Active: Geocoding, Routes API, and Dynamic Map Studio active.


3. Official Carrier Integration Specifications

3.1. Pathao Express Integration

  • Token Issuance: POST /aladdin/api/v1/issue-token

    curl --location 'https://api-hermes.pathao.com/aladdin/api/v1/issue-token' \
      --header 'Content-Type: application/json' \
      --data-raw '{
        "client_id": "<PATHAO_CLIENT_ID>",
        "client_secret": "<PATHAO_CLIENT_SECRET>",
        "grant_type": "password",
        "username": "<PATHAO_USERNAME>",
        "password": "<PATHAO_PASSWORD>"
      }'
  • Store Management: GET /aladdin/api/v1/stores

    • Active Store: <PATHAO_STORE_ID> ("", Central Hub, Dhaka)

  • Parcel Booking: POST /aladdin/api/v1/orders

    • Required Fields: store_id, recipient_name, recipient_phone (11 digits), recipient_address (10-220 chars), delivery_type (48), item_type (2), item_weight (0.5 to 10 kg), amount_to_collect (integer).

    • Spatial Hierarchy: recipient_city, recipient_zone, recipient_area are auto-resolved from our intelligent catalog matcher; if unresolvable, they are safely omitted so Pathao's server-side geocoder infers them directly.

  • Order Tracking: GET /aladdin/api/v1/orders/{consignment_id}/info

  • Price Plan API: POST /aladdin/api/v1/merchant/price-plan

3.2. Steadfast Courier Integration

  • Base Portal: https://portal.packzy.com/api/v1

  • Headers: Api-Key: <STEADFAST_API_KEY>, Secret-Key: <STEADFAST_SECRET_KEY>

  • Account Balance: GET /get_balance

  • Fraud Risk Database: GET /fraud_check/{phone}

  • Order Dispatch: POST /create_order

  • Status Tracking: GET /status_by_trackingcode/{tracking_code}

3.3. RedX Delivery Integration

  • Base Portal: https://openapi.redx.com.bd/v1.0.0-beta

  • Headers: API-ACCESS-TOKEN: Bearer {token}

  • Delivery Areas (2,849 Hubs): GET /areas

  • Parcel Creation: POST /parcel

  • Parcel Tracking: GET /parcel/track/{tracking_id}

3.4. Paperfly Integration

  • Base Portal: https://api.paperfly.com.bd

  • Headers: paperflykey: <PAPERFLY_KEY>

  • Authentication: HTTP Basic Auth (<PAPERFLY_USERNAME>:<PAPERFLY_PASSWORD>)

  • Parcel Booking: POST /merchant/api/service/new_order_v2.php

  • Tracking: POST /API-Order-Tracking with ReferenceNumber


4. The 9 Enterprise Model Context Protocol (MCP) Tools

Aura Courier MCP exports 9 tools conforming to the MCP Specification (2024-11-05):

1. list_couriers

  • Purpose: Inspect carrier operational health and active credentials.

  • Input Schema: {}

  • Response: Array of providers with is_configured: true/false.

2. create_parcel

  • Purpose: Dispatch a real parcel through Steadfast, Pathao, RedX, Paperfly, or auto smart routing.

  • Input Schema:

    {
      "courier": "auto | steadfast | pathao | redx | paperfly",
      "invoice": "INV-2026-001",
      "recipient_name": "Rahim Ahmed",
      "recipient_phone": "01711223344",
      "recipient_address": "House 12, Road 4, Sector 3, Uttara, Dhaka",
      "cod_amount": 1500,
      "note": "Handle with care",
      "item_weight": 0.5
    }

3. track_parcel

  • Purpose: Consolidated shipment tracking across all carriers.

  • Input Schema: {"tracking_code": "SF-12345", "courier": "steadfast"}

4. get_balance

  • Purpose: Merchant COD vault balance & payout status.

  • Input Schema: {"courier": "steadfast"}

5. check_fraud_risk

  • Purpose: Nationwide e-commerce fraud and return-risk evaluation.

  • Features:

    • Connects to real nationwide logistics history (millions of consignments).

    • Evaluates delivery success rate, cancellation counts, and customer reliability.

    • Zero fabricated strings or simulated random metrics.

  • Input Schema: {"phone": "01711223344"}

6. validate_and_geocode_address

  • Purpose: Address verification via Google Maps Platform Geocoding API.

  • Returns: Formatted address, Thana, District, Division, lat/lng coordinates, and deliverability confidence score (0-100).

  • Input Schema: {"address": "Road 11, Banani, Dhaka", "district": "Dhaka"}

7. calculate_delivery_zone_and_fee

  • Purpose: Live road routing via Google Maps Platform Routes API (v2:computeRoutes).

  • Zones:

    • inside_dhaka (≤22 km): à§³80 | 24–48 hours

    • sub_dhaka (22–45 km or Savar/Gazipur/Keraniganj/Narayanganj): à§³100 | 48–72 hours

    • outside_dhaka (>45 km / nationwide): à§³150 | 72–96 hours

  • Input Schema: {"recipient_address": "Chittagong GEC Circle", "weight_kg": 1.0}

8. compare_courier_rates (v2.4 New)

  • Purpose: Side-by-side tariff, SLA, and COD fee comparison across all 4 carriers for any destination.

  • Input Schema:

    {
      "recipient_address": "Agrabad C/A, Chittagong",
      "weight_kg": 1.5,
      "cod_amount": 2500,
      "priority": "cheapest | fastest | balanced"
    }
  • Returns: Best recommended courier, savings rationale, and 4 detailed carrier quotes.

9. resolve_ndr_issue (v2.4 New)

  • Purpose: Non-Delivery Report (NDR) triage and automated dispute resolution.

  • Issues Handled: fake_attempt, customer_phone_off, reschedule_requested, wrong_address, customer_refused.

  • Output:

    • customer_whatsapp_message: Ready-to-send empathetic resolution text in Bengali.

    • carrier_instruction: Official escalation dispatch ticket preventing Return-To-Origin (RTO).

    • resolution_status: DISPUTE_FILED, RESCHEDULE_QUEUED, ADDRESS_UPDATED, CUSTOMER_REENGAGED.


5. Bidirectional Webhooks Hub

5.1. Steadfast Webhook Receiver

  • Callback URL: https://courier.auraajenticai.cloud/webhooks/steadfast

  • Auth: Authorization: Bearer <STEADFAST_API_KEY> (configured in Steadfast portal)

  • Supported Notification Types:

    1. delivery_status: Real-time status shifts (pending, delivered, partial_delivered, cancelled, unknown).

    2. tracking_update: Package milestone scans and sorting center transitions.

  • Steadfast Expected Response:

    HTTP 200 OK
    {
      "status": "success",
      "message": "Webhook received successfully."
    }

5.2. Pathao Webhook Receiver

  • Callback URL: https://courier.auraajenticai.cloud/webhooks/pathao

  • Supported Events: Order placement, rider pickup, out-for-delivery, and RTO events.


6. Real-Time Verification & Test Suite

6.1. Inspect MCP Health & Tools

curl -s https://courier.auraajenticai.cloud/health | jq

Expected Output:

{
  "ok": true,
  "service": "aura-courier-mcp",
  "version": "2.4.0",
  "tools_count": 9,
  "spatial_engine": "Google Maps Platform (gmp_git_agentskills_v1)",
  "fraud_engine": "Steadfast Nationwide API + BD Prefix Validator",
  "webhooks": {
    "steadfast": "/webhooks/steadfast",
    "pathao": "/webhooks/pathao"
  }
}

6.2. Test Steadfast Webhook Simulation

curl -X POST https://courier.auraajenticai.cloud/webhooks/steadfast \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <STEADFAST_API_KEY>" \
  -d '{
    "notification_type": "delivery_status",
    "consignment_id": 981245,
    "invoice": "INV-67890",
    "cod_amount": 1500.0,
    "status": "delivered",
    "delivery_charge": 100.0,
    "tracking_message": "Package delivered to customer.",
    "updated_at": "2026-09-11 03:30:00"
  }'

Expected Response: {"status":"success","message":"Webhook received successfully."}

6.3. Test MCP Initialize via Streamable-HTTP

curl -i -X POST https://courier.auraajenticai.cloud/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": { "name": "terminal-test", "version": "1.0" }
    }
  }'

7. Connecting to AI Agents & IDEs

Claude Desktop / Cursor / Antigravity MCP Config

Add this configuration block to your client settings (claude_desktop_config.json or settings.json):

{
  "mcpServers": {
    "aura-courier": {
      "command": "npx",
      "args": ["-y", "aura-courier-mcp@2.4.0"],
      "env": {
        "PORT": "8080",
        "GOOGLE_MAPS_API_KEY": "<GOOGLE_MAPS_API_KEY>",
        "STEADFAST_API_KEY": "<STEADFAST_API_KEY>",
        "STEADFAST_SECRET_KEY": "<STEADFAST_SECRET_KEY>",
        "STEADFAST_BASE_URL": "https://portal.packzy.com/api/v1",
        "PATHAO_CLIENT_ID": "<PATHAO_CLIENT_ID>",
        "PATHAO_CLIENT_SECRET": "<PATHAO_CLIENT_SECRET>",
        "PATHAO_USERNAME": "<PATHAO_USERNAME>",
        "PATHAO_PASSWORD": "<PATHAO_PASSWORD>",
        "PATHAO_STORE_ID": "<PATHAO_STORE_ID>",
        "PATHAO_BASE_URL": "https://api-hermes.pathao.com",
        "REDX_API_TOKEN": "<REDX_API_TOKEN>",
        "REDX_PICKUP_STORE_ID": "<REDX_STORE_ID>",
        "REDX_BASE_URL": "https://openapi.redx.com.bd/v1.0.0-beta",
        "PAPERFLY_API_KEY": "<PAPERFLY_KEY>",
        "PAPERFLY_USERNAME": "<PAPERFLY_USERNAME>",
        "PAPERFLY_PASSWORD": "<PAPERFLY_PASSWORD>",
        "PAPERFLY_STORE_NAME": "<MERCHANT>",
        "PAPERFLY_BASE_URL": "https://api.paperfly.com.bd"
      }
    }
  }
}

Or connect directly via Streamable-HTTP URL:

  • Server URL: https://courier.auraajenticai.cloud/mcp

  • Client Protocol: MCP Streamable-HTTP (2024-11-05)

Google Antigravity Plugin (One-Click Marketplace Activation)

For Google Antigravity agents, activate directly via the Antigravity Marketplace Card:

<plugin-card catalog-id="antigravity-plugins-partners/plugin/aura-courier"></plugin-card>

Or declare in your Antigravity plugins.json:

{
  "plugins": {
    "aura-courier": {
      "source": "https://github.com/auraajenticai/aura-courier-mcp"
    }
  }
}

Bundles the complete courier-ops skill (9 tools), rules/COURIER_RULES.md (smart auto-routing cascade & zero-mock policies), and mcp_config.json.


Service Attribution ID: gmp_git_agentskills_v1
APIs Utilized:

  1. Geocoding API: Street and sublocality resolution for Bangladesh administrative areas.

  2. Routes API (v2:computeRoutes): Precise road distance metrics and zone classification.

  3. Maps Embed API: Interactive visual maps with $0 operational cost.


9. Version History & Glama TDQS 5.0 Audit Log

  • v2.5.0 (Nov 9, 2026):

    • Zero Hardcoded Credentials: Purged all merchant secrets from repository code, enforcing strict runtime environment variable isolation.

    • Glama TDQS 5.0 Compliance: Upgraded all 9 MCP tool definitions with explicit side-effects disclosure (state-mutating vs read-only), when-to-use vs when-not-to-use scenarios, and comprehensive parameter constraints.

    • Service Telemetry Update: Updated /health endpoint to reflect v2.5.0 and automated release tag synchronization.

  • v2.4.2 (Nov 5, 2026): Official Google Antigravity Plugin bundle and partner advantage packaging.

  • v2.4.0 (Oct 22, 2026): Multi-carrier cascading auto-routing, rate comparison, and NDR dispute suite.


Copyright © 2026 Aura Agentic AI khondokartowsif171@gmail.com.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Available Tools

9 tools
calculate_delivery_zone_and_feeA

Calculate standard delivery zone (inside_dhaka ≤22km ৳80, sub_dhaka 22-45km ৳100, outside_dhaka >45km ৳150), actual road distance via Google Maps Platform Routes API (v2:computeRoutes), SLA turnaround time (24-72h), and applicable COD percentage for a SINGLE delivery destination. READ-ONLY ESTIMATION TOOL: Has zero external side effects and does NOT book shipments. Use when quoting shipping charges to a customer or determining flat delivery tiers for an order. Do NOT use if you need side-by-side multi-carrier tariff quotes with weight breaks and priority sorting across all 4 couriers (use 'compare_courier_rates' instead).

NameRequiredDescriptionDefault
weight_kgNoParcel weight in KG (default: 0.5)
origin_addressNoOptional merchant warehouse address (defaults to Dhaka Central Hub)
recipient_addressYesDelivery destination address

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 carries the full burden and does well: it declares READ-ONLY, zero external side effects, and that it does not book shipments, and it discloses the external dependency (Google Maps Platform Routes API v2:computeRoutes), which implies a network call and possible latency/failure. It stops short of stating auth requirements, rate limits, or fallback behavior when geocoding fails, which keeps it from a 5.

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?

Dense but front-loaded: the computed outputs and their tier values come first, then the read-only guarantee, then routing guidance. The parenthetical tariff table is efficient rather than padding, though the single long sentence with nested parentheses is harder to scan than a short bulleted structure.

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?

There is no output schema, so the description must convey what comes back; it does so conceptually (zone, distance, SLA window, COD percentage) and even supplies the concrete tier values. The remaining gap is the unexplained weight-to-fee relationship and how the origin default ('Dhaka Central Hub') interacts with distance measurement.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description clarifies that only one destination is handled and gives the distance thresholds that recipient_address feeds into, but it never explains how weight_kg changes the quoted fee — a material gap for a fee calculator whose schema only says 'default: 0.5'.

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

Purpose5/5

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

States a specific verb (calculate) and enumerates exactly what is computed: zone tier, road distance, SLA, and COD percentage for a single destination. It also names the sibling tool it is not ('compare_courier_rates'), so an agent can distinguish it without opening either schema.

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

Usage Guidelines5/5

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

Explicit when-to-use ('quoting shipping charges to a customer or determining flat delivery tiers for an order') and explicit when-not-to-use with the alternative named ('side-by-side multi-carrier tariff quotes with weight breaks... use compare_courier_rates instead'). Nothing is left to inference.

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

check_fraud_riskA

Screen a customer phone number against live nationwide Bangladesh logistics databases (millions of historical consignments) for delivery success rate, cancellation counts, and return fraud risk score. READ-ONLY DIAGNOSTIC QUERY: Zero mock data, authentic carrier telemetry only. Use before confirming high-value COD orders to screen for chronic returners or fake orders. Do NOT use for address geocoding (use 'validate_and_geocode_address') or parcel booking (use 'create_parcel'). Expects an 11-digit Bangladeshi mobile number ('01XXXXXXXXX').

NameRequiredDescriptionDefault
phoneYes11-digit Bangladeshi mobile number to evaluate

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the burden and does well: it declares the operation read-only ('READ-ONLY DIAGNOSTIC QUERY'), the data source ('live nationwide Bangladesh logistics databases'), and the three output dimensions. It omits edge-case behavior such as what is returned when a number has no history, and says nothing about rate limits or cost.

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

Conciseness4/5

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

Front-loads purpose and scope, then moves to usage and exclusions, then parameter format – a sensible order. Some wording is promotional rather than functional ('Zero mock data, authentic carrier telemetry only'), which costs a little density but does convey data authenticity.

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?

There is no output schema, so the description must describe returns, and it does list the three key metrics. It stops short of explaining result shape, score ranges, or no-match behavior, which would matter for a single-parameter diagnostic 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 coverage is 100% and the single parameter is already documented as an '11-digit Bangladeshi mobile number', so the schema does the heavy lifting. The description restates the format and adds a concrete pattern ('01XXXXXXXXX'), which is marginal added meaning rather than new 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?

Uses a specific verb ('Screen') plus the exact resource (a customer phone number) and names the returned metrics: delivery success rate, cancellation counts, and return fraud risk score. This is clearly distinguishable from siblings like validate_and_geocode_address or track_parcel.

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

Usage Guidelines5/5

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

States the trigger condition explicitly ('before confirming high-value COD orders to screen for chronic returners or fake orders') and names two concrete exclusions with the sibling tools to use instead (geocoding, parcel booking). Nothing about when-to-use is left to inference.

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

compare_courier_ratesA

Execute side-by-side tariff, SLA, and COD collection fee comparisons across all four major Bangladeshi couriers (Steadfast, Pathao, RedX, Paperfly) for any destination nationwide. Evaluates exact parcel weight, declared COD amount, and optimization priority ('cheapest', 'fastest', 'balanced') to select the recommended courier. READ-ONLY CALCULATION ENGINE: Has zero external side effects and does not create orders. Use when deciding which carrier offers the best commercial rate or fastest SLA for a specific shipment before booking. Do NOT use for single flat-rate zone lookup (use 'calculate_delivery_zone_and_fee') or for actually booking the shipment (use 'create_parcel').

NameRequiredDescriptionDefault
priorityNoOptimization priority (default: balanced)
weight_kgNoParcel weight in KG (default: 0.5)
cod_amountNoCash On Delivery amount in BDT (default: 0)
recipient_addressYesDestination delivery address anywhere in Bangladesh

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does so for the most important trait: 'READ-ONLY CALCULATION ENGINE: Has zero external side effects and does not create orders.' It does not disclose whether rates are live or cached, any rate limits, or credential requirements, which keeps it short of a 5 for a zero-annotation 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?

Three sentences, front-loaded with the operation and followed immediately by safety profile and routing exclusions — good ordering with no filler. The all-caps safety clause is slightly louder than necessary, but it earns its place given the absence of annotations.

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?

There is no output schema, so the description should clarify the return shape; 'side-by-side comparisons' plus 'select the recommended courier' implies both a per-courier breakdown and a recommendation, but it never states whether all four carriers always appear or how ties are broken. Otherwise complete for a four-parameter, single-required-field read tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including the enum values. The description adds purpose-level framing ('exact parcel weight, declared COD amount, and optimization priority ... to select the recommended courier') and notes nationwide destination scope, but no format or unit guidance beyond what the schema states.

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?

Opens with a specific verb and resource ('Execute side-by-side tariff, SLA, and COD collection fee comparisons') and names the exact four couriers and the inputs that drive the comparison. An agent can distinguish this from list_couriers or calculate_delivery_zone_and_fee without opening any schema.

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

Usage Guidelines5/5

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

Explicitly states the use case ('when deciding which carrier offers the best commercial rate or fastest SLA ... before booking') and adds two negative exclusions that name the correct alternatives: 'calculate_delivery_zone_and_fee' for flat-rate zone lookup and 'create_parcel' for booking. Routing is unambiguous.

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

create_parcelA

Book and dispatch a physical parcel consignment across Bangladesh through Steadfast, Pathao, RedX, Paperfly, or AI smart cascading routing. STATE-MUTATING ACTION: This call creates a real, billable shipment record in the carrier's production database, assigns an official tracking code, and deducts courier fees upon pickup. Once booked, cancellations require direct courier portal operations. Use only after customer address and phone number are verified. Do NOT use for preliminary fee estimation (use 'calculate_delivery_zone_and_fee' or 'compare_courier_rates') or address validation (use 'validate_and_geocode_address'). Throws an error if required courier credentials are not configured or recipient phone is invalid.

NameRequiredDescriptionDefault
noteNoSpecial instructions for delivery rider
valueNoDeclared parcel value in BDT (used by RedX; defaults to the COD amount)
courierNoTarget courier or 'auto' for AI smart routing (default: auto)
invoiceYesUnique order invoice number (e.g. INV-1002)
item_typeNoWhat's inside the parcel (used by RedX)
cod_amountYesCash on delivery amount in BDT (0 if prepaid)
item_weightNoParcel weight in KG (default: 0.5)
recipient_nameYesCustomer full name
pickup_store_idNoRedX only: your pickup store id (optional)
recipient_phoneYes11-digit Bangladeshi mobile number (e.g. 017XXXXXXXX)
delivery_area_idNoRedX only: numeric delivery-area id (auto-resolved from the address if omitted)
recipient_addressYesDelivery address (Thana, District, Street)

TDQS

A4.6/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does: it discloses that this writes a real billable shipment to the carrier's production database, assigns an official tracking code, deducts fees on pickup, and that cancellation afterward requires courier portal operations. It also names two failure modes (missing courier credentials, invalid recipient phone), which is unusually complete for a mutation tool.

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

Conciseness5/5

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

Front-loaded with purpose and carrier scope, then the mutation warning, then preconditions, then alternatives, then error conditions. Every sentence carries distinct operational information; nothing is redundant or padded.

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 12-parameter, unannotated, no-output-schema mutation tool this covers the critical ground: side effects, billing, irreversibility, prerequisites, and failure modes. The only minor gap is that, absent an output schema, it does not explicitly state what the caller receives back (e.g. the tracking code field in the response), which it only implies.

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

Parameters3/5

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

Schema coverage is 100% and every parameter is already documented in the schema with types, defaults, and courier-specific notes, so the baseline of 3 applies. The description adds only a precondition on recipient phone validity and the 'auto' routing mode, neither of which extends individual parameter 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?

States a specific verb and resource ('Book and dispatch a physical parcel consignment') and enumerates the supported carriers including 'auto' smart routing. It is immediately distinguishable from read-only siblings like compare_courier_rates and track_parcel without opening either schema.

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

Usage Guidelines5/5

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

Explicit preconditions are given ('Use only after customer address and phone number are verified') and named alternatives handle the adjacent cases: calculate_delivery_zone_and_fee / compare_courier_rates for fee estimation and validate_and_geocode_address for address validation. An agent has both the when and the when-not.

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

get_balanceA

Retrieve live merchant cash-on-delivery (COD) vault balance, pending disbursement amounts, and payout ledger from Steadfast or Pathao merchant portals. READ-ONLY FINANCIAL INQUIRY: Does not initiate payouts or mutate accounting ledgers. Use when accounting or merchant finance operators want to verify accrued COD collections or payout readiness. Do NOT use for customer balance or shipping quote estimation (use 'calculate_delivery_zone_and_fee'). Requires active merchant API keys for the requested courier; throws an error if unconfigured.

NameRequiredDescriptionDefault
courierYesCourier provider to check balance for

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does most of it: it declares the operation READ-ONLY and non-mutating ('Does not initiate payouts or mutate accounting ledgers'), states the auth prerequisite ('Requires active merchant API keys for the requested courier'), and discloses failure behavior ('throws an error if unconfigured'). Minor gaps remain around rate limits and whether results are paginated or cached, though 'live' signals freshness.

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

Conciseness4/5

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

Front-loaded with the purpose, then progressively narrows to constraints, exclusions, and prerequisites; nearly every clause adds decision-relevant information. The single dense block is slightly heavy for skimming, but no sentence is filler.

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

Completeness4/5

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

There is no output schema, so the description correctly compensates by enumerating the returned payload (vault balance, pending disbursement, payout ledger). For a one-parameter read tool this is close to complete; only freshness/pagination or rate-limit notes are absent.

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

Parameters4/5

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

Schema coverage is 100% and the single 'courier' parameter already carries an enum with a description, so the baseline would be 3. The description earns one step above baseline by explaining that merchant API keys are courier-specific, which tells the agent the parameter has configuration consequences beyond string selection.

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

Purpose5/5

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

States a specific verb and resource ('Retrieve live merchant cash-on-delivery (COD) vault balance, pending disbursement amounts, and payout ledger') and scopes it to two named portals. It also separates itself from the nearest ambiguity ('Do NOT use for customer balance'), so the agent can distinguish it from siblings like calculate_delivery_zone_and_fee without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit positive condition ('Use when accounting or merchant finance operators want to verify accrued COD collections or payout readiness') and an explicit negative with the alternative named ('Do NOT use for customer balance or shipping quote estimation (use calculate_delivery_zone_and_fee)'). Routing is unambiguous.

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

list_couriersA

Inspect operational health, configuration status, and active API credentials for supported Bangladeshi courier networks (Steadfast, Pathao, RedX, Paperfly) and spatial routing services (Google Maps Platform). READ-ONLY DISCOVERY TOOL: Has zero external side effects and does not mutate database or carrier state. Use when initializing a session to verify which couriers are ready for order dispatch or balance checking. Do NOT use for querying shipment status (use 'track_parcel') or calculating shipping fees (use 'calculate_delivery_zone_and_fee').

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it declares read-only behavior, zero external side effects, and no mutation of database or carrier state. What it does not disclose is whether the call fans out to live carrier APIs (and therefore has latency or per-call cost) or whether returned credentials are masked or truncated, which matters for a discovery tool that exposes API keys.

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 structure is front-loaded and purposeful: capability, then the read-only safety statement, then usage, then exclusions. The only mild redundancy is the capitalized 'READ-ONLY DISCOVERY TOOL' label immediately followed by a sentence that says the same thing ('zero external side effects', 'does not mutate').

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

Completeness4/5

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

For a zero-parameter, no-output-schema, no-annotation tool, the description supplies most of what an agent needs: scope, safety profile, and routing to alternatives. It stops short of describing the shape of the returned status data (per-courier readiness flags, credential presence vs. validity), which is the one gap left by the absence of an output schema.

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

Parameters4/5

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

The tool takes no parameters, so there is no parameter semantics to explain; the baseline for a zero-parameter schema applies. The description correctly does not invent or discuss inputs.

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 names a specific verb ("Inspect") and specific resources (operational health, configuration status, active API credentials) across named courier networks and Google Maps Platform. It is immediately distinguishable from siblings because it explicitly positions itself against track_parcel and calculate_delivery_zone_and_fee.

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

Usage Guidelines5/5

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

It gives a concrete when-to-use scenario (session initialization to verify which couriers are ready for dispatch or balance checking) and explicit when-not-to-use cases with the named alternative for each: 'track_parcel' for shipment status and 'calculate_delivery_zone_and_fee' for fees. Nothing about tool selection is left to inference.

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

resolve_ndr_issueA

Automate Non-Delivery Report (NDR) triage and dispute resolution when a courier delivery attempt fails. GENERATION-ONLY TOOL (NO DIRECT DISPATCH): Generates empathetic, conversion-tested Bengali WhatsApp re-engagement copy for the customer and formal operational escalation tickets with hold instructions for the carrier. Does NOT send network messages or modify courier bookings automatically; output must be reviewed or dispatched through messaging channels. Use when a parcel status changes to failed attempt, customer phone off, or reschedule requested. Do NOT use for general order tracking (use 'track_parcel') or creating orders (use 'create_parcel').

NameRequiredDescriptionDefault
courierYesCourier provider
issue_typeYesReason for failed delivery
customer_nameNoCustomer full name
consignment_idYesTracking code or consignment ID
customer_phoneNoCustomer mobile number
reschedule_dateNoPreferred delivery date (if rescheduled)
corrected_addressNoCorrected delivery address (if wrong address)

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 carries the full burden and does so well: it declares the tool is "GENERATION-ONLY (NO DIRECT DISPATCH)", does not send network messages, does not modify courier bookings, and requires review or downstream dispatch. Gaps remain around idempotency, failure behavior for an unknown consignment_id, and whether any state is persisted, which matters for a tool that produces dispute tickets.

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 most important constraint — generation-only, no dispatch — is front-loaded in capitals before any detail, and the use/do-not-use routing is compact. Some phrasing is promotional ("empathetic, conversion-tested Bengali WhatsApp re-engagement copy"), which adds adjectives but little operational information.

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

Completeness4/5

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

For a seven-parameter tool with no annotations and no output schema, the definition covers the critical unknowns: what gets generated, that nothing is sent automatically, and when to invoke it. It does not describe the shape of the returned copy/ticket payload, which is the main remaining gap since no output schema exists to compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven fields and both enums, making 3 the baseline. The description links issue context to expected output (reschedule requests, wrong addresses) but does not explain how the enum values change generated copy or escalation content, adding little per-parameter 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 gives a specific verb and resource — "Automate Non-Delivery Report (NDR) triage and dispute resolution when a courier delivery attempt fails" — and immediately clarifies it generates Bengali customer copy plus carrier escalation tickets. It explicitly names the sibling tools it is not ('track_parcel', 'create_parcel'), so an agent can disambiguate without inspecting schemas.

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

Usage Guidelines5/5

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

It states explicit triggers ("parcel status changes to failed attempt, customer phone off, or reschedule requested") and explicit exclusions routed to named alternatives ("Do NOT use for general order tracking (use 'track_parcel') or creating orders (use 'create_parcel')"). Both when-to-use and when-not-to-use are covered, which is rare.

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

track_parcelA

Query live, real-time tracking milestones and delivery telemetry across Steadfast, Pathao, RedX, and Paperfly networks using consignment ID or tracking code. READ-ONLY OPERATION: Does not alter shipment state or carrier data. Returns normalized status (Booked, In Review, Picked Up, In Transit, Delivered, Partial Delivered, Cancelled, Returned), current location, carrier status notes, and timestamp history. Use when an end-customer or merchant inquires about existing shipment progress. Do NOT use for creating consignments (use 'create_parcel') or resolving failed deliveries (use 'resolve_ndr_issue'). Carrier provider is auto-detected from consignment prefix if omitted.

NameRequiredDescriptionDefault
courierNoOptional courier provider name. If omitted, provider is auto-detected from tracking code prefix.
tracking_codeYesConsignment ID or tracking code (e.g. 'DS190926QZNGJT' for Pathao, 'SF12345678' for Steadfast, 'REDX123' for RedX)

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it declares READ-ONLY semantics, that shipment state and carrier data are unaltered, enumerates the normalized status set, and explains that the provider is auto-detected from the consignment prefix. This is behavior an agent cannot infer from the schema.

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

Conciseness4/5

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

Front-loaded with purpose, then safety, then return payload, then routing exclusions - a logical order with no filler. It is dense, and the status enumeration is long, but each clause carries usable 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?

No output schema exists, so the description correctly spells out what is returned (normalized status, location, carrier notes, timestamp history). Combined with the usage boundaries, an agent has everything needed to invoke and interpret the call.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters and the prefix-based auto-detection. The description only restates that consignment ID or tracking code is acceptable, adding no format or validation detail beyond the schema examples.

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?

Opens with a specific verb and resource ('Query live, real-time tracking milestones and delivery telemetry') and names the four carriers covered. An agent can distinguish it from siblings like create_parcel or resolve_ndr_issue without opening any schema.

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

Usage Guidelines5/5

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

Explicitly states the when ('end-customer or merchant inquires about existing shipment progress') and the when-not, naming both alternative tools ('create_parcel' for creation, 'resolve_ndr_issue' for failed deliveries). Routing is unambiguous.

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

validate_and_geocode_addressA

Validate, clean, and geocode an unformatted Bangladesh delivery address into structured administrative boundaries (Thana, District, Division), rooftop latitude/longitude coordinates, and a deliverability confidence score (0-100) via Google Maps Platform Geocoding API with OpenStreetMap gazetteer fallback. READ-ONLY SPATIAL LOOKUP: Has zero side effects and does not mutate booking data. Use before booking parcels to detect spelling errors, verify Thana/District matching, and obtain precise coordinates. Do NOT use for calculating delivery fees or road routing distance (use 'calculate_delivery_zone_and_fee' instead).

NameRequiredDescriptionDefault
thanaNoOptional Thana/Upazila name
addressYesFull street or local address (e.g. 'Road 11, House 24, Dhanmondi, Dhaka')
districtNoOptional District name

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does so well: it declares READ-ONLY SPATIAL LOOKUP, zero side effects, and no mutation of booking data, plus discloses the backing services (Google Maps Geocoding with OpenStreetMap gazetteer fallback). It stops short of describing failure behavior or latency/rate-limit characteristics of those external dependencies, which would matter for an agent deciding whether to retry.

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?

Three sentences, each with a distinct job: what it returns, the safety/read-only profile plus fallback stack, and the routing guidance with an explicit exclusion. Outputs and the read-only guarantee are front-loaded, and there is no filler.

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?

There is no output schema, so the description must explain return values — and it names all three return components including the confidence score, which tells the agent how to judge result quality. For a 3-parameter lookup tool this is complete enough to call correctly.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already carries its own description and example, so the schema does the heavy lifting. The description adds context about what the address is used for (Thana/District matching) but no field-level syntax, formatting, or precedence rules beyond the schema — the baseline 3 applies.

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

Purpose5/5

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

States a precise compound verb (validate, clean, geocode) against a specific resource (unformatted Bangladesh delivery address) and enumerates the exact outputs: Thana/District/Division boundaries, rooftop lat/long, and a 0-100 confidence score. It is immediately distinguishable from siblings like calculate_delivery_zone_and_fee.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use trigger ('Use before booking parcels to detect spelling errors, verify Thana/District matching') and an explicit when-not-to-use with a named alternative ('Do NOT use for calculating delivery fees or road routing distance (use calculate_delivery_zone_and_fee instead)'). Both directions of routing are covered, so nothing is left to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev2.4.2
    • Changedtrack_parcel2 fields changed
      • changedInput schema / properties / courier / description
        Previous value: -"Optional courier name if known"New value: +"Optional courier provider name. If omitted, provider is auto-detected from tracking code prefix."
      • changedInput schema / properties / tracking_code / description
        Previous value: -"Consignment ID or tracking code"New value: +"Consignment ID or tracking code (e.g. 'DS190926QZNGJT' for Pathao, 'SF12345678' for Steadfast, 'REDX123' for RedX)"
  2. 10 tool updatesv2.4.0
    • Addedcalculate_delivery_zone_and_fee
    • Addedcheck_fraud_risk
    • Addedcompare_courier_rates
    • Changedcreate_parcel24 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / codAmount
        Removed value: -{
        -  "description": "Cash-on-delivery amount in BDT (0 = prepaid).",
        -  "minimum": 0,
        -  "type": "number"
        -}
      • addedInput schema / properties / cod_amount
        Added value: +{
        +  "description": "Cash on delivery amount in BDT (0 if prepaid)",
        +  "type": "number"
        +}
      • removedInput schema / properties / courier / default
        Removed value: -"steadfast"
      • changedInput schema / properties / courier / description
        Previous value: -"Which courier to book with."New value: +"Target courier or 'auto' for AI smart routing (default: auto)"
      • changedInput schema / properties / courier / enum
        Previous value: -[
        -  "steadfast",
        -  "pathao",
        -  "redx",
        -  "paperfly"
        -]New value: +[
        +  "steadfast",
        +  "pathao",
        +  "redx",
        +  "paperfly",
        +  "auto"
        +]
      • addedInput schema / properties / delivery_area_id
        Added value: +{
        +  "description": "RedX only: numeric delivery-area id (auto-resolved from the address if omitted)",
        +  "type": "number"
        +}
      • changedInput schema / properties / invoice / description
        Previous value: -"Your unique order/invoice id (idempotency key)."New value: +"Unique order invoice number (e.g. INV-1002)"
      • removedInput schema / properties / invoice / minLength
        Removed value: -1
      • removedInput schema / properties / itemDescription
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / item_type
        Added value: +{
        +  "description": "What's inside the parcel (used by RedX)",
        +  "type": "string"
        +}
      • addedInput schema / properties / item_weight
        Added value: +{
        +  "description": "Parcel weight in KG (default: 0.5)",
        +  "type": "number"
        +}
      • removedInput schema / properties / meta
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Courier-specific extras. Pathao: { storeId, cityId, zoneId, areaId }.",
        -  "type": "object"
        -}
      • addedInput schema / properties / note / description
        Added value: +"Special instructions for delivery rider"
      • addedInput schema / properties / pickup_store_id
        Added value: +{
        +  "description": "RedX only: your pickup store id (optional)",
        +  "type": "number"
        +}
      • removedInput schema / properties / recipientAddress
        Removed value: -{
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / recipientName
        Removed value: -{
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / recipientPhone
        Removed value: -{
        -  "pattern": "^01\\d{9}$",
        -  "type": "string"
        -}
      • addedInput schema / properties / recipient_address
        Added value: +{
        +  "description": "Delivery address (Thana, District, Street)",
        +  "type": "string"
        +}
      • addedInput schema / properties / recipient_name
        Added value: +{
        +  "description": "Customer full name",
        +  "type": "string"
        +}
      • addedInput schema / properties / recipient_phone
        Added value: +{
        +  "description": "11-digit Bangladeshi mobile number (e.g. 017XXXXXXXX)",
        +  "type": "string"
        +}
      • addedInput schema / properties / value
        Added value: +{
        +  "description": "Declared parcel value in BDT (used by RedX; defaults to the COD amount)",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "invoice",
        -  "recipientName",
        -  "recipientPhone",
        -  "recipientAddress",
        -  "codAmount"
        -]New value: +[
        +  "invoice",
        +  "recipient_name",
        +  "recipient_phone",
        +  "recipient_address",
        +  "cod_amount"
        +]
    • Changedget_balance6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / courier / default
        Removed value: -"steadfast"
      • addedInput schema / properties / courier / description
        Added value: +"Courier provider to check balance for"
      • changedInput schema / properties / courier / enum
        Previous value: -[
        -  "steadfast",
        -  "pathao",
        -  "redx",
        -  "paperfly"
        -]New value: +[
        +  "steadfast",
        +  "pathao"
        +]
      • addedInput schema / required
        Added value: +[
        +  "courier"
        +]
    • Removedget_courier_locations
    • Changedlist_couriers2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / required
        Added value: +[]
    • Addedresolve_ndr_issue
    • Changedtrack_parcel9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / consignmentId
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / courier / default
        Removed value: -"steadfast"
      • addedInput schema / properties / courier / description
        Added value: +"Optional courier name if known"
      • removedInput schema / properties / invoice
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / trackingCode
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / tracking_code
        Added value: +{
        +  "description": "Consignment ID or tracking code",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "tracking_code"
        +]
    • Addedvalidate_and_geocode_address
  3. 5 tool updatesv0.1.0
    • First observedcreate_parcel
    • First observedget_balance
    • First observedget_courier_locations
    • First observedlist_couriers
    • First observedtrack_parcel

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation4/5

Most tools map to distinct logistics stages, and descriptions explicitly disambiguate close pairs such as calculate_delivery_zone_and_fee versus compare_courier_rates and track_parcel versus resolve_ndr_issue. The fee/rate tools still require careful reading to distinguish single-destination zone lookup from multi-carrier comparison, but selection should generally be reliable.

Naming Consistency4/5

All tools use snake_case and lead with an action verb, making the surface predictable. A few names are longer compound phrases such as validate_and_geocode_address and calculate_delivery_zone_and_fee rather than simple verb_noun, but this is a minor deviation.

Tool Count5/5

Nine tools are well-scoped for a Bangladesh courier/logistics MCP server. Each tool covers a distinct workflow area without excessive fragmentation or obvious redundancy.

Completeness4/5

The set covers pre-booking fraud screening, address validation, rate comparison, parcel creation, tracking, NDR resolution, and balance inquiry. Missing explicit parcel cancellation/update or label retrieval is a noticeable but workable gap, since the create_parcel description notes cancellations require courier portal operations.

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A unified MCP server for West African payment providers, enabling AI agents and REST clients to initiate payments, payouts, refunds, and manage webhooks across 10 providers with a single API.
    8
    18 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Carrier-agnostic shipping labels as a self-hostable MCP server. Build one shipment request, get a tracking number and a print-ready label back for DHL, DPD, UPS, FedEx, GLS, Sendcloud, and Shipcloud.
    3
    2
    MIT