Aura Courier MCP
This server is an MCP logistics gateway for booking, tracking, and managing COD parcels across Bangladeshi couriers (Steadfast, Pathao, RedX, Paperfly) with spatial intelligence and fraud/NDR tools.
List couriers: Check which courier integrations are configured and active.
Create parcels: Book real deliveries via a specific courier or auto-smart routing, with COD, weight, and address details.
Track parcels: Get delivery status across supported couriers by tracking code/consignment ID.
Check balances: View merchant account balance and payout details for Steadfast and Pathao.
Check fraud risk: Evaluate a phone number against live nationwide logistics data for delivery reliability and fraud scoring.
Validate and geocode addresses: Use Google Maps to verify addresses, return administrative hierarchy, lat/lng, and confidence score.
Calculate delivery zone and fee: Compute road distance, classify zone (inside/sub/outside Dhaka), and estimate fees and delivery SLA.
Compare courier rates: Get side-by-side tariff, SLA, and COD fee comparisons across all carriers, with a recommended optimal option.
Resolve NDR issues: Automate failed-delivery triage, generate customer WhatsApp re-engagement messages, 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.4 — 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)
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. 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
Compute road distance in km, classify Bangladesh delivery zone (inside_dhaka à§³80, sub_dhaka à§³100, outside_dhaka à§³150), and return estimated delivery hours and COD fee using Google Maps Platform Routes API.
| 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 provided, the description carries the burden of behavioral disclosure. It reveals that the tool invokes the Google Maps Platform Routes API, computes road distance rather than straight-line distance, and returns zone, fee, hours, and COD fee. This is good transparency for a non-mutating calculation tool, though it does not mention failure behavior or API rate implications.
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?
A single dense sentence conveys the main action, inputs' purpose, fee structure, and return values with no filler. The key information is front-loaded in the verb and resource.
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?
Given there is no output schema, the description compensates by explicitly listing the expected return values: distance, zone classification, fees, estimated hours, and COD fee. It also identifies the external API. Minor gaps remain, such as how invalid addresses are handled, but the tool is simple enough that the description is largely sufficient.
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 three parameters. The description adds useful context about outputs and fee tiers, but it does not elaborate on parameter meanings beyond the schema, so the baseline score 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?
The description states a specific action (compute, classify, return) on a clear resource: delivery zone and fee for Bangladesh. It also enumerates concrete outputs (distance, zone tiers with fees, delivery hours, COD fee), which distinguishes it from sibling tools like compare_courier_rates or validate_and_geocode_address.
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?
The description clearly implies the tool is for computing delivery zone and fee, but it does not explicitly state when to prefer it over alternatives such as compare_courier_rates or validate_and_geocode_address. Usage context is inferable but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_fraud_riskA
100% Real Live nationwide courier fraud check across Bangladesh logistics networks (Steadfast nationwide API). Returns actual order delivery/cancellation counts, success rate, and risk evaluation. Zero mock data.
| 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 provided, the description carries the full burden of behavioral disclosure. It discloses that the data is real and not mock ('100% Real Live', 'Zero mock data'), which is valuable for setting expectations. However, it does not explicitly state that the operation is read-only, mention any rate limits, authentication requirements, or potential side effects. The 'returns' wording implies a read operation, but it is not explicitly declared. This is a moderate gap given no annotations exist.
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 description is a single sentence that front-loads the core purpose ('100% Real Live nationwide courier fraud check') and then lists the outputs. Every phrase serves a purpose: it clarifies the scope (nationwide Bangladesh, Steadfast API), the data quality (real, not mock), and the results (counts, success rate, risk evaluation). No wasted words.
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 simple tool with one parameter and no output schema, the description covers the essential points: it states the operation (fraud check), the input (a phone number), the output (metrics and risk evaluation), and the data authenticity. It does not mention error handling or interpretation of the risk evaluation, but these are not strictly necessary for calling the tool correctly. The description is sufficient for an agent to understand what the tool does and what it returns.
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 schema description for 'phone' is complete (100% coverage), stating it expects an 11-digit Bangladeshi mobile number. The tool description adds minimal extra meaning—only that the phone is used for the fraud check. It does not explain how the number is used beyond 'evaluate,' but since the schema already documents the parameter's format and purpose, a baseline of 3 is appropriate. The description does not conflict or add significant depth.
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 clearly states the tool's purpose: a nationwide courier fraud check for Bangladesh logistics networks. It names the specific data returned (delivery/cancellation counts, success rate, risk evaluation) and distinguishes itself from siblings like track_parcel or get_balance by focusing on fraud assessment. The verb 'check' and resource 'fraud risk' are explicit.
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?
The description implies the tool is used to evaluate a phone number for fraud risk, but it does not explicitly state when to use it over alternatives or provide exclusions. It lacks guidance like 'use this before shipping to a new number' or 'use track_parcel for existing orders.' The context is clear but not explicitly framed against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_courier_ratesA
Real-time tariff & SLA comparison across Steadfast, Pathao, RedX, and Paperfly for a given destination address, parcel weight, and COD value. Recommends the optimal carrier for cost vs speed.
| 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?
No annotations are provided, so the description must carry the full behavioral burden. It states that the comparison is real-time and that it recommends based on cost vs speed, but it does not disclose whether this is a read-only operation, whether external APIs are called, or any side effects or latency characteristics.
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?
Two sentences deliver the core function and the recommendation value without filler. The main verb appears first and each clause adds useful information, making the description easy to scan and act on.
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?
With no output schema and no annotations, the description covers inputs and high-level behavior but does not explain how results are returned or how the priority parameter affects output. This leaves a moderate gap for an agent that needs to parse the recommendation result.
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 baseline is 3. The description maps recipient_address, weight_kg, and cod_amount to the real-world inputs, and 'cost vs speed' loosely reflects the priority parameter, but it adds no additional syntax or precedence details beyond what the schema already provides.
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 uses a specific verb ('compare') with a concrete resource: real-time tariff and SLA comparison across four named couriers. It also states a clear outcome (recommends the optimal carrier), which distinguishes it from siblings like list_couriers and create_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?
The description clearly establishes the intended scenario: comparing courier rates and SLAs for a destination, parcel weight, and COD amount. However, it does not explicitly state when not to use the tool or mention alternatives such as calculate_delivery_zone_and_fee.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_parcelA
Book a new parcel delivery across Bangladesh (Steadfast, Pathao, RedX or Paperfly) with normalized response.
| 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?
The description only adds 'with normalized response' as a behavioral trait; everything else about side effects, prerequisites, or error behavior is left unstated. With no annotations, the description should carry more of the burden for a state-changing create operation.
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?
A single, efficient sentence with no filler; the key action and scope are front-loaded. 'Across Bangladesh' and the courier list are useful context, and 'normalized response' cues expected output.
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?
Despite complete parameter docs, the description omits return-value details, side effects, and any sequencing with sibling tools. No output schema exists, so the vague 'normalized response' doesn't tell an agent what to expect after booking.
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 12 parameters. The description's mention of the four couriers and response normalization adds minimal semantic value beyond the enum and defaults already in 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?
Begins with a specific verb ('Book') and a concrete resource ('a new parcel delivery'), names the supported couriers, and adds a response-normalization guarantee. This clearly separates it from sibling tools like track_parcel, list_couriers, and get_balance.
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?
The action is unambiguous and no sibling performs creation, so an agent can infer when to call it. However, it doesn't explicitly mention that validation/rate-comparison tools (e.g., validate_and_geocode_address, compare_courier_rates) could precede booking, so usage context is clear but exclusions/ordering are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Retrieve current merchant account balance and payout details from a courier.
| 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?
No annotations are provided, so the description must carry the burden. 'Retrieve' and 'current' imply a safe, read-only, fresh data lookup, which is helpful. However, it does not disclose potential errors, authentication requirements, or the shape/scope of 'payout details,' leaving some behavioral ambiguity.
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?
One tight sentence with no filler. The core action and object are front-loaded, and the courier scoping is immediately clear.
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 one-parameter tool with no output schema, the description covers what the agent needs to decide to call it and what it will get back at a high level (balance and payout details). It is slightly incomplete in not detailing payout details or return format, but not enough to block correct invocation.
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 fully documents the single 'courier' parameter, including its enum values. The main description adds no extra parameter meaning beyond reinforcing that the balance is checked 'from a courier,' which matches the schema. Baseline 3 is appropriate.
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 opens with a specific verb ('Retrieve') and a precise resource ('current merchant account balance and payout details') scoped to a courier provider. Among the sibling tools, none covers balance/payout retrieval, so the tool is clearly distinguishable without opening the 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?
The description gives clear context: use this tool when you need a merchant account balance or payout details for a specific courier. It does not explicitly name alternatives or exclusions, but the sibling tools are distinct operations (tracking, parcel creation, rate comparison), so confusion is unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_couriersA
Show supported Bangladeshi couriers and spatial services, and check which credentials are active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It discloses a read-only operation through verbs like 'Show' and 'check', and clarifies that credential status is verified. It does not mention auth requirements or rate limits, but for a zero-parameter listing tool this is a minor gap rather than a serious omission.
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?
A single, well-structured sentence front-loads the main action and resource, then adds the credential-checking detail. There is no filler, redundancy, or unnecessary explanation.
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, simple read-only tool, the description is complete enough for an agent to invoke it correctly. The only minor ambiguity is what 'spatial services' includes, but this does not block correct usage.
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 input schema has zero parameters and 100% schema coverage, so there is no parameter documentation burden. The description still adds value by indicating what the tool reports: supported couriers, spatial services, and active credentials.
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 uses a specific verb ('Show') with a clear resource ('supported Bangladeshi couriers and spatial services') and adds a second distinct function ('check which credentials are active'). It is immediately distinguishable from siblings like track_parcel, create_parcel, and get_balance, which perform different operations.
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?
The description gives clear context for when to use the tool: when an agent needs to discover supported couriers, spatial services, or active credentials. It does not explicitly name alternatives or exclusions, but none of the sibling tools serve the same discovery purpose, so the routing is unambiguous in this toolset.
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 resolution for failed courier delivery attempts. Generates WhatsApp re-engagement message to customer and official operational escalation/hold instructions for the carrier.
| 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 must disclose behavior, but it is ambiguous whether this tool actually sends the WhatsApp message or merely generates it, and whether 'escalation/hold instructions' are actionable side effects. It does not mention reversibility, permissions, rate limits, or other consequences, leaving the agent uncertain about real-world impact.
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 description is two sentences with no wasted words. It front-loads the core purpose and then enumerates the two key outputs, making it easy to scan and understand.
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?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description is too high-level. It omits expected return values, conditional logic, and behavioral side effects, so an agent cannot fully predict what will happen when invoking it, especially around sending messages or imposing carrier holds.
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 even though the description adds no parameter-specific detail. The description refers to 'customer' and 'carrier' broadly but does not explain conditional parameters (e.g., reschedule_date for reschedule_requested, corrected_address for wrong_address) that the schema implies.
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 states a specific verb ('resolve') and resource ('NDR issue'), and clearly outlines the outputs ('WhatsApp re-engagement message' and 'escalation/hold instructions'). It is distinct from sibling tools like track_parcel or create_parcel, so an agent can identify its unique role without needing to open 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?
The phrase 'failed courier delivery attempts' gives clear context for when to use this tool, and the sibling list confirms it is the only NDR-resolution tool. However, it does not explicitly state when not to use it or name alternative tools, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_parcelB
Track shipment delivery status across Steadfast or Pathao using Tracking Code / Consignment ID.
| Name | Required | Description | Default |
|---|---|---|---|
| courier | No | Optional courier name if known | |
| tracking_code | Yes | Consignment ID or tracking code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool tracks delivery status but does not disclose what the response looks like, whether it supports all listed couriers equally, what happens with invalid tracking codes, or any rate limits or auth requirements. For a read-only tracking tool, this is a notable gap.
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 description is a single sentence that is concise and front-loaded with the primary action and resource. It names the couriers and the required input. No wasted words, though it could be slightly more structured with explicit usage guidance.
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 simple two-parameter tracking tool, the description is mostly adequate. However, with no output schema and no annotations, the agent is left without information about the return format, error behavior, or courier-specific nuances. The description covers the core purpose but not the full context needed for robust invocation.
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. The description adds the context that tracking_code is a Consignment ID or tracking code, which matches the schema. It does not add meaning beyond the schema, so baseline 3 is appropriate.
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 states a specific verb ('Track') and resource ('shipment delivery status') and names the supported couriers (Steadfast or Pathao). It distinguishes itself from siblings like create_parcel and get_balance, though it doesn't explicitly differentiate from other tracking-like tools (none exist among siblings).
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?
The description implies when to use the tool: when you need to track a shipment's delivery status. It does not explicitly state when not to use it or mention alternatives, but the sibling list (create_parcel, get_balance, etc.) makes the context reasonably clear. No explicit exclusions or alternative routing.
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 and geocode a Bangladesh delivery address using Google Maps Platform Geocoding API with administrative sublocality (Thana, District, Division), exact lat/lng coordinates, and delivery confidence score.
| 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?
There are no annotations, so the description must carry the full behavioral burden. It does disclose the external Google Maps Platform dependency and the expected outputs, but it does not state whether the operation is read-only, whether it makes a network call with associated cost, or what happens on validation/geocoding failure.
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?
A single sentence packs in the tool's purpose, geographic scope, external API, and main outputs without excess. Key information is front-loaded.
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?
The description mentions the important output concepts (sublocality, coordinates, confidence score), which is useful given there is no output schema. However, it does not explain the meaning of the confidence score, how optional thana/district parameters affect results, or failure/edge-case behavior, leaving some ambiguity for a tool with no annotations.
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 three parameters. The description adds no parameter-specific detail beyond what is in the schema, so the baseline score of 3 is appropriate.
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-resource pair ('Validate and geocode a Bangladesh delivery address') and states the key outputs: administrative sublocality, lat/lng coordinates, and delivery confidence score. This clearly distinguishes it from siblings like list_couriers, track_parcel, and check_fraud_risk.
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?
The description implies the tool is used when address validation or geocoding is needed, but it gives no explicit guidance on when to choose this tool over alternatives such as calculate_delivery_zone_and_fee or check_fraud_risk. No exclusions, preconditions, or alternative conditions are mentioned.
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.
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 are clearly distinct by action and resource, but calculate_delivery_zone_and_fee and compare_courier_rates both involve fee/cost calculation and could be confused. check_fraud_risk also partially overlaps with tracking by returning delivery/cancellation counts, though its purpose is clearly risk evaluation.
All tool names follow a consistent snake_case verb_noun pattern (list_couriers, track_parcel, create_parcel, get_balance). Longer names like validate_and_geocode_address remain grammatically consistent with the rest of the set.
With 9 tools, the server is well-scoped for a Bangladeshi multi-courier logistics domain. Each tool covers a meaningful operation without excessive fragmentation or an overly sparse surface.
The toolset covers the main courier workflow: listing carriers, creating parcels, tracking, pricing, address validation, rate comparison, fraud checks, balance checks, and NDR resolution. Minor lifecycle gaps remain, such as no cancel/update parcel or parcel listing, but agents can still complete core booking and tracking workflows.
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
- FlicenseAqualityDmaintenanceMCP server for BlueDart (DHL eCommerce India) shipping API enabling waybill creation, tracking, pickup scheduling, and transit time lookup via MCP tools.8-
- 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.3MIT
- AlicenseAqualityBmaintenanceA 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.84 npmMIT
- AlicenseAqualityCmaintenanceCarrier-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