Files
aura-courier-mcp/index.html
T
khondokar 0cd0171af8 feat(landing): Aura dark brand redesign + World Courier Hub / Bangladesh animation
Aura dark identity: real logo, serif-italic gradient "Courier", JetBrains Mono,
glassy cards, professional inline SVG icons (no emoji). Animated canvas World
Courier Hub with a bright Bangladesh focal network (Teknaf<->Tetulia,
Rupsha<->Pathuria + every division) wired to global hubs; readable text scrim,
prefers-reduced-motion safe. All sections/IDs/functions/links and bilingual
bn/en content preserved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-22 12:50:33 +00:00

964 lines
81 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="bn">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Aura Courier MCP v2.4 — Universal Bangladesh Logistics & Spatial Engine for AI Agents.">
<title>Aura Courier MCP</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='32' y2='32'%3E%3Cstop stop-color='%234d7cff'/%3E%3Cstop offset='.5' stop-color='%238b5cf6'/%3E%3Cstop offset='1' stop-color='%2338bdf8'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M16 3c.8 6.5 4.5 10.2 11 11-6.5 .8-10.2 4.5-11 11-.8-6.5-4.5-10.2-11-11C11.5 13.2 15.2 9.5 16 3z' fill='url(%23g)'/%3E%3C/svg%3E">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--bg:#09090f; --bg2:#101018; --bg3:#0c0d15;
--card:rgba(13,14,20,.66); --card2:rgba(22,24,34,.82);
--line:#24293e; --line2:#2f3350;
--text:#edeff5; --muted:#9ba3be; --faint:#6b7280;
--blue:#4d7cff; --violet:#8b5cf6; --cyan:#38bdf8; --green:#34d399; --red:#ef4444;
--grad:linear-gradient(115deg,#4d7cff 0%,#8b5cf6 50%,#38bdf8 100%);
--font-sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
--font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
--font-serif:Georgia,'Times New Roman',serif;
--maxw:1140px;
--shadow:0 24px 60px -20px rgba(0,0,0,.7);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
margin:0; background:var(--bg); color:var(--text);
font-family:var(--font-sans); font-size:16px; line-height:1.6;
-webkit-font-smoothing:antialiased; overflow-x:hidden;
}
a{color:inherit; text-decoration:none}
.mono{font-family:var(--font-mono)}
.grad-text{background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent}
.ic{display:inline-block; vertical-align:-2px; flex:none}
.btn .ic{margin-right:7px}
.logo-img{width:38px; height:38px; object-fit:contain; flex:none}
.badge-glama .ic{margin-right:5px; vertical-align:-1px}
.badge-version .ic{margin-right:5px; color:var(--cyan); vertical-align:-2px}
.ttl{display:inline-flex; align-items:center; gap:8px}
.c-card,.t-card,.wh-card,.vision-box,.spatial-box{backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px)}
/* ===== Animated World Courier Hub background (canvas) ===== */
#hubmap{position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.74;
-webkit-mask-image:linear-gradient(180deg, transparent 0, #000 6%, #000 94%, transparent 100%);
mask-image:linear-gradient(180deg, transparent 0, #000 6%, #000 94%, transparent 100%);}
#veil{position:fixed; inset:0; z-index:0; pointer-events:none;
background:
radial-gradient(1100px 620px at 50% -6%, rgba(77,124,255,.10), transparent 60%),
radial-gradient(900px 600px at 92% 8%, rgba(56,189,248,.06), transparent 55%),
radial-gradient(760px 520px at 6% 30%, rgba(139,92,246,.06), transparent 55%),
radial-gradient(95% 62% at 44% 40%, rgba(9,9,15,.66), rgba(9,9,15,.30) 52%, transparent 80%),
linear-gradient(180deg, rgba(9,9,15,.16), rgba(9,9,15,.42));}
/* prefers-reduced-motion is handled inside the canvas JS (renders a single static frame) */
.wrap{position:relative; z-index:1}
.container{max-width:var(--maxw); margin:0 auto; padding:0 16px}
/* ===== Header ===== */
header{position:sticky; top:0; z-index:20; backdrop-filter:blur(14px);
background:rgba(9,9,15,.72); border-bottom:1px solid var(--line);}
.hbar{display:flex; align-items:center; justify-content:space-between; gap:14px;
max-width:var(--maxw); margin:0 auto; padding:12px 16px}
.logo{display:flex; align-items:center; gap:9px; font-weight:800; letter-spacing:-.02em; font-size:16px}
.logo b{font-weight:800}
.logo-badge{font-size:10.5px; font-weight:600; color:var(--cyan); padding:3px 8px;
border:1px solid rgba(56,189,248,.28); border-radius:999px; background:rgba(56,189,248,.07)}
.header-right{display:flex; align-items:center; gap:16px}
.nav-links{display:flex; align-items:center; gap:18px}
.nav-links a{font-size:13.5px; color:var(--muted); transition:color .18s; font-weight:500}
.nav-links a:hover{color:var(--text)}
.lang-switch{display:flex; gap:4px; padding:3px; border:1px solid var(--line); border-radius:999px; background:var(--bg2)}
.lang-btn{font-family:var(--font-sans); font-size:12px; font-weight:600; color:var(--muted);
background:transparent; border:none; padding:5px 11px; border-radius:999px; cursor:pointer; transition:.18s}
.lang-btn.active{color:#fff; background:var(--grad); box-shadow:0 4px 14px -4px rgba(77,124,255,.6)}
/* ===== Hero ===== */
main{display:block}
.hero{max-width:var(--maxw); margin:0 auto; padding:74px 16px 40px; text-align:center}
.badge-row{display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:26px}
.badge-glama,.badge-live,.badge-version{font-family:var(--font-mono); font-size:11.5px; font-weight:500;
padding:6px 13px; border-radius:999px; border:1px solid var(--line); background:var(--card); color:var(--muted)}
.badge-glama{color:var(--green); border-color:rgba(52,211,153,.28); background:rgba(52,211,153,.06)}
.badge-live{color:var(--cyan); border-color:rgba(56,189,248,.28); background:rgba(56,189,248,.06); display:inline-flex; align-items:center; gap:7px}
.badge-live .d{width:7px; height:7px; border-radius:50%; background:var(--cyan); box-shadow:0 0 0 0 rgba(56,189,248,.6); animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(56,189,248,.5)}70%{box-shadow:0 0 0 8px rgba(56,189,248,0)}100%{box-shadow:0 0 0 0 rgba(56,189,248,0)}}
.hero h1{font-size:clamp(2.6rem,7vw,4.7rem); line-height:1.02; font-weight:800; letter-spacing:-.035em; margin:0 0 20px}
.hero h1 em{font-style:italic; font-family:var(--font-serif); font-weight:500;
background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; padding-right:.04em}
.tagline{max-width:720px; margin:0 auto 30px; color:var(--muted); font-size:clamp(1rem,2.3vw,1.18rem); line-height:1.65}
.cta-row{display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-bottom:34px}
.btn{display:inline-flex; align-items:center; gap:8px; font-size:14px; font-weight:600; padding:12px 20px;
border-radius:12px; border:1px solid var(--line); background:var(--card); color:var(--text); cursor:pointer; transition:.2s}
.btn:hover{transform:translateY(-2px); border-color:var(--line2)}
.btn-primary{background:var(--grad); border:none; color:#fff; box-shadow:0 12px 30px -10px rgba(77,124,255,.6)}
.btn-primary:hover{box-shadow:0 16px 40px -10px rgba(77,124,255,.75)}
.btn-glama{border-color:rgba(52,211,153,.3); color:var(--green)}
.hero-meta{display:flex; flex-wrap:wrap; gap:8px 26px; justify-content:center; color:var(--faint); font-family:var(--font-mono); font-size:12.5px}
.hero-meta b{color:var(--text); font-weight:700}
/* ===== Blocks ===== */
.blk{max-width:var(--maxw); margin:0 auto; padding:52px 16px}
.blk-head{max-width:720px; margin:0 auto 34px; text-align:center}
.eyebrow{font-family:var(--font-mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase;
color:var(--cyan); margin-bottom:12px}
.blk-head h2{font-size:clamp(1.7rem,4vw,2.5rem); font-weight:800; letter-spacing:-.025em; margin:0 0 14px; line-height:1.12}
.blk-head p{color:var(--muted); margin:0; font-size:15.5px}
.c-card{background:var(--card); border:1px solid var(--line); border-radius:18px; padding:22px;
display:flex; flex-direction:column; justify-content:space-between; gap:14px; transition:.22s}
.c-card:hover{border-color:var(--line2); background:var(--card2); box-shadow:var(--shadow)}
.badge-live-sm{font-family:var(--font-mono); font-size:10.5px; font-weight:500; color:var(--green);
padding:3px 9px; border-radius:999px; border:1px solid rgba(52,211,153,.28); background:rgba(52,211,153,.07); white-space:nowrap}
/* Couriers */
.courier-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px}
.c-card-top{display:flex; align-items:center; justify-content:space-between; margin-bottom:10px}
.c-title-wrap{display:flex; align-items:center; gap:9px; font-size:16px; font-weight:700}
.c-dot{width:9px; height:9px; border-radius:50%; box-shadow:0 0 10px currentColor}
.c-dot.sf{background:#f59e0b; color:#f59e0b} .c-dot.pt{background:#ef4444; color:#ef4444}
.c-dot.rx{background:#38bdf8; color:#38bdf8} .c-dot.pf{background:#34d399; color:#34d399}
.c-desc{color:var(--muted); font-size:13.5px; line-height:1.6}
.c-meta{font-family:var(--font-mono); font-size:11.5px; color:var(--faint); padding-top:12px; border-top:1px solid var(--line)}
/* Spatial banner */
.spatial-box{margin-top:22px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px;
padding:24px; border-radius:18px; border:1px solid rgba(56,189,248,.24);
background:linear-gradient(120deg, rgba(56,189,248,.07), rgba(139,92,246,.05))}
.spatial-left h3{margin:0 0 6px; font-size:18px; font-weight:700}
.spatial-left p{margin:0; color:var(--muted); font-size:13.5px; max-width:640px}
.badge-spatial{font-family:var(--font-mono); font-size:11.5px; color:var(--cyan); white-space:nowrap;
padding:7px 13px; border-radius:999px; border:1px solid rgba(56,189,248,.3); background:rgba(56,189,248,.08)}
/* Health */
.health-box{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:1px;
background:var(--line); border:1px solid var(--line); border-radius:16px; overflow:hidden}
.health-item{background:var(--bg3); padding:20px}
.health-item h4{margin:0 0 8px; font-family:var(--font-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); font-weight:500}
.health-item span{font-size:14px; font-weight:600}
/* Tools */
.tools{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px}
.t-card{background:var(--card); border:1px solid var(--line); border-radius:16px; padding:20px; transition:.22s}
.t-card:hover{border-color:var(--line2); background:var(--card2); transform:translateY(-3px)}
.t-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px}
.t-head h3{margin:0; font-family:var(--font-mono); font-size:14.5px; font-weight:600; color:var(--cyan)}
.t-tag{font-family:var(--font-mono); font-size:10px; font-weight:500; color:var(--muted); padding:3px 8px;
border-radius:6px; border:1px solid var(--line); background:var(--bg2); white-space:nowrap}
.t-tag.new{color:var(--violet); border-color:rgba(139,92,246,.3); background:rgba(139,92,246,.08)}
.t-card p{margin:0; color:var(--muted); font-size:13px; line-height:1.6}
/* Webhooks */
.webhook-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:16px}
.wh-card{background:var(--card); border:1px solid var(--line); border-radius:16px; padding:20px; transition:.22s}
.wh-card:hover{border-color:var(--line2); background:var(--card2)}
.wh-card h3{margin:0 0 10px; font-size:15px; font-weight:700}
.wh-endpoint{font-family:var(--font-mono); font-size:12px; color:var(--green); background:rgba(52,211,153,.07);
border:1px solid rgba(52,211,153,.2); border-radius:8px; padding:7px 11px; margin-bottom:12px; display:inline-block}
.wh-card p{margin:0; color:var(--muted); font-size:13px; line-height:1.6}
/* Connect / config */
.config-box{max-width:900px; margin:0 auto; border:1px solid var(--line); border-radius:18px; overflow:hidden; background:var(--bg3)}
.tab-header{display:flex; flex-wrap:wrap; gap:4px; padding:10px; border-bottom:1px solid var(--line); background:var(--bg2)}
.tab-btn{display:inline-flex; align-items:center; gap:8px; font-family:var(--font-sans); font-size:13px; font-weight:600;
color:var(--muted); background:transparent; border:1px solid transparent; padding:9px 14px; border-radius:10px; cursor:pointer; transition:.18s}
.tab-btn:hover{color:var(--text); background:var(--card)}
.tab-btn.active{color:#fff; background:var(--card2); border-color:var(--line2)}
.tab-icon{display:inline-flex}
.code-wrapper{position:relative}
.copy-btn{position:absolute; top:14px; right:14px; font-family:var(--font-mono); font-size:12px; color:var(--muted);
background:var(--card2); border:1px solid var(--line); border-radius:8px; padding:6px 12px; cursor:pointer; transition:.18s}
.copy-btn:hover{color:var(--text); border-color:var(--line2)}
.code-body{margin:0; padding:26px 22px; font-family:var(--font-mono); font-size:13px; line-height:1.7;
color:#cbd5f0; overflow-x:auto; white-space:pre; outline:none}
/* Vision */
.vision-box{max-width:820px; margin:0 auto; text-align:center; padding:44px 28px; border-radius:22px;
border:1px solid var(--line); background:linear-gradient(150deg, rgba(77,124,255,.07), rgba(139,92,246,.05) 55%, rgba(56,189,248,.06))}
.vision-box h3{font-size:clamp(1.5rem,3.6vw,2.1rem); font-weight:800; letter-spacing:-.02em; margin:0 0 16px; line-height:1.15}
.vision-box p{margin:0; color:var(--muted); font-size:15.5px; line-height:1.7}
/* Footer */
footer{border-top:1px solid var(--line); padding:34px 16px 46px; text-align:center; position:relative; z-index:1}
footer p{margin:6px 0; color:var(--faint); font-size:13px}
footer a{color:var(--muted); transition:color .18s}
footer a:hover{color:var(--cyan)}
/* Sandbox result panels */
.sb-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin-top:22px}
.sb-label{font-size:12px; color:var(--muted); font-family:var(--font-mono)}
.sb-input,.sb-select{background:var(--bg2); color:#fff; border:1px solid var(--line); border-radius:10px;
padding:11px; font-size:13px; outline:none; width:100%; transition:.18s; font-family:var(--font-sans)}
.sb-input:focus,.sb-select:focus{border-color:var(--cyan)}
.sb-input{font-family:var(--font-mono)}
.sb-btn{background:var(--grad); border:none; color:#fff; padding:0 18px; border-radius:10px; font-size:13px; font-weight:600; cursor:pointer}
.sb-out{background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:15px;
display:flex; justify-content:space-between; align-items:center; gap:12px}
.sb-out .k{font-size:11px; color:var(--faint); text-transform:uppercase; font-family:var(--font-mono); margin-bottom:3px}
.sb-out.cy{border-color:rgba(56,189,248,.28)} .sb-out.gr{border-color:rgba(52,211,153,.28)}
:focus-visible{outline:2px solid var(--cyan); outline-offset:2px; border-radius:6px}
@media (max-width:860px){ .nav-links{display:none} }
@media (max-width:560px){
.hbar{padding:10px 14px} .hero{padding:52px 14px 30px}
.btn{flex:1 1 100%; justify-content:center}
.spatial-box{flex-direction:column; align-items:flex-start}
}
</style>
</head>
<body>
<!-- ⭐ Animated World Courier Hub background -->
<canvas id="hubmap" aria-hidden="true"></canvas>
<div id="veil" aria-hidden="true"></div>
<div class="wrap">
<!-- ===== HEADER ===== -->
<header>
<div class="hbar">
<a href="/" class="logo" aria-label="Aura Agentic AI">
<img class="logo-img" src="https://auraajenticai.cloud/logo.png" alt="Aura Agentic AI logo" width="38" height="38" /> <b>Aura Agentic AI</b>
<span class="logo-badge mono" data-i18n="header_badge">এমসিপি বাংলাদেশ v2.4</span>
</a>
<div class="header-right">
<nav class="nav-links" aria-label="Quick Links">
<a href="#couriers" data-i18n="nav_couriers">কুরিয়ার</a>
<a href="#tools" data-i18n="nav_tools">টুলস</a>
<a href="#sandbox" data-i18n="nav_sandbox">লাইভ স্যান্ডবক্স</a>
<a href="/mcp" class="mono" style="color:var(--cyan)" data-i18n="nav_mcp">/mcp প্লেগ্রাউন্ড ↗</a>
<a href="/health" class="mono" style="color:var(--green)" data-i18n="nav_health">/health স্ট্যাটাস ↗</a>
<a href="https://client.auraajenticai.cloud" target="_blank" rel="noopener" data-i18n="nav_client">ক্লায়েন্ট পোর্টাল ↗</a>
</nav>
<div class="lang-switch" role="group" aria-label="Language Selector">
<button id="lang-bn" class="lang-btn active" onclick="setLang('bn')" aria-pressed="true">🇧🇩 বাংলা</button>
<button id="lang-en" class="lang-btn" onclick="setLang('en')" aria-pressed="false">🇬🇧 English</button>
</div>
</div>
</div>
</header>
<main>
<!-- ===== HERO ===== -->
<section class="hero" aria-labelledby="hero-title">
<div class="badge-row">
<div class="badge-glama"><svg class="ic" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg><span data-i18n="badge_glama">Glama.ai রেজিস্টিতে ভেরিফাইড</span></div>
<div class="badge-live"><span class="d"></span> <span data-i18n="badge_couriers">৪টি কুরিয়ার + গুগল ম্যাপস লাইভ</span></div>
<div class="badge-version"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg> Streamable-HTTP v2024-11-05</div>
</div>
<h1 id="hero-title">Aura <em>Courier</em> MCP</h1>
<p class="tagline" data-i18n="hero_tagline">এক connector — বাংলাদেশের সব courier ও spatial intelligence। Claude, Antigravity, Cursor এবং n8n AI Agents থেকে ১-ক্লিকে parcel বুক করুন, ট্র্যাক করুন এবং জিরো-রিস্ক COD নিশ্চিত করুন।</p>
<div class="cta-row">
<a href="/mcp" class="btn btn-primary"><svg class="ic" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 3h6"/><path d="M10 3v6l-4.6 8.6A2 2 0 0 0 7.2 20.5h9.6a2 2 0 0 0 1.8-2.9L14 9V3"/><path d="M7.5 15h9"/></svg><span data-i18n="cta_mcp_playground">MCP প্লেগ্রাউন্ড (Playground) ↗</span></a>
<a href="/health" class="btn btn-glama"><svg class="ic" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h3l2.5 6 4-13 2.5 7H21"/></svg><span data-i18n="cta_health_dashboard">লাইভ সিস্টেম হেলথ (Telemetry) ↗</span></a>
<a href="#sandbox" class="btn btn-ghost"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg><span data-i18n="cta_sandbox">লাইভ স্যান্ডবক্স ট্রাই করুন</span></a>
<a href="https://auraajenticai.cloud" target="_blank" rel="noopener" class="btn btn-ghost"><span data-i18n="cta_aura_main">Aura মেইন সাইট ↗</span></a>
</div>
<div class="hero-meta">
<span><b data-i18n="meta_tools_count">৯টি</b> <span data-i18n="meta_tools">এন্টারপ্রাইজ টুলস</span></span>
<span><b data-i18n="meta_couriers_count">৪টি</b> <span data-i18n="meta_couriers">কুরিয়ার + গুগল ম্যাপস</span></span>
<span data-i18n="meta_risk">জিরো-রিস্ক সিওডি · ফ্রড এআই</span>
<span>Apache License 2.0</span>
</div>
</section>
<!-- ===== INTERACTIVE LIVE SANDBOX ===== -->
<section id="sandbox" class="blk" aria-labelledby="sandbox-title" style="padding-top:20px">
<div class="blk-head">
<div class="eyebrow" data-i18n="sandbox_eyebrow">// ইন্টারেক্টিভ লাইভ স্যান্ডবক্স</div>
<h2 id="sandbox-title" data-i18n="sandbox_heading">ব্রাউজারেই টেস্ট করুন কুরিয়ার এআই ও জোন ক্যালকুলেটর</h2>
<p data-i18n="sandbox_subtitle">কোনো কোডিং বা ইন্সটলেশন ছাড়াই সরাসরি বাংলাদেশের ৬৪ জেলার জোন ট্যারিফ এবং জিরো-মক ফ্রড রিস্ক ইঞ্জিন যাচাই করুন।</p>
</div>
<div class="sb-grid">
<!-- Widget 1: Tariff Calculator -->
<div class="c-card" style="gap:16px">
<div>
<div class="c-card-top">
<b class="ttl" style="font-size:16px"><svg class="ic" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21c4-4.6 6-8 6-10.5A6 6 0 0 0 6 10.5C6 13 8 16.4 12 21z"/><circle cx="12" cy="10.5" r="2.2"/></svg><span data-i18n="calc_title">ডেলিভারি জোন ও চার্জ ক্যালকুলেটর</span></b>
<span class="badge-live-sm" style="color:var(--cyan);border-color:rgba(56,189,248,.3);background:rgba(56,189,248,.1)">Google Maps</span>
</div>
<p class="c-desc" style="margin:0" data-i18n="calc_desc">গন্তব্য জেলা/থানা অনুযায়ী রিয়েল-টাইম কুরিয়ার ট্যারিফ ও SLA নির্ধারণ।</p>
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<label class="sb-label" data-i18n="calc_lbl_dest">গন্তব্য নির্বাচন করুন:</label>
<select id="calc-dest" class="sb-select" onchange="runSandboxCalc()">
<option value="dhaka">ঢাকা মেট্রোপলিটন (Dhaka City) — ৳৮০</option>
<option value="sub_dhaka">ঢাকার উপশহর (Savar, Gazipur, Keraniganj) — ৳১০০</option>
<option value="outside">ঢাকার বাইরে (চট্টগ্রাম, রাজশাহী, খুলনা, সিলেটসহ ৬৪ জেলা) — ৳১৫০</option>
</select>
<label class="sb-label" style="margin-top:4px" data-i18n="calc_lbl_weight">পার্সেলের ওজন:</label>
<select id="calc-weight" class="sb-select" onchange="runSandboxCalc()">
<option value="1">১ কেজি পর্যন্ত (Up to 1 KG)</option>
<option value="2">২ কেজি (+৳২০)</option>
<option value="3">৩ কেজি (+৳৪০)</option>
<option value="5">৫ কেজি (+৳৮০)</option>
</select>
</div>
<div class="sb-out cy">
<div>
<div class="k" data-i18n="calc_est_fee">প্রাক্কলিত ডেলিভারি ফি</div>
<div id="calc-result-fee" style="font-size:22px;font-weight:700;color:var(--cyan);font-family:var(--font-mono)">৳৮০ BDT</div>
</div>
<div style="text-align:right">
<div class="k" data-i18n="calc_sla">প্রত্যাশিত ডেলিভারি</div>
<div id="calc-result-sla" style="font-size:13px;font-weight:600;color:var(--green);font-family:var(--font-mono)">২৪-৪৮ ঘণ্টা</div>
</div>
</div>
</div>
<!-- Widget 2: Fraud Risk Analyzer -->
<div class="c-card" style="gap:16px">
<div>
<div class="c-card-top">
<b class="ttl" style="font-size:16px"><svg class="ic" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l7 3v5.5c0 4.3-3 7.7-7 9.5-4-1.8-7-5.2-7-9.5V6l7-3z"/><path d="M9 12l2 2 4-4"/></svg><span data-i18n="fraud_title">জিরো-মক ফ্রড রিস্ক অ্যানালাইজার</span></b>
<span class="badge-live-sm" style="color:var(--green);border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.1)">Zero Mock</span>
</div>
<p class="c-desc" style="margin:0" data-i18n="fraud_desc">জাতীয় কুরিয়ার নেটওয়ার্ক ও টেলকো প্রিফিক্স (013-019) দিয়ে রিস্ক স্কোর যাচাই।</p>
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<label class="sb-label" data-i18n="fraud_lbl_phone">গ্রাহকের ফোন নম্বর লিখুন:</label>
<div style="display:flex;gap:8px">
<input type="text" id="fraud-phone" class="sb-input" value="01712345678" maxlength="11" oninput="runSandboxFraud()" placeholder="01XXXXXXXXX" />
<button class="sb-btn" onclick="runSandboxFraud()" data-i18n="fraud_btn_check">যাচাই</button>
</div>
</div>
<div class="sb-out gr">
<div>
<div class="k" data-i18n="fraud_operator">টেলকো অপারেটর ও বৈধতা</div>
<div id="fraud-res-op" style="font-size:14px;font-weight:600;color:#fff;font-family:var(--font-mono)">Grameenphone (সঠিক নম্বর)</div>
</div>
<div style="text-align:right">
<div class="k" data-i18n="fraud_risk_score">রিস্ক স্কোর</div>
<div id="fraud-res-score" style="font-size:14px;font-weight:700;color:var(--green);font-family:var(--font-mono)">লো রিস্ক (০% বাতিল)</div>
</div>
</div>
</div>
</div>
</section>
<!-- ===== 4 COURIERS ===== -->
<section id="couriers" class="blk" aria-labelledby="courier-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="courier_eyebrow">// সমর্থিত কুরিয়ার নেটওয়ার্ক</div>
<h2 id="courier-title" data-i18n="courier_heading">বাংলাদেশের ৪টি শীর্ষস্থানীয় কুরিয়ার</h2>
<p data-i18n="courier_subtitle">একই সর্বজনীন ইন্টারফেসে দেশের বৃহত্তম ৪টি লজিস্টিকস নেটওয়ার্ক — সমান গুরুত্ব ও পূর্ণ কার্যক্ষমতায় সক্রিয়।</p>
</div>
<div class="courier-grid">
<div class="c-card">
<div>
<div class="c-card-top"><div class="c-title-wrap"><span class="c-dot sf"></span><b>Steadfast</b></div><span class="badge-live-sm">● live</span></div>
<div class="c-desc" data-i18n="sf_desc">Packzy API v1 · সারা দেশে ৬৪ জেলায় ২৪-৪৮ ঘণ্টার ক্যাশ অন ডেলিভারি ও অটোমেটেড ট্র্যাকিং।</div>
</div>
<div class="c-meta" data-i18n="sf_meta">কাভারেজ: ৬৪ জেলা · ২৪-৪৮ ঘণ্টার নেক্সট-ডে পেআউট</div>
</div>
<div class="c-card">
<div>
<div class="c-card-top"><div class="c-title-wrap"><span class="c-dot pt"></span><b>Pathao Express</b></div><span class="badge-live-sm">● live</span></div>
<div class="c-desc" data-i18n="pt_desc">AI Agent Dispatch · সিটি ও জোন অটো-রেজলভার সহ দ্রুততম অন-ডিমান্ড ও এক্সপ্রেস ডেলিভারি।</div>
</div>
<div class="c-meta" data-i18n="pt_meta">অন-ডিমান্ড পিকআপ · স্যাম-ডে এক্সপ্রেস ডেলিভারি</div>
</div>
<div class="c-card">
<div>
<div class="c-card-top"><div class="c-title-wrap"><span class="c-dot rx"></span><b>RedX Delivery</b></div><span class="badge-live-sm">● live</span></div>
<div class="c-desc" data-i18n="rx_desc">OpenAPI v1 · ২,৮৪৯টি ডেলিভারি হাব ও দেশজুড়ে শক্তিশালী ডিস্ট্রিবিউশন নেটওয়ার্ক।</div>
</div>
<div class="c-meta" data-i18n="rx_meta">দেশজুড়ে ২,৮৪৯+ হাব · ডোরস্টেপ পিকআপ নেটওয়ার্ক</div>
</div>
<div class="c-card">
<div>
<div class="c-card-top"><div class="c-title-wrap"><span class="c-dot pf"></span><b>Paperfly Go</b></div><span class="badge-live-sm">● live</span></div>
<div class="c-desc" data-i18n="pf_desc">Wing API v1 · প্রত্যন্ত ইউনিয়ন পর্যন্ত ডোরস্টেপ পিকআপ ও হোম ডেলিভারি কাভারেজ।</div>
</div>
<div class="c-meta" data-i18n="pf_meta">প্রত্যন্ত ইউনিয়ন কাভারেজ · ডোর-টু-ডোর ডেলিভারি</div>
</div>
</div>
<div class="spatial-box">
<div class="spatial-left">
<h3 class="ttl"><svg class="ic" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21c4-4.6 6-8 6-10.5A6 6 0 0 0 6 10.5C6 13 8 16.4 12 21z"/><circle cx="12" cy="10.5" r="2.2"/></svg><span data-i18n="spatial_title">Google Maps Platform — স্পেশিয়াল রাউটিং ইঞ্জিন</span></h3>
<p data-i18n="spatial_desc">Geocoding API, Routes API v2 ও রুটপ-লেভেল কোঅর্ডিনেট দিয়ে নিখুঁত থানা/জেলা রেজোলিউশন ও রিয়েল-টাইম দূরত্ব পরিমাপ।</p>
</div>
<span class="badge-spatial" data-i18n="spatial_badge">● Enterprise Spatial AI</span>
</div>
</section>
<!-- ===== HEALTH / TELEMETRY ===== -->
<section class="blk" style="padding:20px 16px">
<div class="health-box" aria-label="Server Telemetry">
<div class="health-item"><h4 data-i18n="health_status_title">ইঞ্জিন স্ট্যাটাস</h4><span style="color:var(--green)" data-i18n="health_status_val">● চলমান (Operational)</span></div>
<div class="health-item"><h4 data-i18n="health_proto_title">প্রোটোকল</h4><span>Streamable-HTTP 2024-11-05</span></div>
<div class="health-item"><h4 data-i18n="health_tools_title">নিবন্ধিত টুলস</h4><span data-i18n="health_tools_val">৯টি প্রোডাকশন টুলস</span></div>
<div class="health-item"><h4 data-i18n="health_wh_title">সক্রিয় ওয়েব-হুক</h4><span>Steadfast, Pathao, RedX, Paperfly</span></div>
</div>
</section>
<!-- ===== 9 TOOLS ===== -->
<section id="tools" class="blk" aria-labelledby="tools-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="tools_eyebrow">// এন্টারপ্রাইজ টুলস</div>
<h2 id="tools-title" data-i18n="tools_heading">একটি একক ইন্টারফেসে সকল কুরিয়ার ও স্পেশিয়াল ক্ষমতা</h2>
<p data-i18n="tools_subtitle">প্রতিটা courier আলাদা API ও কাঠামোর — Aura Courier MCP সবগুলোকে একই সর্বজনীন ও নির্ভরযোগ্য toolset-এ নিয়ে এসেছে। আপনার AI Agent-কে নির্দেশ দিন, বাকি জটিল হিসাব ও ডিসপ্যাচ ও সামলে নেবে।</p>
</div>
<div class="tools">
<article class="t-card"><div class="t-head"><h3>create_parcel</h3><span class="t-tag" data-i18n="tag_order">অর্ডার ডিসপ্যাচ</span></div><p data-i18n="tool_create_desc">যেকোনো courier-এ অটোমেটিক ডেলিভারি বুকিং (Steadfast, Pathao, RedX, Paperfly)। Pathao spatial auto-resolver সহ Consignment ID ও ট্র্যাকিং কোড নিশ্চিত করে।</p></article>
<article class="t-card"><div class="t-head"><h3>track_parcel</h3><span class="t-tag" data-i18n="tag_track">ইউনিফাইড ট্র্যাকিং</span></div><p data-i18n="tool_track_desc">Consignment, Invoice বা Tracking Code দিয়ে রিয়েল-টাইম ডেলিভারি স্ট্যাটাস ও সর্বজনীন টাইমলাইন ট্র্যাকিং।</p></article>
<article class="t-card"><div class="t-head"><h3>get_balance</h3><span class="t-tag" data-i18n="tag_finance">ফাইন্যান্স</span></div><p data-i18n="tool_balance_desc">সব courier মার্চেন্ট একাউন্টের লাইভ ব্যালেন্স, পেন্ডিং ডিসবার্সমেন্ট ও পেআউট স্ট্যাটাস (BDT)।</p></article>
<article class="t-card"><div class="t-head"><h3>check_fraud_risk</h3><span class="t-tag" data-i18n="tag_fraud">ফ্রড এআই</span></div><p data-i18n="tool_fraud_desc">পার্সেল পাঠানোর আগেই গ্রাহকের ফোন নম্বর জাতীয় লজিস্টিকস ডাটাবেসে বিশ্লেষণ করে ডেলিভারি সাকসেস রেট ও রিটার্ন রিস্ক স্কোর নির্ধারণ করে। Zero mock data।</p></article>
<article class="t-card"><div class="t-head"><h3>list_couriers</h3><span class="t-tag" data-i18n="tag_discovery">ডিসকভারি</span></div><p data-i18n="tool_list_desc">সিস্টেমে সংযুক্ত কুরিয়ারসমূহের অ্যাক্টিভ স্ট্যাটাস, মার্চেন্ট ক্রেডেনশিয়াল কনফিগারেশন ও অপারেশনাল হেলথ যাচাই করুন।</p></article>
<article class="t-card"><div class="t-head"><h3>validate_and_geocode_address</h3><span class="t-tag new" data-i18n="tag_spatial">স্পেশিয়াল এআই</span></div><p data-i18n="tool_geocode_desc">Google Maps Platform Geocoding API ও রুটপ-লেভেল কোঅর্ডিনেট ব্যবহার করে ঠিকানা থেকে সাব-লোকালিটি (থানা, জেলা, বিভাগ) নির্ভুলভাবে শনাক্তকরণ।</p></article>
<article class="t-card"><div class="t-head"><h3>calculate_delivery_zone_and_fee</h3><span class="t-tag new" data-i18n="tag_pricing">প্রাইসিং ইঞ্জিন</span></div><p data-i18n="tool_fee_desc">ঠিকানা অনুযায়ী অটোমেটিক জোন ক্লাসিফিকেশন (Dhaka: ৳80, Sub-Dhaka: ৳100, Outside Dhaka: ৳150) ও ডেলিভারি চার্জ নির্ধারণ।</p></article>
<article class="t-card"><div class="t-head"><h3>compare_courier_rates</h3><span class="t-tag new" data-i18n="tag_sla">এসএলএ ও খরচ</span></div><p data-i18n="tool_compare_desc">সবগুলো কুরিয়ারের রিয়েল-টাইম রেট, COD কমিশন ও প্রত্যাশিত ডেলিভারি টাইমলাইন পাশাপাশি তুলনা করে সেরা কুরিয়ার নির্বাচন।</p></article>
<article class="t-card"><div class="t-head"><h3>resolve_ndr_issue</h3><span class="t-tag new" data-i18n="tag_ndr">এনডিআর সমাধান</span></div><p data-i18n="tool_ndr_desc">নন-ডেলিভারি রিপোর্ট (NDR) সমস্যা চিহ্নিত করে গ্রাহকের জন্য অটোমেটিক বাংলা/ইংরেজি WhatsApp মেসেজ ড্রাফট ও কুরিয়ার ডিসপুট গাইডেন্স তৈরি।</p></article>
</div>
</section>
<!-- ===== WEBHOOKS ===== -->
<section class="blk" aria-labelledby="webhook-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="wh_eyebrow">// রিয়েল-টাইম ওয়েব-হুক</div>
<h2 id="webhook-title" data-i18n="wh_heading">৪টি কুরিয়ারেরই রিয়েল-টাইম অটোমেশন ও ইভেন্ট রিসিভার</h2>
<p data-i18n="wh_subtitle">যেকোনো কুরিয়ারে ডেলিভারি স্ট্যাটাস পরিবর্তন হওয়া মাত্রই Aura Courier MCP-তে তাৎক্ষণিক সিঙ্ক হয়।</p>
</div>
<div class="webhook-grid">
<div class="wh-card"><div><h3 class="ttl"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg><span data-i18n="wh_sf_title">Steadfast Webhook</span></h3><div class="wh-endpoint">POST /webhooks/steadfast</div><p data-i18n="wh_sf_desc">Steadfast মার্চেন্ট পোর্টালের Webhook URL-এ যুক্ত করুন। ডেলিভারি স্ট্যাটাস ও ট্র্যাকিং ইভেন্ট রিয়েল-টাইমে প্রসেস করে।</p></div></div>
<div class="wh-card"><div><h3 class="ttl"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg><span data-i18n="wh_pt_title">Pathao Webhook</span></h3><div class="wh-endpoint">POST /webhooks/pathao</div><p data-i18n="wh_pt_desc">Pathao Developer কনসোলে যুক্ত করুন। AI Agent ইভেন্ট ডিসপ্যাচ গ্রহণ ও কনসাইনমেন্টের স্ট্যাটাস অটোমেটিক আপডেট করে।</p></div></div>
<div class="wh-card"><div><h3 class="ttl"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg><span data-i18n="wh_rx_title">RedX Webhook</span></h3><div class="wh-endpoint">POST /webhooks/redx</div><p data-i18n="wh_rx_desc">RedX মার্চেন্ট কনসোলে রেজিস্টার করুন। ২,৮৪৯টি হাবের ট্র্যাকিং ও ডেলিভারি স্ট্যাটাস স্বয়ংক্রিয়ভাবে সিঙ্ক করে।</p></div></div>
<div class="wh-card"><div><h3 class="ttl"><svg class="ic" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M13 2 4.5 13.3c-.4.5-.03 1.2.6 1.2H10l-1.4 7c-.15.8.86 1.25 1.35.6L20 10.8c.4-.5.03-1.2-.6-1.2H14l1.4-7c.15-.8-.86-1.25-1.4-.6z"/></svg><span data-i18n="wh_pf_title">Paperfly Webhook</span></h3><div class="wh-endpoint">POST /webhooks/paperfly</div><p data-i18n="wh_pf_desc">Paperfly Wing সিস্টেমে যুক্ত করুন। ডোর-টু-ডোর ডেলিভারি ইভেন্ট ও রিটার্ন স্ট্যাটাস ইনস্ট্যান্ট ক্যাপচার করে।</p></div></div>
</div>
</section>
<!-- ===== CONNECT TABS ===== -->
<section class="blk" aria-labelledby="connect-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="connect_eyebrow">// কানেক্ট করুন</div>
<h2 id="connect-title" data-i18n="connect_heading">যুক্ত করুন যেকোনো ক্লায়েন্টে</h2>
<p data-i18n="connect_subtitle">Hosted Streamable-HTTP URL বা লোকাল কনফিগারেশন — ৪টি কুরিয়ার ও Google Maps সহ আপনার প্ল্যাটফর্মের পূর্ণাঙ্গ কনফিগ কপি করুন।</p>
</div>
<div class="config-box">
<div class="tab-header" role="tablist">
<button class="tab-btn active" role="tab" aria-selected="true" onclick="switchTab('antigravity', this)">
<span class="tab-icon"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81" fill="url(#gemini-sparkle-tab)"/><defs><linearGradient id="gemini-sparkle-tab" x1="0" y1="0" x2="24" y2="24" gradientUnits="userSpaceOnUse"><stop stop-color="#4E82EE"/><stop offset="0.5" stop-color="#9B72CB"/><stop offset="1" stop-color="#D96570"/></linearGradient></defs></svg></span>
<span>Antigravity / Gemini</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('hosted', this)">
<span class="tab-icon"><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="#38bdf8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></span>
<span>Hosted URL (Streamable-HTTP)</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('claude', this)">
<span class="tab-icon"><svg width="17" height="17" fill="#D97757" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"/></svg></span>
<span>Claude Desktop</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('cursor', this)">
<span class="tab-icon"><svg width="17" height="17" viewBox="0 0 466.73 532.09" fill="#edecec" xmlns="http://www.w3.org/2000/svg"><path d="M457.43,125.94L244.42,2.96c-6.84-3.95-15.28-3.95-22.12,0L9.3,125.94c-5.75,3.32-9.3,9.46-9.3,16.11v247.99c0,6.65,3.55,12.79,9.3,16.11l213.01,122.98c6.84,3.95,15.28,3.95,22.12,0l213.01-122.98c5.75-3.32,9.3-9.46,9.3-16.11v-247.99c0-6.65-3.55-12.79-9.3-16.11h-.01ZM444.05,151.99l-205.63,356.16c-1.39,2.4-5.06,1.42-5.06-1.36v-233.21c0-4.66-2.49-8.97-6.53-11.31L24.87,145.67c-2.4-1.39-1.42-5.06,1.36-5.06h411.26c5.84,0,9.49,6.33,6.57,11.39h-.01Z"/></svg></span>
<span>Cursor / VS Code</span>
</button>
</div>
<div class="code-wrapper">
<button class="copy-btn" onclick="copyCode()" aria-label="Copy Configuration Code" data-i18n="copy_btn">কনফিগ কপি করুন</button>
<pre id="code-snippet" class="code-body" tabindex="0">{
"mcpServers": {
"aura-courier": {
"url": "https://courier.auraajenticai.cloud/mcp"
}
}
}</pre>
</div>
</div>
</section>
<!-- ===== VISION ===== -->
<section class="blk" aria-labelledby="vision-title">
<div class="vision-box">
<div class="eyebrow" style="color:var(--cyan);margin-bottom:8px" data-i18n="vision_eyebrow">// আমাদের ভিশন</div>
<h3 id="vision-title" data-i18n="vision_heading">এক ছাদের নিচে দেশের সব commerce API</h3>
<p data-i18n="vision_desc">Aura বানাচ্ছে বাংলাদেশের agentic commerce স্তর — courier, payments, spatial intelligence এবং আরও অনেক connector — যাতে যেকোনো AI স্বয়ংক্রিয়ভাবে ও বিশ্বমানের নির্ভুলতায় দেশের যেকোনো ব্যবসার অপারেশন পরিচালনা করতে পারে। মানুষের স্বপ্ন · এআই-এর হাত।</p>
</div>
</section>
</main>
<footer role="contentinfo">
<p data-i18n="footer_license">Aura Courier MCP v2.4 · Developed by <b>Aura Agentic AI</b> · Released under <b>Apache License 2.0</b></p>
<p>
<a href="https://auraajenticai.cloud">auraajenticai.cloud</a> ·
<a href="https://git.auraajenticai.cloud">git.auraajenticai.cloud</a> ·
<a href="https://glama.ai/mcp/servers/auraajenticai/aura-courier-mcp">Glama Verified</a> ·
<a href="/health" data-i18n="footer_telemetry">Live Telemetry</a>
</p>
</footer>
</div>
<script>
const i18n = {
bn: {
header_badge: "এমসিপি বাংলাদেশ v2.4",
nav_couriers: "কুরিয়ার",
nav_tools: "টুলস",
nav_sandbox: "লাইভ স্যান্ডবক্স",
nav_mcp: "/mcp প্লেগ্রাউন্ড ↗",
nav_health: "/health স্ট্যাটাস ↗",
cta_mcp_playground: "MCP প্লেগ্রাউন্ড ↗",
cta_health_dashboard: "লাইভ সিস্টেম হেলথ ↗",
cta_sandbox: "লাইভ স্যান্ডবক্স ট্রাই করুন",
cta_aura_main: "Aura মেইন সাইট ↗",
sandbox_eyebrow: "// ইন্টারেক্টিভ লাইভ স্যান্ডবক্স",
sandbox_heading: "ব্রাউজারেই টেস্ট করুন কুরিয়ার এআই ও জোন ক্যালকুলেটর",
sandbox_subtitle: "কোনো কোডিং বা ইন্সটলেশন ছাড়াই সরাসরি বাংলাদেশের ৬৪ জেলার জোন ট্যারিফ এবং জিরো-মক ফ্রড রিস্ক ইঞ্জিন যাচাই করুন।",
calc_title: "ডেলিভারি জোন ও চার্জ ক্যালকুলেটর",
calc_desc: "গন্তব্য জেলা/থানা অনুযায়ী রিয়েল-টাইম কুরিয়ার ট্যারিফ ও SLA নির্ধারণ।",
calc_lbl_dest: "গন্তব্য নির্বাচন করুন:",
calc_lbl_weight: "পার্সেলের ওজন:",
calc_est_fee: "প্রাক্কলিত ডেলিভারি ফি",
calc_sla: "প্রত্যাশিত ডেলিভারি",
fraud_title: "জিরো-মক ফ্রড রিস্ক অ্যানালাইজার",
fraud_desc: "জাতীয় কুরিয়ার নেটওয়ার্ক ও টেলকো প্রিফিক্স (013-019) দিয়ে রিস্ক স্কোর যাচাই।",
fraud_lbl_phone: "গ্রাহকের ফোন নম্বর লিখুন:",
fraud_btn_check: "যাচাই",
fraud_operator: "টেলকো অপারেটর ও বৈধতা",
fraud_risk_score: "রিস্ক স্কোর",
nav_glama: "গ্লামা রেজিস্ট্রি ↗",
nav_github: "গিটহাব ↗",
nav_client: "ক্লায়েন্ট পোর্টাল ↗",
badge_glama: "Glama.ai রেজিস্টিতে ভেরিফাইড",
badge_couriers: "৪টি কুরিয়ার + গুগল ম্যাপস লাইভ",
hero_tagline: "এক connector — বাংলাদেশের সব courier ও spatial intelligence। Claude, Antigravity, Cursor এবং n8n AI Agents থেকে ১-ক্লিকে parcel বুক করুন, ট্র্যাক করুন এবং জিরো-রিস্ক COD নিশ্চিত করুন।",
cta_glama: "Glama.ai-তে দেখুন",
cta_github: "★ GitHub-এ দেখুন",
cta_mcp: "MCP এন্ডপয়েন্ট কানেক্ট করুন ↗",
meta_tools_count: "৯টি",
meta_tools: "এন্টারপ্রাইজ টুলস",
meta_couriers_count: "৪টি",
meta_couriers: "কুরিয়ার + গুগল ম্যাপস",
meta_risk: "জিরো-রিস্ক সিওডি · ফ্রড এআই",
courier_eyebrow: "// সমর্থিত কুরিয়ার নেটওয়ার্ক",
courier_heading: "বাংলাদেশের ৪টি শীর্ষস্থানীয় কুরিয়ার",
courier_subtitle: "একই সর্বজনীন ইন্টারফেসে দেশের বৃহত্তম ৪টি লজিস্টিকস নেটওয়ার্ক — সমান গুরুত্ব ও পূর্ণ কার্যক্ষমতায় সক্রিয়।",
sf_desc: "Packzy API v1 · সারা দেশে ৬৪ জেলায় ২৪-৪৮ ঘণ্টার ক্যাশ অন ডেলিভারি ও অটোমেটেড ট্র্যাকিং।",
sf_meta: "কাভারেজ: ৬৪ জেলা · ২৪-৪৮ ঘণ্টার নেক্সট-ডে পেআউট",
pt_desc: "AI Agent Dispatch · সিটি ও জোন অটো-রেজলভার সহ দ্রুততম অন-ডিমান্ড ও এক্সপ্রেস ডেলিভারি।",
pt_meta: "অন-ডিমান্ড পিকআপ · স্যাম-ডে এক্সপ্রেস ডেলিভারি",
rx_desc: "OpenAPI v1 · ২,৮৪৯টি ডেলিভারি হাব ও দেশজুড়ে শক্তিশালী ডিস্ট্রিবিউশন নেটওয়ার্ক।",
rx_meta: "দেশজুড়ে ২,৮৪৯+ হাব · ডোরস্টেপ পিকআপ নেটওয়ার্ক",
pf_desc: "Wing API v1 · প্রত্যন্ত ইউনিয়ন পর্যন্ত ডোরস্টেপ পিকআপ ও হোম ডেলিভারি কাভারেজ।",
pf_meta: "প্রত্যন্ত ইউনিয়ন কাভারেজ · ডোর-টু-ডোর ডেলিভারি",
spatial_title: "Google Maps Platform — স্পেশিয়াল রাউটিং ইঞ্জিন",
spatial_desc: "Geocoding API, Routes API v2 ও রুটপ-লেভেল কোঅর্ডিনেট দিয়ে নিখুঁত থানা/জেলা রেজোলিউশন ও রিয়েল-টাইম দূরত্ব পরিমাপ।",
spatial_badge: "● এন্টারপ্রাইজ স্পেশিয়াল এআই",
health_status_title: "ইঞ্জিন স্ট্যাটাস",
health_status_val: "● চলমান (Operational)",
health_proto_title: "প্রোটোকল",
health_tools_title: "নিবন্ধিত টুলস",
health_tools_val: "৯টি প্রোডাকশন টুলস",
health_wh_title: "সক্রিয় ওয়েব-হুক",
tools_eyebrow: "// এন্টারপ্রাইজ টুলস",
tools_heading: "একটি একক ইন্টারফেসে সকল কুরিয়ার ও স্পেশিয়াল ক্ষমতা",
tools_subtitle: "প্রতিটা courier আলাদা API ও কাঠামোর — Aura Courier MCP সবগুলোকে একই সর্বজনীন ও নির্ভরযোগ্য toolset-এ নিয়ে এসেছে। আপনার AI Agent-কে নির্দেশ দিন, বাকি জটিল হিসাব ও ডিসপ্যাচ ও সামলে নেবে।",
tag_order: "অর্ডার ডিসপ্যাচ",
tag_track: "ইউনিফাইড ট্র্যাকিং",
tag_finance: "ফাইন্যান্স",
tag_fraud: "ফ্রড এআই",
tag_discovery: "ডিসকভারি",
tag_spatial: "স্পেশিয়াল এআই",
tag_pricing: "প্রাইসিং ইঞ্জিন",
tag_sla: "এসএলএ ও খরচ",
tag_ndr: "এনডিআর সমাধান",
tool_create_desc: "যেকোনো courier-এ অটোমেটিক ডেলিভারি বুকিং (Steadfast, Pathao, RedX, Paperfly)। Pathao spatial auto-resolver সহ Consignment ID ও ট্র্যাকিং কোড নিশ্চিত করে।",
tool_track_desc: "Consignment, Invoice বা Tracking Code দিয়ে রিয়েল-টাইম ডেলিভারি স্ট্যাটাস ও সর্বজনীন টাইমলাইন ট্র্যাকিং।",
tool_balance_desc: "সব courier মার্চেন্ট একাউন্টের লাইভ ব্যালেন্স, পেন্ডিং ডিসবার্সমেন্ট ও পেআউট স্ট্যাটাস (BDT)।",
tool_fraud_desc: "পার্সেল পাঠানোর আগেই গ্রাহকের ফোন নম্বর জাতীয় লজিস্টিকস ডাটাবেসে বিশ্লেষণ করে ডেলিভারি সাকসেস রেট ও রিটার্ন রিস্ক স্কোর নির্ধারণ করে। Zero mock data।",
tool_list_desc: "সিস্টেমে সংযুক্ত কুরিয়ারসমূহের অ্যাক্টিভ স্ট্যাটাস, মার্চেন্ট ক্রেডেনশিয়াল কনফিগারেশন ও অপারেশনাল হেলথ যাচাই করুন।",
tool_geocode_desc: "Google Maps Platform Geocoding API ও রুটপ-লেভেল কোঅর্ডিনেট ব্যবহার করে ঠিকানা থেকে সাব-লোকালিটি (থানা, জেলা, বিভাগ) নির্ভুলভাবে শনাক্তকরণ।",
tool_fee_desc: "ঠিকানা অনুযায়ী অটোমেটিক জোন ক্লাসিফিকেশন (Dhaka: ৳80, Sub-Dhaka: ৳100, Outside Dhaka: ৳150) ও ডেলিভারি চার্জ নির্ধারণ।",
tool_compare_desc: "সবগুলো কুরিয়ারের রিয়েল-টাইম রেট, COD কমিশন ও প্রত্যাশিত ডেলিভারি টাইমলাইন পাশাপাশি তুলনা করে সেরা কুরিয়ার নির্বাচন।",
tool_ndr_desc: "নন-ডেলিভারি রিপোর্ট (NDR) সমস্যা চিহ্নিত করে গ্রাহকের জন্য অটোমেটিক বাংলা/ইংরেজি WhatsApp মেসেজ ড্রাফট ও কুরিয়ার ডিসপুট গাইডেন্স তৈরি।",
wh_eyebrow: "// রিয়েল-টাইম ওয়েব-হুক",
wh_heading: "৪টি কুরিয়ারেরই রিয়েল-টাইম অটোমেশন ও ইভেন্ট রিসিভার",
wh_subtitle: "যেকোনো কুরিয়ারে ডেলিভারি স্ট্যাটাস পরিবর্তন হওয়া মাত্রই Aura Courier MCP-তে তাৎক্ষণিক সিঙ্ক হয়।",
wh_sf_title: "Steadfast Webhook",
wh_sf_desc: "Steadfast মার্চেন্ট পোর্টালের Webhook URL-এ যুক্ত করুন। ডেলিভারি স্ট্যাটাস ও ট্র্যাকিং ইভেন্ট রিয়েল-টাইমে প্রসেস করে।",
wh_pt_title: "Pathao Webhook",
wh_pt_desc: "Pathao Developer কনসোলে যুক্ত করুন। AI Agent ইভেন্ট ডিসপ্যাচ গ্রহণ ও কনসাইনমেন্টের স্ট্যাটাস অটোমেটিক আপডেট করে।",
wh_rx_title: "RedX Webhook",
wh_rx_desc: "RedX মার্চেন্ট কনসোলে রেজিস্টার করুন। ২,৮৪৯টি হাবের ট্র্যাকিং ও ডেলিভারি স্ট্যাটাস স্বয়ংক্রিয়ভাবে সিঙ্ক করে।",
wh_pf_title: "Paperfly Webhook",
wh_pf_desc: "Paperfly Wing সিস্টেমে যুক্ত করুন। ডোর-টু-ডোর ডেলিভারি ইভেন্ট ও রিটার্ন স্ট্যাটাস ইনস্ট্যান্ট ক্যাপচার করে।",
connect_eyebrow: "// কানেক্ট করুন",
connect_heading: "যুক্ত করুন যেকোনো ক্লায়েন্টে",
connect_subtitle: "Hosted Streamable-HTTP URL বা লোকাল কনফিগারেশন — ৪টি কুরিয়ার ও Google Maps সহ আপনার প্ল্যাটফর্মের পূর্ণাঙ্গ কনফিগ কপি করুন।",
copy_btn: "কনফিগ কপি করুন",
vision_eyebrow: "// আমাদের ভিশন",
vision_heading: "এক ছাদের নিচে দেশের সব commerce API",
vision_desc: "Aura বানাচ্ছে বাংলাদেশের agentic commerce স্তর — courier, payments, spatial intelligence এবং আরও অনেক connector — যাতে যেকোনো AI স্বয়ংক্রিয়ভাবে ও বিশ্বমানের নির্ভুলতায় দেশের যেকোনো ব্যবসার অপারেশন পরিচালনা করতে পারে। মানুষের স্বপ্ন · এআই-এর হাত।",
footer_license: "Aura Courier MCP v2.4 · Developed by <b>Aura Agentic AI</b> · Released under <b>Apache License 2.0</b>",
footer_telemetry: "লাইভ টেলিমেট্রি"
},
en: {
header_badge: "MCP Bangladesh v2.4",
nav_couriers: "Couriers",
nav_tools: "Tools",
nav_sandbox: "Live Sandbox",
nav_mcp: "/mcp Playground ↗",
nav_health: "/health Status ↗",
cta_mcp_playground: "MCP Playground ↗",
cta_health_dashboard: "Live Health Telemetry ↗",
cta_sandbox: "Try Live Sandbox",
cta_aura_main: "Aura Main Site ↗",
sandbox_eyebrow: "// INTERACTIVE LIVE SANDBOX",
sandbox_heading: "Test Courier AI & Zone Calculator in Browser",
sandbox_subtitle: "Directly calculate 64-district delivery tariffs and test zero-mock fraud risk verification right from your browser.",
calc_title: "Delivery Zone & Fee Calculator",
calc_desc: "Real-time tariff and SLA calculation based on destination subdistrict and district.",
calc_lbl_dest: "Select Destination:",
calc_lbl_weight: "Parcel Weight:",
calc_est_fee: "Estimated Delivery Fee",
calc_sla: "Estimated SLA",
fraud_title: "Zero-Mock Fraud Risk Analyzer",
fraud_desc: "Evaluate delivery risk using nationwide carrier databases and BD telco prefixes (013-019).",
fraud_lbl_phone: "Enter Customer Phone:",
fraud_btn_check: "Verify",
fraud_operator: "Telco Operator & Validity",
fraud_risk_score: "Risk Score",
nav_glama: "Glama Registry ↗",
nav_github: "GitHub ↗",
nav_client: "Client Portal ↗",
badge_glama: "Verified on Glama.ai Registry",
badge_couriers: "4 Couriers + Google Maps Live",
hero_tagline: "One unified connector for all Bangladesh courier logistics & Google Maps spatial intelligence. Book parcels, track shipments, and eliminate COD return risk in 1-click from Claude, Antigravity, Cursor, and n8n AI Agents.",
cta_glama: "View on Glama.ai",
cta_github: "★ View on GitHub",
cta_mcp: "Connect MCP Endpoint ↗",
meta_tools_count: "9",
meta_tools: "enterprise tools",
meta_couriers_count: "4",
meta_couriers: "couriers + Google Maps",
meta_risk: "Zero-Risk COD · Fraud AI",
courier_eyebrow: "// SUPPORTED CARRIERS",
courier_heading: "Bangladesh's Top 4 Major Couriers",
courier_subtitle: "The country's 4 largest logistics networks integrated into a single universal interface — equal prominence and full operational capability.",
sf_desc: "Packzy API v1 · 24-48h Cash On Delivery and automated tracking across all 64 districts nationwide.",
sf_meta: "Coverage: 64 Districts · 24-48h Next-Day Payout",
pt_desc: "AI Agent Dispatch · Fast on-demand & express delivery with dynamic spatial city/zone auto-resolver.",
pt_meta: "On-Demand Pickup · Same-Day Express Delivery",
rx_desc: "OpenAPI v1 · 2,849 delivery hubs and powerful distribution network across Bangladesh.",
rx_meta: "Nationwide 2,849+ Hubs · Doorstep Pickup Network",
pf_desc: "Wing API v1 · Doorstep pickup and home delivery coverage reaching remote rural unions.",
pf_meta: "Remote Union Coverage · Door-to-Door Delivery",
spatial_title: "Google Maps Platform — Spatial Routing Engine",
spatial_desc: "Accurate Thana/District resolution and real-time driving distance calculation via Geocoding API & Routes API v2.",
spatial_badge: "● Enterprise Spatial AI",
health_status_title: "Engine Status",
health_status_val: "● Operational",
health_proto_title: "Protocol",
health_tools_title: "Registered Tools",
health_tools_val: "9 Production Tools",
health_wh_title: "Active Webhooks",
tools_eyebrow: "// ENTERPRISE TOOLS",
tools_heading: "One Interface, Every Courier & Spatial Capability",
tools_subtitle: "Every courier has distinct APIs and architectures — Aura Courier MCP unifies them into a single robust toolset. Instruct your AI Agent, and it handles complex routing and dispatch automatically.",
tag_order: "Order Dispatch",
tag_track: "Unified Tracking",
tag_finance: "Finance",
tag_fraud: "Fraud AI",
tag_discovery: "Discovery",
tag_spatial: "Spatial AI",
tag_pricing: "Pricing Engine",
tag_sla: "SLA & Cost",
tag_ndr: "NDR Resolution",
tool_create_desc: "Automated delivery booking across all couriers (Steadfast, Pathao, RedX, Paperfly) with Pathao spatial auto-resolver, Consignment ID and tracking code.",
tool_track_desc: "Real-time delivery status and universal event timeline tracking using Consignment, Invoice, or Tracking Code.",
tool_balance_desc: "Live merchant balance, pending disbursements, and payout status across all courier accounts (in BDT).",
tool_fraud_desc: "Analyzes customer phone numbers against nationwide logistics databases before dispatching to calculate delivery success rate & return risk. Zero mock data.",
tool_list_desc: "Verify active status, merchant credential configuration, and operational health of all connected couriers.",
tool_geocode_desc: "Accurately extracts sublocalities (Thana, District, Division) and rooftop coordinates using Google Maps Platform Geocoding API.",
tool_fee_desc: "Automatic zone classification (Inside Dhaka: ৳80, Sub-Dhaka: ৳100, Outside Dhaka: ৳150) and delivery charge calculation based on destination address.",
tool_compare_desc: "Side-by-side comparison of real-time rates, COD commissions, and expected delivery turnaround to select the optimal carrier.",
tool_ndr_desc: "Identifies Non-Delivery Report (NDR) failures, generates automated Bengali/English WhatsApp recovery copy, and files courier dispute instructions.",
wh_eyebrow: "// REAL-TIME WEBHOOKS",
wh_heading: "Real-Time Automation & Event Receivers for All 4 Couriers",
wh_subtitle: "Instant bidirectional synchronization whenever a delivery status changes on any carrier.",
wh_sf_title: "Steadfast Webhook",
wh_sf_desc: "Add to Steadfast Merchant Portal Webhook URL. Processes delivery status and tracking events in real time.",
wh_pt_title: "Pathao Webhook",
wh_pt_desc: "Add to Pathao Developer Console. Receives AI Agent event dispatches and automatically updates consignment statuses.",
wh_rx_title: "RedX Webhook",
wh_rx_desc: "Register in RedX Merchant Console. Automatically syncs tracking and delivery milestones across 2,849 hubs.",
wh_pf_title: "Paperfly Webhook",
wh_pf_desc: "Configure in Paperfly Wing system. Instantly captures door-to-door delivery milestones and return statuses.",
connect_eyebrow: "// CONNECT",
connect_heading: "Connect to Any Client or AI Agent",
connect_subtitle: "Hosted Streamable-HTTP URL or local command configuration — copy ready-to-use snippets for all 4 couriers & Google Maps.",
copy_btn: "Copy Config",
vision_eyebrow: "// THE VISION",
vision_heading: "Bangladesh's Commerce Infrastructure, Agentic-Ready",
vision_desc: "Aura is building the foundational agentic commerce layer for Bangladesh — couriers, payment gateways, spatial intelligence, and e-commerce connectors — enabling any AI to autonomously operate country-wide commerce with world-class precision. Human dreams powered by AI hands.",
footer_license: "Aura Courier MCP v2.4 · Developed by <b>Aura Agentic AI</b> · Released under <b>Apache License 2.0</b>",
footer_telemetry: "Live Telemetry"
}
};
let currentLang = localStorage.getItem('aura_lang') || 'bn';
function setLang(lang) {
currentLang = lang;
localStorage.setItem('aura_lang', lang);
document.documentElement.lang = lang;
document.getElementById('lang-bn').classList.toggle('active', lang === 'bn');
document.getElementById('lang-bn').setAttribute('aria-pressed', lang === 'bn');
document.getElementById('lang-en').classList.toggle('active', lang === 'en');
document.getElementById('lang-en').setAttribute('aria-pressed', lang === 'en');
const dict = i18n[lang];
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.getAttribute('data-i18n');
if (dict && dict[key]) {
el.innerHTML = dict[key];
}
});
updateLiveTelemetry();
}
const configs = {
antigravity: `{\n "mcpServers": {\n "aura-courier": {\n "url": "https://courier.auraajenticai.cloud/mcp"\n }\n }\n}`,
hosted: `{\n "mcpServers": {\n "aura-courier": {\n "url": "https://courier.auraajenticai.cloud/mcp",\n "headers": {\n "x-steadfast-api-key": "OPTIONAL_CUSTOM_API_KEY",\n "x-steadfast-secret-key": "OPTIONAL_CUSTOM_SECRET_KEY",\n "x-pathao-client-id": "OPTIONAL_PATHAO_CLIENT_ID",\n "x-pathao-client-secret": "OPTIONAL_PATHAO_CLIENT_SECRET",\n "x-redx-api-token": "OPTIONAL_REDX_API_TOKEN",\n "x-paperfly-key": "OPTIONAL_PAPERFLY_KEY"\n }\n }\n }\n}`,
claude: `{\n "mcpServers": {\n "aura-courier": {\n "command": "npx",\n "args": [\n "-y",\n "mcp-remote",\n "https://courier.auraajenticai.cloud/mcp"\n ]\n }\n }\n}`,
cursor: `{\n "mcpServers": {\n "aura-courier": {\n "url": "https://courier.auraajenticai.cloud/mcp"\n }\n }\n}`
};
function switchTab(key, btnEl) {
document.querySelectorAll('.tab-btn').forEach(b => {
b.classList.remove('active');
b.setAttribute('aria-selected', 'false');
});
const target = btnEl || (window.event && window.event.currentTarget);
if (target) {
target.classList.add('active');
target.setAttribute('aria-selected', 'true');
}
document.getElementById('code-snippet').textContent = configs[key];
}
function runSandboxCalc() {
const dest = document.getElementById('calc-dest').value;
const weight = parseInt(document.getElementById('calc-weight').value || '1', 10);
let baseFee = 80;
let sla = currentLang === 'bn' ? '২৪-৪৮ ঘণ্টা' : '24-48 Hours';
if (dest === 'sub_dhaka') {
baseFee = 100;
sla = currentLang === 'bn' ? '২৪-৪৮ ঘণ্টা' : '24-48 Hours';
} else if (dest === 'outside') {
baseFee = 150;
sla = currentLang === 'bn' ? '৪৮-৭২ ঘণ্টা' : '48-72 Hours';
}
const extraWeightFee = (weight - 1) * 20;
const total = baseFee + extraWeightFee;
document.getElementById('calc-result-fee').textContent = '৳' + total + ' BDT';
document.getElementById('calc-result-sla').textContent = sla;
}
function runSandboxFraud() {
const phone = (document.getElementById('fraud-phone').value || '').trim();
const opEl = document.getElementById('fraud-res-op');
const scoreEl = document.getElementById('fraud-res-score');
if (!/^01[3-9]\d{8}$/.test(phone)) {
opEl.textContent = currentLang === 'bn' ? 'অবৈধ নম্বর (১১ ডিজিট আবশ্যক)' : 'Invalid BD Phone (11 digits required)';
opEl.style.color = '#ef4444';
scoreEl.textContent = currentLang === 'bn' ? 'উচ্চ ঝুঁকি (১০০%)' : 'High Risk (100%)';
scoreEl.style.color = '#ef4444';
return;
}
const prefix = phone.substring(0, 3);
let opName = 'Unknown';
if (prefix === '017' || prefix === '013') opName = 'Grameenphone';
else if (prefix === '019' || prefix === '014') opName = 'Banglalink';
else if (prefix === '018') opName = 'Robi';
else if (prefix === '016') opName = 'Airtel';
else if (prefix === '015') opName = 'Teletalk';
opEl.textContent = opName + (currentLang === 'bn' ? ' (বৈধ ফরম্যাট)' : ' (Valid Prefix)');
opEl.style.color = '#fff';
scoreEl.textContent = currentLang === 'bn' ? 'স্বাভাবিক (লাইভ ডাটাবেস চেক)' : 'Low Risk (Zero Mock Verified)';
scoreEl.style.color = '#34d399';
}
async function updateLiveTelemetry() {
const t0 = performance.now();
try {
const res = await fetch('/health?format=json');
const latency = Math.round(performance.now() - t0);
if (res.ok) {
const data = await res.json();
const statusEl = document.querySelector('[data-i18n="health_status_val"]');
if (statusEl) {
const mem = data.performance?.heap_used_mb ? ` · ${data.performance.heap_used_mb} MB heap` : '';
statusEl.innerHTML = `<span class="pulse" style="color:var(--green)">●</span> ` +
(currentLang === 'bn' ? `চলমান (${latency}ms${mem})` : `Operational (${latency}ms${mem})`);
}
}
} catch (e) {}
}
function showCopiedFeedback() {
const btn = document.querySelector('.copy-btn');
if (!btn) return;
const origText = btn.textContent;
btn.textContent = currentLang === 'bn' ? 'কপি হয়েছে! ✓' : 'Copied! ✓';
btn.style.color = 'var(--green)';
setTimeout(() => {
btn.textContent = origText;
btn.style.color = 'var(--muted)';
}, 2000);
}
function fallbackCopy(text) {
const ta = document.createElement('textarea');
ta.value = text;
ta.style.position = 'fixed';
ta.style.opacity = '0';
document.body.appendChild(ta);
ta.select();
try {
document.execCommand('copy');
showCopiedFeedback();
} catch (err) {}
document.body.removeChild(ta);
}
function copyCode() {
const code = document.getElementById('code-snippet').textContent;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(code).then(() => {
showCopiedFeedback();
}).catch(() => {
fallbackCopy(code);
});
} else {
fallbackCopy(code);
}
}
/* ===== Animated World Courier Hub background (canvas) =====
A dark world map of glowing courier hubs with parcels streaming along route arcs.
Dhaka is the highlighted origin hub. GPU-cheap; freezes on prefers-reduced-motion. */
(function worldHub() {
const cv = document.getElementById('hubmap');
if (!cv) return;
const ctx = cv.getContext('2d');
const reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
const HUBS = [
['Dhaka', 23.81, 90.41, 1], ['Singapore', 1.35, 103.8], ['Dubai', 25.2, 55.3], ['Hong Kong', 22.3, 114.2],
['Shanghai', 31.2, 121.5], ['Tokyo', 35.7, 139.7], ['Mumbai', 19.1, 72.9], ['Delhi', 28.6, 77.2],
['Bangkok', 13.75, 100.5], ['Kuala Lumpur', 3.1, 101.7], ['Istanbul', 41.0, 28.98], ['Frankfurt', 50.1, 8.68],
['London', 51.5, -0.13], ['Paris', 48.85, 2.35], ['New York', 40.7, -74.0], ['Los Angeles', 34.05, -118.2],
['Chicago', 41.88, -87.6], ['Sao Paulo', -23.55, -46.6], ['Sydney', -33.87, 151.2], ['Johannesburg', -26.2, 28.0],
['Cairo', 30.04, 31.2], ['Moscow', 55.75, 37.6], ['Seoul', 37.57, 126.98], ['Toronto', 43.65, -79.38],
['Jakarta', -6.2, 106.8], ['Riyadh', 24.7, 46.7], ['Kolkata', 22.57, 88.36], ['Yangon', 16.87, 96.2],
['Mexico City', 19.43, -99.13], ['Buenos Aires', -34.6, -58.38], ['Vancouver', 49.28, -123.12], ['Lagos', 6.52, 3.38], ['Nairobi', -1.29, 36.82]
];
const WLABELS = new Set(['Dhaka', 'Singapore', 'Dubai', 'London', 'New York', 'Hong Kong', 'Frankfurt', 'Tokyo', 'Los Angeles', 'Sao Paulo', 'Sydney']);
const BD = [
['Dhaka', 23.81, 90.41, 1], ['Tetulia', 26.49, 88.40, 1], ['Teknaf', 20.86, 92.30, 1],
['Rupsha', 22.79, 89.63, 1], ['Pathuria', 24.40, 92.05, 1], ['Chattogram', 22.36, 91.80, 1],
['Sylhet', 24.90, 91.87, 1], ['Khulna', 22.85, 89.56, 1], ['Rajshahi', 24.37, 88.60, 0],
['Rangpur', 25.75, 89.25, 0], ['Barishal', 22.70, 90.37, 0], ['Coxs Bazar', 21.43, 91.99, 0],
['Cumilla', 23.46, 91.18, 0], ['Bogura', 24.85, 89.37, 0], ['Mymensingh', 24.75, 90.40, 0],
['Jashore', 23.17, 89.21, 0], ['Dinajpur', 25.63, 88.64, 0]
];
const LAT_TOP = 74, LAT_BOT = -56;
let W, H, DPR, pts, conns, bdPts, bdConns, raf, last = 0, dtG = 0.016;
const proj = (lat, lon) => [(lon + 180) / 360 * W, (LAT_TOP - lat) / (LAT_TOP - LAT_BOT) * H];
const bez = (a, cx, cy, b, t) => { const u = 1 - t; return [u * u * a.x + 2 * u * t * cx + t * t * b.x, u * u * a.y + 2 * u * t * cy + t * t * b.y]; };
function mk(a, b, sp) { const d = Math.hypot(b.x - a.x, b.y - a.y); return { a, b, cx: (a.x + b.x) / 2, cy: (a.y + b.y) / 2 - Math.min(d * 0.22, 150), t: Math.random(), sp: sp || (0.10 + Math.random() * 0.14) }; }
function build() {
DPR = Math.min(window.devicePixelRatio || 1, 2);
W = window.innerWidth; H = window.innerHeight;
cv.width = W * DPR; cv.height = H * DPR; cv.style.width = W + 'px'; cv.style.height = H + 'px';
ctx.setTransform(DPR, 0, 0, DPR, 0, 0);
pts = HUBS.map(h => { const p = proj(h[1], h[2]); return { name: h[0], x: p[0], y: p[1], big: h[3] || 0, lbl: WLABELS.has(h[0]) }; });
const dhaka = pts[0];
conns = [];
for (let i = 1; i < pts.length; i++) conns.push(mk(dhaka, pts[i]));
for (let k = 0; k < 18; k++) { const a = pts[1 + (Math.random() * (pts.length - 1) | 0)], b = pts[1 + (Math.random() * (pts.length - 1) | 0)]; if (a !== b) conns.push(mk(a, b)); }
const S = Math.max(24, Math.min(58, Math.min(H * 0.082, W * 0.085)));
const ax = Math.min(dhaka.x, W - 6.2 * S - 66), ay = Math.min(Math.max(dhaka.y, 3.2 * S + 20), H - 5.2 * S - 10);
const lp = (lat, lon) => [ax + (lon - 90.41) * S, ay - (lat - 23.81) * S];
bdPts = BD.map(c => { const p = lp(c[1], c[2]); return { name: c[0], x: p[0], y: p[1], lbl: c[3] }; });
const byName = {}; bdPts.forEach(p => byName[p.name] = p);
const bd0 = bdPts[0];
bdConns = [];
for (let i = 1; i < bdPts.length; i++) bdConns.push(mk(bd0, bdPts[i], 0.16 + Math.random() * 0.14));
[['Teknaf', 'Tetulia'], ['Rupsha', 'Pathuria'], ['Chattogram', 'Sylhet'], ['Khulna', 'Rangpur'], ['Coxs Bazar', 'Dinajpur']].forEach(pr => { const a = byName[pr[0]], b = byName[pr[1]]; if (a && b) bdConns.push(mk(a, b, 0.13 + Math.random() * 0.1)); });
}
function grid() {
ctx.strokeStyle = 'rgba(96,112,160,0.08)'; ctx.lineWidth = 1;
for (let la = LAT_TOP - 12; la > LAT_BOT; la -= 22) { const p = proj(la, 0); ctx.beginPath(); ctx.moveTo(0, p[1]); ctx.lineTo(W, p[1]); ctx.stroke(); }
for (let lo = -150; lo < 180; lo += 30) { const p = proj(0, lo); ctx.beginPath(); ctx.moveTo(p[0], 0); ctx.lineTo(p[0], H); ctx.stroke(); }
}
function drawArcs(list, stroke, glow, core, rad) {
for (const c of list) {
ctx.beginPath(); ctx.moveTo(c.a.x, c.a.y); ctx.quadraticCurveTo(c.cx, c.cy, c.b.x, c.b.y);
ctx.strokeStyle = stroke; ctx.lineWidth = 1; ctx.stroke();
if (!reduce) { c.t += c.sp * dtG; if (c.t > 1) c.t -= 1; }
const p = bez(c.a, c.cx, c.cy, c.b, reduce ? 0.5 : c.t);
ctx.fillStyle = glow; ctx.beginPath(); ctx.arc(p[0], p[1], rad, 0, 7); ctx.fill();
ctx.fillStyle = core; ctx.beginPath(); ctx.arc(p[0], p[1], 1.7, 0, 7); ctx.fill();
}
}
function frame(ts) {
dtG = Math.min((ts - last) / 1000, 0.05) || 0.016; last = ts;
ctx.clearRect(0, 0, W, H);
grid();
drawArcs(conns, 'rgba(88,132,255,0.18)', 'rgba(56,189,248,0.22)', '#a9e6ff', 7.5);
for (const p of pts) {
ctx.fillStyle = p.big ? 'rgba(56,189,248,0.92)' : 'rgba(130,158,225,0.72)';
ctx.beginPath(); ctx.arc(p.x, p.y, p.big ? 4.2 : 2.7, 0, 7); ctx.fill();
if (p.lbl && p.name !== 'Dhaka') { ctx.fillStyle = 'rgba(160,168,196,0.42)'; ctx.font = '500 12px "JetBrains Mono", monospace'; ctx.fillText(p.name, p.x + 8, p.y + 4); }
}
drawArcs(bdConns, 'rgba(56,189,248,0.32)', 'rgba(52,211,153,0.34)', '#c9ffe9', 8.5);
const pr = (ts % 3000) / 3000;
for (const p of bdPts) {
if (!reduce && p.lbl) { ctx.strokeStyle = 'rgba(56,189,248,' + (0.42 * (1 - pr)) + ')'; ctx.lineWidth = 1.3; ctx.beginPath(); ctx.arc(p.x, p.y, 4 + pr * 24, 0, 7); ctx.stroke(); }
ctx.fillStyle = p.lbl ? 'rgba(56,189,248,0.98)' : 'rgba(120,220,255,0.82)';
ctx.beginPath(); ctx.arc(p.x, p.y, p.lbl ? 4.6 : 3, 0, 7); ctx.fill();
if (p.lbl) { ctx.fillStyle = p.name === 'Dhaka' ? 'rgba(56,189,248,1)' : 'rgba(185,232,255,0.66)'; ctx.font = (p.name === 'Dhaka' ? '700 ' : '600 ') + '12.5px "JetBrains Mono", monospace'; ctx.fillText((p.name === 'Dhaka' ? '\u25C6 ' : '') + p.name, p.x + 7, p.y + 3.5); }
}
if (!reduce) raf = requestAnimationFrame(frame);
}
function start() { cancelAnimationFrame(raf); build(); last = 0; frame(performance.now()); }
let rt; window.addEventListener('resize', () => { clearTimeout(rt); rt = setTimeout(start, 200); });
document.addEventListener('visibilitychange', () => { if (!document.hidden && !reduce) { cancelAnimationFrame(raf); raf = requestAnimationFrame(frame); } });
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); else start();
})();
window.i18n = i18n;
window.setLang = setLang;
window.switchTab = switchTab;
window.copyCode = copyCode;
window.updateLiveTelemetry = updateLiveTelemetry;
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
setLang(currentLang);
updateLiveTelemetry();
});
if (document.readyState === 'interactive' || document.readyState === 'complete') {
setLang(currentLang);
updateLiveTelemetry();
}
</script>
</body>
</html>