Aura Courier MCP
Use this MCP server as a multi-carrier Bangladesh logistics gateway for parcel booking, tracking, fraud checks, address geocoding, delivery pricing, rate comparison, and NDR resolution.
List supported couriers and check credential/configuration status.
Create parcels via Steadfast, Pathao, RedX, Paperfly, or automatic smart routing.
Track shipments across carriers by tracking code or consignment ID.
Check merchant balances/payouts for Steadfast and Pathao.
Run live nationwide courier fraud/risk checks by phone number.
Validate and geocode Bangladeshi addresses with administrative details, coordinates, and confidence score.
Calculate delivery zone, road distance, SLA, and COD fee for an address.
Compare live courier rates and SLAs by cheapest, fastest, or balanced priority.
Resolve failed-delivery NDR issues by generating customer WhatsApp re-engagement text and carrier escalation instructions.
Integrates with Google Maps Platform for address validation and geocoding, live road routing via the Routes API, and spatial hierarchy resolution to compute delivery zones, fees, and deliverability confidence scores.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Aura Courier MCPTrack parcel invoice A-1001"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🚚 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
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]
endCarrier-Agnostic Multi-Routing: Unifies Steadfast, Pathao, RedX, and Paperfly into a single normalized interface.
Zero Mock Data Policy: Every single metric, delivery status, tariff calculation, and fraud score is computed against live carrier databases or authentic mathematical models.
Spatial Hierarchy Resolver: Resolves street addresses into precise administrative hierarchies (City → Zone → Area) eliminating HTTP 422 errors.
Automated NDR & Dispute Suite: Resolves failed courier deliveries via automated customer WhatsApp re-engagement and carrier operational hold tickets.
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 |
| Account: |
| Active: |
Pathao |
| User: |
| 100% Active: OAuth2 token issuing, price calculation, auto-geocoding live. |
RedX |
| Shop ID: |
| 100% Active: 2,849 delivery areas and parcel booking verified. |
Paperfly |
| Store: |
| 100% Active: Order placement ( |
Google Maps |
| Project: |
| 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-tokencurl --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/storesActive Store:
<PATHAO_STORE_ID>("", Central Hub, Dhaka)
Parcel Booking:
POST /aladdin/api/v1/ordersRequired 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_areaare 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}/infoPrice Plan API:
POST /aladdin/api/v1/merchant/price-plan
3.2. Steadfast Courier Integration
Base Portal:
https://portal.packzy.com/api/v1Headers:
Api-Key: <STEADFAST_API_KEY>,Secret-Key: <STEADFAST_SECRET_KEY>Account Balance:
GET /get_balanceFraud Risk Database:
GET /fraud_check/{phone}Order Dispatch:
POST /create_orderStatus Tracking:
GET /status_by_trackingcode/{tracking_code}
3.3. RedX Delivery Integration
Base Portal:
https://openapi.redx.com.bd/v1.0.0-betaHeaders:
API-ACCESS-TOKEN: Bearer {token}Delivery Areas (2,849 Hubs):
GET /areasParcel Creation:
POST /parcelParcel Tracking:
GET /parcel/track/{tracking_id}
3.4. Paperfly Integration
Base Portal:
https://api.paperfly.com.bdHeaders:
paperflykey: <PAPERFLY_KEY>Authentication: HTTP Basic Auth (
<PAPERFLY_USERNAME>:<PAPERFLY_PASSWORD>)Parcel Booking:
POST /merchant/api/service/new_order_v2.phpTracking:
POST /API-Order-TrackingwithReferenceNumber
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
autosmart 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/lngcoordinates, 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 hourssub_dhaka(22–45 km or Savar/Gazipur/Keraniganj/Narayanganj): ৳100 | 48–72 hoursoutside_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/steadfastAuth:
Authorization: Bearer <STEADFAST_API_KEY>(configured in Steadfast portal)Supported Notification Types:
delivery_status: Real-time status shifts (pending,delivered,partial_delivered,cancelled,unknown).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/pathaoSupported 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 | jqExpected 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/mcpClient 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.
8. Google Maps Platform Attribution & Legal Appendix
Service Attribution ID:
gmp_git_agentskills_v1
APIs Utilized:
Geocoding API: Street and sublocality resolution for Bangladesh administrative areas.
Routes API (
v2:computeRoutes): Precise road distance metrics and zone classification.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-usevswhen-not-to-usescenarios, and comprehensive parameter constraints.Service Telemetry Update: Updated
/healthendpoint 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.
10. License & Legal Protection
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.0Unless 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 toolscalculate_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).
| Name | Required | Description | Default |
|---|---|---|---|
| weight_kg | No | Parcel weight in KG (default: 0.5) | |
| origin_address | No | Optional merchant warehouse address (defaults to Dhaka Central Hub) | |
| recipient_address | Yes | Delivery destination address |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | 11-digit Bangladeshi mobile number to evaluate |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | Optimization priority (default: balanced) | |
| weight_kg | No | Parcel weight in KG (default: 0.5) | |
| cod_amount | No | Cash On Delivery amount in BDT (default: 0) | |
| recipient_address | Yes | Destination delivery address anywhere in Bangladesh |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Special instructions for delivery rider | |
| value | No | Declared parcel value in BDT (used by RedX; defaults to the COD amount) | |
| courier | No | Target courier or 'auto' for AI smart routing (default: auto) | |
| invoice | Yes | Unique order invoice number (e.g. INV-1002) | |
| item_type | No | What's inside the parcel (used by RedX) | |
| cod_amount | Yes | Cash on delivery amount in BDT (0 if prepaid) | |
| item_weight | No | Parcel weight in KG (default: 0.5) | |
| recipient_name | Yes | Customer full name | |
| pickup_store_id | No | RedX only: your pickup store id (optional) | |
| recipient_phone | Yes | 11-digit Bangladeshi mobile number (e.g. 017XXXXXXXX) | |
| delivery_area_id | No | RedX only: numeric delivery-area id (auto-resolved from the address if omitted) | |
| recipient_address | Yes | Delivery address (Thana, District, Street) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| courier | Yes | Courier provider to check balance for |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| courier | Yes | Courier provider | |
| issue_type | Yes | Reason for failed delivery | |
| customer_name | No | Customer full name | |
| consignment_id | Yes | Tracking code or consignment ID | |
| customer_phone | No | Customer mobile number | |
| reschedule_date | No | Preferred delivery date (if rescheduled) | |
| corrected_address | No | Corrected delivery address (if wrong address) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| courier | No | Optional courier provider name. If omitted, provider is auto-detected from tracking code prefix. | |
| tracking_code | Yes | Consignment ID or tracking code (e.g. 'DS190926QZNGJT' for Pathao, 'SF12345678' for Steadfast, 'REDX123' for RedX) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| thana | No | Optional Thana/Upazila name | |
| address | Yes | Full street or local address (e.g. 'Road 11, House 24, Dhanmondi, Dhaka') | |
| district | No | Optional District name |
TDQS
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.
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.
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.
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.
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.
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 tool update
v2.4.2- Changed
track_parcel2 fields changed- changed
Input schema / properties / courier / descriptionPrevious value: -"Optional courier name if known"New value: +"Optional courier provider name. If omitted, provider is auto-detected from tracking code prefix." - changed
Input schema / properties / tracking_code / descriptionPrevious value: -"Consignment ID or tracking code"New value: +"Consignment ID or tracking code (e.g. 'DS190926QZNGJT' for Pathao, 'SF12345678' for Steadfast, 'REDX123' for RedX)"
10 tool updates
v2.4.0- Added
calculate_delivery_zone_and_fee - Added
check_fraud_risk - Added
compare_courier_rates - Changed
create_parcel24 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / codAmountRemoved value: -{ - "description": "Cash-on-delivery amount in BDT (0 = prepaid).", - "minimum": 0, - "type": "number" -} - added
Input schema / properties / cod_amountAdded value: +{ + "description": "Cash on delivery amount in BDT (0 if prepaid)", + "type": "number" +} - removed
Input schema / properties / courier / defaultRemoved value: -"steadfast" - changed
Input schema / properties / courier / descriptionPrevious value: -"Which courier to book with."New value: +"Target courier or 'auto' for AI smart routing (default: auto)" - changed
Input schema / properties / courier / enumPrevious value: -[ - "steadfast", - "pathao", - "redx", - "paperfly" -]New value: +[ + "steadfast", + "pathao", + "redx", + "paperfly", + "auto" +] - added
Input schema / properties / delivery_area_idAdded value: +{ + "description": "RedX only: numeric delivery-area id (auto-resolved from the address if omitted)", + "type": "number" +} - changed
Input schema / properties / invoice / descriptionPrevious value: -"Your unique order/invoice id (idempotency key)."New value: +"Unique order invoice number (e.g. INV-1002)" - removed
Input schema / properties / invoice / minLengthRemoved value: -1 - removed
Input schema / properties / itemDescriptionRemoved value: -{ - "type": "string" -} - added
Input schema / properties / item_typeAdded value: +{ + "description": "What's inside the parcel (used by RedX)", + "type": "string" +} - added
Input schema / properties / item_weightAdded value: +{ + "description": "Parcel weight in KG (default: 0.5)", + "type": "number" +} - removed
Input schema / properties / metaRemoved value: -{ - "additionalProperties": {}, - "description": "Courier-specific extras. Pathao: { storeId, cityId, zoneId, areaId }.", - "type": "object" -} - added
Input schema / properties / note / descriptionAdded value: +"Special instructions for delivery rider" - added
Input schema / properties / pickup_store_idAdded value: +{ + "description": "RedX only: your pickup store id (optional)", + "type": "number" +} - removed
Input schema / properties / recipientAddressRemoved value: -{ - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / recipientNameRemoved value: -{ - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / recipientPhoneRemoved value: -{ - "pattern": "^01\\d{9}$", - "type": "string" -} - added
Input schema / properties / recipient_addressAdded value: +{ + "description": "Delivery address (Thana, District, Street)", + "type": "string" +} - added
Input schema / properties / recipient_nameAdded value: +{ + "description": "Customer full name", + "type": "string" +} - added
Input schema / properties / recipient_phoneAdded value: +{ + "description": "11-digit Bangladeshi mobile number (e.g. 017XXXXXXXX)", + "type": "string" +} - added
Input schema / properties / valueAdded value: +{ + "description": "Declared parcel value in BDT (used by RedX; defaults to the COD amount)", + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "invoice", - "recipientName", - "recipientPhone", - "recipientAddress", - "codAmount" -]New value: +[ + "invoice", + "recipient_name", + "recipient_phone", + "recipient_address", + "cod_amount" +]
- Changed
get_balance6 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / courier / defaultRemoved value: -"steadfast" - added
Input schema / properties / courier / descriptionAdded value: +"Courier provider to check balance for" - changed
Input schema / properties / courier / enumPrevious value: -[ - "steadfast", - "pathao", - "redx", - "paperfly" -]New value: +[ + "steadfast", + "pathao" +] - added
Input schema / requiredAdded value: +[ + "courier" +]
- Removed
get_courier_locations - Changed
list_couriers2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / requiredAdded value: +[]
- Added
resolve_ndr_issue - Changed
track_parcel9 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / consignmentIdRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / courier / defaultRemoved value: -"steadfast" - added
Input schema / properties / courier / descriptionAdded value: +"Optional courier name if known" - removed
Input schema / properties / invoiceRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / trackingCodeRemoved value: -{ - "type": "string" -} - added
Input schema / properties / tracking_codeAdded value: +{ + "description": "Consignment ID or tracking code", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "tracking_code" +]
- Added
validate_and_geocode_address
5 tool updates
v0.1.0- First observed
create_parcel - First observed
get_balance - First observed
get_courier_locations - First observed
list_couriers - First observed
track_parcel
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for BlueDart (DHL eCommerce India) shipping API enabling waybill creation, tracking, pickup scheduling, and transit time lookup via MCP tools.8MIT
- AlicenseAqualityDmaintenanceMulti-carrier parcel tracking server that communicates directly with carrier APIs (DHL, UPS, FedEx, etc.) without third-party aggregators, providing normalized tracking status and events.31MIT
- AlicenseAqualityCmaintenanceA 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.818 npmMIT
- AlicenseAqualityDmaintenanceCarrier-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.32MIT