One claude mcp add and the terminal can see fresh Seller Central, Vendor Central and Amazon Ads data. Then Claude Code writes the dashboard, the weekly report or the bulk price change, and your rules decide what reaches Amazon.
Sign in with OAuth when it’s just you at the keyboard. Use a DataDoe MCP key when a team shares the repo or a script runs Claude Code without anyone there. Every part of each command, explained.
$ claude mcp add --transport http datadoe https://mcp.datadoe.com/mcp/v1 $ claude > /mcp datadoe → Authenticate Opening browser… signed in to DataDoe ✓
DataDoe is hosted. Claude Code talks to it over HTTP, so there is no package to install and no process to keep alive on your machine.
Every tool arrives as mcp__datadoe__…. Permission rules, hooks and subagent tool lists all match on that name, so keep it short and stable.
/mcp opens your browser, you log in to DataDoe and approve. Claude Code keeps the token and refreshes it, so no key ever sits in a file. Over SSH, claude mcp login datadoe does the same.
$ export DATADOE_MCP_KEY=… $ claude mcp add --transport http datadoe https://mcp.datadoe.com/mcp/v1 \ --scope project --header \ 'datadoe-mcp-key: ${DATADOE_MCP_KEY}'
Written to .mcp.json
{
"mcpServers": {
"datadoe": {
"type": "http",
"url": "https://mcp.datadoe.com/mcp/v1",
"headers": { "datadoe-mcp-key": "${DATADOE_MCP_KEY}" }
}
}
}--scope project writes .mcp.json at the repo root. Everyone who clones the repo gets DataDoe, and Claude Code asks each of them to approve the server once.
Put the name and URL before --header. The flag accepts several values, so anything after it is read as one more header and the command stops with missing required argument 'name'.
They stop your shell from expanding the variable, so the file stores ${DATADOE_MCP_KEY} and Claude Code fills it in from each person's environment. With double quotes, your real key ends up in the commit.
No flag means local scope: you, this project. Add --scope user to get DataDoe in every repo. Already added the connector on claude.ai? Claude Code signed in to the same account picks it up by itself; run /mcp to check. Keys live in DataDoe → Integrations → MCP, and the Claude Code docs have the rest.
In Claude Code the way you run Amazon lives next to the code: house rules, permissions, recurring jobs and specialist agents, all reviewed and versioned like anything else. Click through a working setup.
Read by Claude Code at the start of every session. Put your Amazon house rules here once instead of repeating them in every prompt.
# Amazon ops Numbers come from the DataDoe MCP server (datadoe). Never estimate a figure you can pull. Marketplaces: US, UK, DE. Report in USD. Net profit = sales − Amazon fees − refunds − ad spend − COGS. COGS lives in DataDoe; ask before using anything else. ## Changes on Amazon - Write the plan to changes/<date>.csv first. - Dry-run every row with actions_start (dryRun: true). - Never price below pricing/floors.csv. - Wait for "go" before the live run.
Reads run without a prompt. Anything that changes Amazon asks first, and a hook checks it on the way out. Commit it and the whole team works under the same rules.
{
"permissions": {
"allow": [
"mcp__datadoe__exports_create",
"mcp__datadoe__exports_get",
"mcp__datadoe__sellers_and_vendors_list"
],
"ask": ["mcp__datadoe__actions_start"]
},
"hooks": {
"PreToolUse": [{
"matcher": "mcp__datadoe__actions_start",
"hooks": [{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/require-dry-run.sh"
}]
}]
}
}A skill is a recipe Claude Code loads when the task matches its description. Type /weekly-pnl, or ask how last week went, and the same steps run every Monday.
--- name: weekly-pnl description: Weekly profit and loss by SKU and marketplace from DataDoe. Use for "how did last week go", the weekly P&L or a margin report. --- 1. Pull last week's orders, settlements, refunds, Sponsored Products spend and COGS with exports_create. 2. Join by SKU and marketplace. Use the profit formula in CLAUDE.md. 3. Compare with the week before. Flag any SKU whose margin fell by more than 5 points. 4. Write reports/pnl-<year>-w<week>.md and a CSV.
A subagent works in its own context with its own tool list. This one can read ads data and write a report, but actions_start isn't on its list, so it cannot change a bid.
--- name: ppc-auditor description: Audits Amazon Ads search terms against real margin. Use before any bid or budget change. tools: mcp__datadoe__exports_create, mcp__datadoe__exports_get, Read, Write model: sonnet --- You audit Sponsored Products search terms for the last 30 days. You are read-only. For each term, compare ACoS with break-even ACoS from the SKU's COGS and fees. Sort terms into cut, lower, hold and raise, give the reason, and save the table to reports/ppc-<date>.md.
What the skill leaves behind: a plain file in the repo you can diff week to week, paste into Slack or feed to the next job.
# Week 40 · net profit $18,960 (−6% w/w) | Marketplace | Sales | Net | Margin | |-------------|----------|----------|--------| | US | $61,240 | $13,110 | 21.4% | | UK | $17,880 | $3,520 | 19.7% | | DE | $12,430 | $2,330 | 18.7% | ## Margin down more than 5 points - MUG-12PK-TEAL: 14.1% → 6.8%. Refunds at 11%. - HOSE-100FT-GRN: 22.0% → 15.9%. CPC up 38%. Next: run ppc-auditor on HOSE-100FT-GRN.
While it builds, Claude Code reads your real DataDoe schema over MCP, so the column names in the code are right the first time. What it ships talks to DataDoe’s REST API or your BigQuery dataset directly, so it keeps working after you close the terminal.
Days of cover for every SKU and marketplace, with a reorder date worked out from your own lead times.
Build a Streamlit app that shows days of cover for each SKU in each marketplace, using DataDoe. Take lead times from suppliers.csv and show the date each SKU has to be reordered.
app.pydatadoe_client.pyrequirements.txtYesterday’s net margin by SKU, posted only when something drops below the line you set.
Write a script that checks yesterday's net margin per SKU after fees, ads and COGS, and posts the ones under 10% to #amazon-alerts. Schedule it for 7am.
alert.py.github/workflows/alert.ymlOpen purchase orders next to Amazon’s own demand forecast, as a view your BI tool can read.
Line up our open Vendor Central POs against Amazon's weekly demand forecast, ASIN by ASIN, two months out. Save it as a BigQuery view.
views/po_vs_forecast.sqlREADME.mdEvery title, bullet and attribute that breaks your style guide, fixed in a file you review before anything is sent.
Find listings with titles over our limit, missing bullets or a wrong size attribute. Write the fixes to changes/listings.csv and dry-run them.
changes/listings.csvstyle-guide.mdA chat window is a poor place to review a big change. In Claude Code the plan is a file: you read it in your editor, diff it in git and keep it as the record of what went out.
Claude Code writes every change to changes/<date>.csv, one row per SKU, old value next to new.
Each row goes to actions_start with dryRun: true. DataDoe checks it and sends nothing to Amazon.
Fix what failed, approve the rest, and every change lands in the DataDoe Action log, listed by actions_list.
changes/2026-10-09.csvDry run · 6 of 23 rows| SKU | Change | Result |
|---|---|---|
HOSE-50FT-GRN | Price $34.99 → $33.24 | Validated |
HOSE-100FT-GRN | Price $49.99 → $47.49 | Validated |
MUG-12PK-TEAL | Title cut from 212 to 186 characters | Validated |
MUG-6PK-SAGE | Bullet 3 rewritten | Validated |
LED-STRIP-5M | Item package quantity 1 → 2 | Needs unit count too |
LED-STRIP-10M | Price $29.99 → $28.49 | Validated |
DataDoe ships with writes disabled, you enable each kind of change yourself, and the dry run is available on request. A Claude Code hook lets you go one step further and write your own rule for what may reach Amazon, in a script that sits in the repo.
Claude Code calls mcp__datadoe__actions_start with a price, listing or campaign change.
The PreToolUse hook reads the request, logs it to a file in the repo and looks at dryRun.
DataDoe checks the change and sends nothing to Amazon, so there is nothing to approve yet.
Claude Code shows the reason and waits for your yes. Swap "ask" for "deny" and live writes are blocked outright.
.claude/hooks/require-dry-run.shPreToolUse#!/usr/bin/env bash input=$(cat) dry=$(jq -r '.tool_input.dryRun // false' <<<"$input") echo "$(date -u +%FT%TZ) dryRun=$dry $(jq -c .tool_input <<<"$input")" \ >> .claude/amazon-actions.log [ "$dry" = "true" ] && exit 0 jq -n '{hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "ask", permissionDecisionReason: "Live change on Amazon. Dry-run it first?" }}'
With claude -p, Claude Code runs a prompt and exits: from cron, a CI job or a GitHub Actions schedule. Point it at a skill or a subagent, keep the DataDoe key in the runner’s environment, and the reports are waiting in the morning.
claude -p "Run the weekly P&L for last week" \
--allowedTools "mcp__datadoe__*" "Write" \
--disallowedTools "mcp__datadoe__actions_start"A bare tool name in --disallowedTools takes the tool away entirely. An unattended run can read every report and change nothing on Amazon; the changes it suggests wait for a person.
One DataDoe account serves every AI tool you use. Add it wherever the work happens, and the data, the Actions and the log stay the same.
Would you rather just ask? Claude in the browser, on your desktop or on your phone uses this same account, added once as a connector.
DataDoe for ClaudeAnother terminal agentOpenAI’s coding agent takes the same MCP endpoint, from its CLI, its IDE extension or the cloud.
DataDoe for CodexInside the editorRather work in an IDE than a terminal? Cursor’s agent reads the same Amazon schema while it writes code.
DataDoe for CursorRun claude mcp add --transport http datadoe https://mcp.datadoe.com/mcp/v1, start Claude Code, type /mcp, pick datadoe and choose Authenticate. Your browser opens, you sign in to DataDoe, and the Amazon tools are available in that project. Add --scope user to have them in every project.
Not for personal use: OAuth sign-in is enough, and if you already added DataDoe as a connector on claude.ai, Claude Code signed in to the same account loads it automatically. A DataDoe MCP key, sent in the datadoe-mcp-key header, is for shared repos, CI and headless runs where nobody is there to sign in.
Yes, but nothing is writable on day one. In DataDoe you enable the kinds of change you want, one by one; pricing is enabled separately from other listing edits. Claude Code then prompts you before it calls the write tool, unless you allowlist it, a dry run can preview any change, and DataDoe logs each one it runs.
Leave the write tool out. Pass --disallowedTools "mcp__datadoe__actions_start" to claude -p, or put the same name under deny in the project's settings.json. Claude Code then has no way to call it, so a scheduled job can read and report but never change anything.
The data and the Actions are the same. Claude Code adds what a terminal is good at: it writes files and code, keeps house rules in CLAUDE.md, runs skills and subagents, lets hooks police tool calls and runs on a schedule with claude -p. The Claude app is better for asking questions in conversation.
Both, plus Amazon Ads. DataDoe keeps all three in 100+ tables that share SKU and ASIN keys, with your product costs next to them, so one Claude Code script can put a vendor PO, the matching 3P offer and last month's ad spend in the same row.
No, it is a separate subscription. Claude Code comes with a paid Claude plan or an Anthropic API key. DataDoe is $97 a month once the 14-day free trial ends, and that one price covers every Seller, Vendor and Ads account you link.
We'll connect a demo account, add DataDoe to Claude Code with you and build your first skill on real Amazon data.
Book a demoConnect Seller Central, Vendor Central and Amazon Ads once, then let Claude Code build on fresh numbers — with your rules deciding what reaches Amazon.
We use cookies to improve your experience and analyze traffic. By clicking "Accept", you agree to our use of cookies. Read the Cookie Policy.