Build a self-contained, interactive Amazon Reconciliation Dashboard powered by the DataDoe MCP tools. Use when the user asks to create, generate, scaffold, or build an Amazon reconciliation dashboard, settlements dashboard, orders-vs-settlements report, or any "reconcile my Amazon orders" deliverable using DataDoe.
The full skill specification, rendered straight from the source repository.
Amazon Reconciliation Dashboard
Build a complete, single-file interactive HTML dashboard that reconciles 6 months of Amazon Order Line Items against Settlements & P&L Components, using the DataDoe MCP toolchain. The dashboard must be functional after a single execution — the user opens one HTML file in a browser and gets KPIs, charts, a daily table, and an Order Explorer with a month selector wired across all sections.
MCP-enabled assistant (Claude Desktop, ChatGPT with MCP, Cursor with MCP, etc.): follow this entire skill — all data is pulled live through DataDoe MCP tools. This is the primary supported path.
Low-level coding agent without MCP (Cursor, Claude Code, Codex, Aider in environments without DataDoe MCP): substitute the equivalent DataDoe REST endpoints described in the REST Fallback section. The dashboard output is identical.
High-level vibe coding assistant (Lovable, Base44, Bolt, v0, etc.): ignore the tech stack section entirely; use whatever the platform provides. Follow only the Dashboard Features, DataDoe Data Integration, and Implementation Rules sections.
Dashboard Features
1. Month Selector (Sticky Header)
Always visible at the top of the dashboard while scrolling.
Renders a prominent pill-group or styled <select> showing all 6 months in the window (e.g., Sep 2025 | Oct 2025 | Nov 2025 | Dec 2025 | Jan 2026 | Feb 2026).
Includes an "All 6 Months" option for the aggregate view.
The most recent month is selected by default.
Changing the selection instantly updates every section below: KPI cards, trend chart, daily overlay, donut, waterfall, daily table, and Order Explorer.
Visually prominent: large styled buttons or a pill-group — not a tiny native dropdown.
2. Summary KPI Cards
A grid of cards that recompute on every month change:
Shipped Orders | Settled Orders | Order Gap
Order Revenue (£) | Settled Revenue (£) | Revenue Gap (£)
derived from settlement date — may differ from Order Month
Settled £
settlements
settlement sum_item_price
Fees
settlements
sum_referral_fee + sum_fba_fee
Refund £
settlements
sum_refunded_amount (if any)
Net Payout
settlements
settlement sum_total
Delta
computed
order revenue - settled revenue
Cross-Month
computed
badge showing "↗ Settled in [Month]" if settlement month ≠ order month
Required interactive features:
Synced with month selector: when a month is selected in the header, the Order Explorer auto-filters to that month's orders. "All 6 Months" shows everything.
Global text search: live filter as the user types — searches Order ID and all text fields. Debounce ~200ms.
Sortable columns: click any header to sort asc/desc with a sort-indicator arrow.
Pagination: 50 rows per page with Prev / 1 2 3 ... / Next.
Row count display: "Showing X of Y orders (Z filtered)".
Row colour coding (subtle background tint by recon status):
Settled: faint green | Refunded: faint blue | Pending: faint amber | Cancelled: faint red.
Click-to-copy Order ID with a brief toast notification.
Export filtered results: a button that downloads the currently visible rows as CSV.
Implementation notes:
Embed the full 6-month merged order data as a JavaScript array inline in the HTML.
All filtering, sorting, and pagination happen client-side.
Use efficient DOM updates — rebuild only the visible page, not the entire table.
Default sort: Order Date descending (newest first).
Default filter: selected month's orders, all statuses.
9. Global Interactive Behaviour
The month selector controls every other section simultaneously.
Clicking an overlay-chart bar highlights the corresponding row in the Daily Summary Table.
Hover tooltips show the full breakdown.
Toggle buttons work for the counts vs revenue view.
Smooth scroll between sections via in-page navigation.
10. Loading & Error States
Show a progress message during MCP discovery, export polling, and download.
Show user-friendly error messages on MCP tool failures, export ERROR status, or empty datasets.
On poll timeout (10 attempts × 5s), surface a clear error and abort rather than retrying indefinitely.
DataDoe Data Integration
MCP-First Workflow
The dashboard is generated by chaining DataDoe MCP tool calls. The same data shape and rules apply if you fall back to REST — the only thing that changes is the transport.
Phase 1: Discovery
1. Read the DataDoe instructions resource first (REQUIRED before any other DataDoe call).
If resources are unavailable, call the tool datadoe_mcp_md_use_before_exports_reports_sellers_vendors_or_ai.
These instructions describe seller/vendor scoping, rate limits, and required fields — do not skip them.
2. List sellers/vendors.
Call sellers_and_vendors_list.
If only one seller exists, use it automatically.
If multiple sellers exist, ask the user which one to use (show names).
Save the sellerOrVendorId (UUID).
3. Determine the time period.
The dashboard always covers 6 full calendar months.
If the user says "February" or "last month", calculate the 6-month window ending with that month. E.g., "February 2026" → September 2025 through February 2026.
If the user just says "generate my dashboard" with no month, use the most recent 6 full calendar months from today.
Calculate the overall from (1st of the earliest month, 00:00:00.000Z) and to (last day of the latest month, 23:59:59.999Z).
Also calculate the explicit list of months in the window (e.g., ["2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02"]) — required for the month selector.
Phase 2: Data Export
1. Get available export sources.
Call exports_sources_get with the sellerOrVendorId.
Find and save the source IDs for:
"Order Line Items" (underlying table: integrated_amazon_order_items_with_cogs_view).
CRITICAL — Export Request Rules (Discovered Through Testing)
columns: [] (empty array) does NOT return all columns. It returns only implicit seller-context metadata (seller_id, seller_name, marketplace_name, etc.) and none of the table fields. Always specify the required columns explicitly.
Date range uses top-levelfrom and to fields (ISO 8601 datetime strings like 2025-09-01T00:00:00.000Z) — not inside filters.
GET /api/v1/exports/sources?sellerOrVendorIds=<sellerId>
Create export
POST /api/v1/exports
exports_get
GET /api/v1/exports/<exportId>
exports_raw_download
GET /api/v1/exports/<exportId>/raw
Auth: send datadoe-api-key: <key> (mutually exclusive with datadoe-organization-id). Always attach Content-Type: application/json and Accept: application/json. The same anti-rate-limit guardrails apply.
Design Requirements
Dark professional theme: background #0f1729, cards #1e293b, text #e2e8f0.
Rounded corners (12px), subtle shadows.
System font stack: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif.
All monetary values in GBP with £ symbol and thousand separators.
Responsive grid layout.
The month selector must be visually prominent (large styled buttons or a pill-group — not a tiny native dropdown).
Order Explorer table uses alternating row shading for readability.
Filter/search bar visually prominent with a search icon.
Active filters render as coloured pills/badges that can be clicked to clear.
Cross-month settlement badges are visually distinct (e.g., orange outline pill).
Footer: "Data powered by DataDoe".
Important Business Context
Settlement reports and order reports will NEVER match exactly. This is expected. The dashboard exists to make the gaps visible and explainable, not to alarm the user about normal discrepancies.
Common reasons for gaps:
Date shifting: orders placed on Jan 31 may appear in the Feb settlement; Feb 28 orders may settle in March.
MCF / Multi-Channel Fulfillment orders: appear in settlements with fulfilment fees but with £0 item_price in the orders report.
B2B deferred orders: business orders may be deferred for 30 days before settlement.
Cancelled orders: appear in orders (status = Cancelled) but not in settlements.
Refunds: processed as separate REFUND settlement entries, not linked back to the original order date.
The dashboard should help the user build confidence that the data is correct.
Implementation Rules
Single run: the dashboard must work after one execution. Do not leave TODOs or placeholders.
Read the DataDoe instructions resource first before any other DataDoe MCP call.
Always specify columns explicitly in every export — never pass columns: [].
6 full calendar months is the fixed window — never less, never partial months.
Date defaults: from = first day of earliest month at 00:00:00.000Z; to = last day of latest month at 23:59:59.999Z.
Use outputType: "JSON" for every export.
Poll interval: 5 seconds per status check; abort after 10 attempts with a clear error.
Retry on 429 using Retry-After, with incrementally increasing delays.
Group orders by amazon_order_id before assigning reconciliation status — deduplicate across batches.
Cross-month settlements are normal — flag them visually, do not treat them as errors.
Embed all 6 months of data inline in the HTML — the dashboard must not require any runtime fetch.
All filtering, sorting, and pagination happen client-side in the Order Explorer.
Render with Chart.js 4.x via CDN (https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js) — no other charting library.
Self-contained output: one .html file. No external CSS, no separate JS, no build step.
Report the output file path explicitly to the user; open it in the browser if shell access is available.
Example User Interactions
User says
Agent does
"Generate my reconciliation dashboard"
Pull last 6 months of data, generate the full dashboard. Default view: most recent month.
"Generate dashboard for February 2026"
Pull 6 months ending in February 2026 (Sep 2025 – Feb 2026), generate dashboard. Default view: February 2026.
"Why don't my orders match settlements?"
Pull the data, analyse gaps, explain with specific numbers, generate the dashboard as supporting evidence, point out cross-month.
"What happened with order 123-456-789?"
If the dashboard exists, tell the user to search the Order Explorer. If not, generate the dashboard first, then guide them.
"Show me all orders that haven't settled yet"
Generate the dashboard, instruct the user to set the Recon Status filter to "Pending".
"Show me orders from January that settled in February"
Generate the dashboard, instruct the user to select January in the month selector and filter Cross-Month = "Cross-Month Only".
Verification Checklist
After implementation, verify:
The DataDoe instructions resource was fetched before any other MCP call.
A sellerOrVendorId was resolved (auto if single seller, asked if multiple).
Both source IDs were found: "Order Line Items" and "Settlements & P&L Components".
All exports reached COMPLETED status and were downloaded.
Order data was deduplicated by amazon_order_id.
Each unique order received a reconciliation status (Settled / Refunded / Settled+Refunded / Pending / Cancelled).
Cross-month settlements are flagged.
The HTML file opens standalone and renders without console errors.
The month selector switches every section (KPIs, charts, daily table, Order Explorer) on change.
"All 6 Months" aggregates correctly.
Order Explorer search, column filters, date range, sort, pagination, click-to-copy, and CSV export all work.
Row colour coding by recon status is visible.
Cross-month badges are visually distinct.
All monetary values display in GBP with the £ symbol and thousand separators.