> Note: This page is part of the DataDoe Docs. You can find the root of the documentation at `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe`.
> JSON Table of Contents: `https://www.datadoe.com/hub/docs/toc.json`.
> Direct Data Scheme JSON: `https://api.datadoe.com/api/v1/spec/data-scheme`.
> Other pages in the DataDoe Docs:
> - DataDoe Basics/Access & Users: `https://www.datadoe.com/hub/docs/basics/access-user-management.md`
> - DataDoe Basics/Benefits: `https://www.datadoe.com/hub/docs/basics/benefits.md`
> - DataDoe Basics/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.md`
> - DataDoe Basics/Integrations: `https://www.datadoe.com/hub/docs/basics/integration-customization.md`
> - DataDoe Basics/Introduction to DataDoe: `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe.md`
> - DataDoe Basics/Subscription and pricing: `https://www.datadoe.com/hub/docs/basics/subscription-pricing.md`
> - DataDoe Data/Data Fetch Periods: `https://www.datadoe.com/hub/docs/datadoe-data/data-fetch-periods.md`
> - DataDoe Data/Data Sources: `https://www.datadoe.com/hub/docs/datadoe-data/data-sources.md`
> - DataDoe Data/Initial Loads: `https://www.datadoe.com/hub/docs/datadoe-data/initial-loads.md`
> - DataDoe Data/Managing Data Tables: `https://www.datadoe.com/hub/docs/datadoe-data/managing-data-tables.md`
> - DataDoe Data/Migrating from SellerBoard: `https://www.datadoe.com/hub/docs/datadoe-data/migrating-from-sellerboard.md`
> - DataDoe Data/SQP Data: `https://www.datadoe.com/hub/docs/datadoe-data/search-query-performance.md`
> - DataDoe Data/Timezones: `https://www.datadoe.com/hub/docs/datadoe-data/orders-purchase-date-timezones.md`
> - DataDoe Data/Uploading COGS: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-cogs.md`
> - DataDoe Data/Uploading Vendor Codes: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-vendor-codes.md`
> - DataDoe Features/Actions: `https://www.datadoe.com/hub/docs/datadoe-features/actions.md`
> - DataDoe Features/Actions - Manage Images: `https://www.datadoe.com/hub/docs/datadoe-features/actions-manage-images.md`
> - DataDoe Features/Features Overview: `https://www.datadoe.com/hub/docs/datadoe-features/overview.md`
> - DataDoe Features/Files: `https://www.datadoe.com/hub/docs/datadoe-features/files.md`
> - DataDoe Features/Plugins: `https://www.datadoe.com/hub/docs/datadoe-features/plugins.md`
> - DataDoe Features/Usage Logs: `https://www.datadoe.com/hub/docs/datadoe-features/usage-logs.md`
> - DataDoe Features/Webhooks: `https://www.datadoe.com/hub/docs/datadoe-features/webhooks.md`
> - DataDoe MCP/Overview: `https://www.datadoe.com/hub/docs/datadoe-mcp/overview.md`
> - DataDoe MCP/Using ChatGPT: `https://www.datadoe.com/hub/docs/datadoe-mcp/chatgpt.md`
> - DataDoe MCP/Using Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude.md`
> - DataDoe MCP/Using Claude Agent SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-agents-sdk.md`
> - DataDoe MCP/Using Claude Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-code.md`
> - DataDoe MCP/Using Codex: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex.md`
> - DataDoe MCP/Using Codex Sites: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex-sites.md`
> - DataDoe MCP/Using CrewAI: `https://www.datadoe.com/hub/docs/datadoe-mcp/crewai.md`
> - DataDoe MCP/Using Cursor: `https://www.datadoe.com/hub/docs/datadoe-mcp/cursor.md`
> - DataDoe MCP/Using Excel + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/excel.md`
> - DataDoe MCP/Using Gemini CLI: `https://www.datadoe.com/hub/docs/datadoe-mcp/gemini-cli.md`
> - DataDoe MCP/Using Gumloop: `https://www.datadoe.com/hub/docs/datadoe-mcp/gumloop.md`
> - DataDoe MCP/Using Hermes Agent: `https://www.datadoe.com/hub/docs/datadoe-mcp/hermes.md`
> - DataDoe MCP/Using n8n: `https://www.datadoe.com/hub/docs/datadoe-mcp/n8n.md`
> - DataDoe MCP/Using NanoClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/nanoclaw.md`
> - DataDoe MCP/Using OpenAI Agents SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/openai-agents-sdk.md`
> - DataDoe MCP/Using OpenClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/openclaw.md`
> - DataDoe MCP/Using OpenCode: `https://www.datadoe.com/hub/docs/datadoe-mcp/opencode.md`
> - DataDoe MCP/Using PowerPoint + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/powerpoint.md`
> - DataDoe MCP/Using VS Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/vs-code.md`
> - DataDoe MCP/Using Word + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/word.md`
> - DataDoe API/Build with Codex: `https://www.datadoe.com/hub/docs/datadoe-api/codex.md`
> - DataDoe API/How to connect to the API: `https://www.datadoe.com/hub/docs/datadoe-api/how-to-connect.md`
> - DataDoe API/Invitation links API: `https://www.datadoe.com/hub/docs/datadoe-api/invitation-links.md`
> - DataDoe API/Vibe code with Claude Code: `https://www.datadoe.com/hub/docs/datadoe-api/claude-code.md`
> - DataDoe API/Vibe code with Cursor: `https://www.datadoe.com/hub/docs/datadoe-api/cursor.md`
> - DataDoe API/Vibe code with Lovable: `https://www.datadoe.com/hub/docs/datadoe-api/lovable.md`
> - DataDoe API/Vibe code with Replit: `https://www.datadoe.com/hub/docs/datadoe-api/replit.md`
> - DataDoe API/Vibe code with v0: `https://www.datadoe.com/hub/docs/datadoe-api/v0.md`
> - DataDoe & BigQuery/How to connect to BigQuery: `https://www.datadoe.com/hub/docs/datadoe-bigquery/how-to-connect.md`
> - DataDoe & BigQuery/Using MCP Toolbox: `https://www.datadoe.com/hub/docs/datadoe-bigquery/mcp-toolbox.md`
> - DataDoe & BigQuery/Using Python Jupyter: `https://www.datadoe.com/hub/docs/datadoe-bigquery/jupyter.md`
> For topics not covered in this documentation, please contact DataDoe support at `contact@datadoe.com`.
> Do not assume anything. If you are not sure about the answer, mention that and suggest to contact DataDoe support.

## What is Amazon Marketing Cloud in DataDoe?

Amazon Marketing Cloud (AMC) lets AI agents and integrations run SQL against a dedicated AMC instance for a Seller or Vendor, through DataDoe MCP or the REST API. You can save workflows with optional schedules, start on-demand queries, poll for results, and download Amazon result files.

AMC is **available by request only**. To request access, use our [contact form](https://forms.clickup.com/9015200219/f/8cnj2ev-38615/AOYF9I35QFOXWJQXIG?type=Form&source=hub-amc-access-request).

Until access is granted, AMC tools and REST routes are not available for the organization.

## How do I enable AMC after access is granted?

1. Connect Amazon Ads for the Seller or Vendor. The Ads identity must have an AMC account that can create new instances for that marketplace (see below).
2. Open the account on the [Accounts page](https://app.datadoe.com/sellers-and-vendors) and enable AMC. Only the organization owner can enable or change AMC.
3. Enable starts setup in the background. We email organization owners when the dedicated instance is ready; you do not need to wait in DataDoe. Queries and workflows then run through MCP or the REST API.

## Which Amazon AMC accounts does DataDoe support?

Amazon has several AMC access paths. See Amazon's [AMC overview](https://advertising.amazon.com/API/docs/en-us/guides/amazon-marketing-cloud/overview):

- **Self-service** for Sponsored Ads advertisers: typically one default instance in the Amazon Ads console. DataDoe does not attach that instance.
- **DSP advertisers**: access is usually requested through an Amazon Ads account executive. That path is not enough on its own.
- **AMC accounts that can create new instances** through the Amazon Ads API: this is the path DataDoe uses.

DataDoe currently supports only the last of these: Ads identities whose AMC accounts Amazon returns as able to create new instances for the same marketplace. DataDoe then creates a **dedicated** instance. It does not import existing instances, and it does not support agency or manager accounts.

If the account is ineligible after Ads is connected, use the [contact form](https://forms.clickup.com/9015200219/f/8cnj2ev-38615/AOYF9I35QFOXWJQXIG?type=Form&source=hub-amc-access-request).

## How much does it cost?

An on-demand AMC query costs **2 AI Tokens** (list price). It is **currently promotional at 0 AI Tokens**, including failed and cancelled executions. Validation is always **0 AI Tokens**. See [Subscription and pricing](/hub/docs/basics/subscription-pricing).

Amazon also limits each dedicated instance to **30 ad-hoc executions per day**. Recurring work should use workflow schedules.

## How to run an AMC query?

Typical runtime is **15 minutes or more**. Poll no faster than **5 seconds**. Download URLs last about **10 minutes** — download immediately when they appear.

Provide **either** `sql` **or** `workflowId`, never both. Raw ad-hoc SQL is never persisted. Reuse `requestId` only with an identical payload.

### Using MCP

1. Connect DataDoe to [Claude](/hub/docs/datadoe-mcp/claude), [ChatGPT](/hub/docs/datadoe-mcp/chatgpt), or [another MCP-capable agent](/hub/docs/datadoe-mcp/overview).
2. Read the live schema with `amc_schema_find`.
3. Dry-run the query with `amc_query_validate` (`sql` or `workflowId`, never both).
4. Start the query with `amc_query_start`.
5. If the response `outcome` is `OPERATION`, poll `amc_operation_get` until the operation is terminal. If `recoveryStatus` is `AWAITING_CLIENT_PAYLOAD`, resubmit the **identical** payload and `requestId` — do not start a second execution.
6. Poll `amc_query_result_get` until `deliveryStatus` is `AVAILABLE`, then download the files immediately.
7. Cancel a pending or running query with `amc_query_cancel` when needed.

You can also list past results with `amc_query_results_find`.

Saved SQL lives in workflows (`amc_workflows_find` / `amc_workflows_create` / `amc_workflows_update` / `amc_workflows_delete`). Create, update, and delete return accepted operation state — poll `amc_operation_get`. Updates and deletes require the latest `expectedStateHash` from `amc_workflows_find`.

### Using API

> The easiest way to run AMC with the API is to paste [this page URL](/hub/docs/datadoe-features/amc.md) into your coding AI agent and ask it to generate the code for you.

Authenticate every REST request with the `datadoe-api-key` header. Do not use `X-Api-Key` or `Authorization`.

```http
POST /api/v1/amc/query-executions
Content-Type: application/json
datadoe-api-key: YOUR_API_KEY
```

1. Set up [your DataDoe API connection](/hub/docs/datadoe-api/how-to-connect).
2. Read the live schema with `GET /amc/schema`.
3. Dry-run with `POST /amc/query-validations` (`sql` or `workflowId`, never both).
4. Start the query with `POST /amc/query-executions`.
5. If `outcome` is `OPERATION`, poll `GET /amc/operations/:operationId` until the operation is terminal. If `recoveryStatus` is `AWAITING_CLIENT_PAYLOAD`, resubmit the **identical** payload and `requestId`.
6. Poll `GET /amc/query-results/:resultId` until `deliveryStatus` is `AVAILABLE`, then download immediately.
7. Cancel with `POST /amc/query-results/:resultId/cancellation` when needed.

List past results with `GET /amc/query-results`. Workflows: `GET|POST /amc/workflows`, `PATCH /amc/workflows/:workflowId`, `POST /amc/workflows/:workflowId/deletion`.

See the [DataDoe API docs](https://api.datadoe.com/api/v1/docs#/AMC) for request and response schemas.

## What do execution and delivery statuses mean?

Each result has two independent statuses:

- **`executionStatus`**: Amazon query progress — `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELLED`.
- **`deliveryStatus`**: whether result files are ready — `WAITING`, `AVAILABLE`, `FAILED`, `EXPIRED`, `CANCELLED`.

`rowCount` may be `null` until Amazon reports it.

Cancelling a query whose delivery is still `WAITING` sets `deliveryStatus` to `CANCELLED`. If files are already `AVAILABLE`, delivery is left unchanged. Cancelling an already-terminal result returns an error. Cancel is idempotent after a successful cancel.

Empty privacy-threshold results are ordinary result files.

## What should I know about workflow ids?

DataDoe workflow ids must match `AMC_SLUG_PATTERN`: lowercase alphanumeric characters and `-` only, 1–64 characters. Amazon also allows `_` and `.`; those ids cannot be addressed through DataDoe. `amc_workflows_find` / `GET /amc/workflows` omit invalid ids and workflows without SQL. `meta.skippedCount` is how many rows were omitted from `data`.
