DataDoe + OpenAI Codex

Add an MCP server to Codex. Start with your Amazon data.

One table in ~/.codex/config.toml plugs any MCP server into the Codex CLI, the IDE extension and the ChatGPT desktop app. Point it at DataDoe and Codex builds on fresh Seller Central, Vendor Central and Amazon Ads data, and changes listings only once you switch writes on.

  • CLI, IDE and desktop appCLI + IDE
  • Writes off by defaultOff until enabled
  • 14-day free trial14 days free
• Setup, line by line

How to add an MCP server to Codex

Codex keeps its MCP servers in ~/.codex/config.toml. Add one [mcp_servers.<name>] table with the server’s URL, plus a header if the server wants a key, then restart Codex. Four lines are the whole DataDoe entry; the second version keeps the key out of the file and adds two settings worth knowing. Pick a key to see its line.

[mcp_servers.datadoe]
The name is yours to pick. It is what /mcp and codex mcp list show, and how Codex labels each DataDoe call.
url
The DataDoe endpoint. A url tells Codex this is a remote server over streamable HTTP, so nothing runs on your machine.
http_headers / env_http_headers
DataDoe checks a datadoe-mcp-key header. Paste the key in the file, or name an environment variable with env_http_headers so the file holds no secret. Create and revoke keys in DataDoe under Integrations → MCP.
startup_timeout_sec
Codex waits 10 seconds for a server by default. DataDoe’s docs use 30, which leaves room for the first handshake.
tool_timeout_sec
The default per call is 60 seconds. Raise it if long queries over years of orders time out mid-job.
default_tools_approval_mode
Set to prompt, Codex stops and asks before it runs any DataDoe tool. Useful while you are still deciding which Action types to switch on.
~/.codex/config.toml
[mcp_servers.datadoe]url = "https://mcp.datadoe.com/mcp/v1"http_headers = { "datadoe-mcp-key" = "YOUR_DATADOE_MCP_KEY" }startup_timeout_sec = 30

With the env version, run export DATADOE_MCP_KEY=… in the shell that starts Codex. A project’s own .codex/config.toml is merged too, but only in folders you have marked as trusted, so keep a personal key in the home-level file.

  • A local server insteadSwap url for command and args, or run codex mcp add <name> -- <command>.
  • A server that signs inAdd it with --url, then run codex mcp login <name> to finish OAuth in the browser.
• Where it works

One file, three Codex surfaces. Cloud tasks are the exception.

The CLI, the IDE extension and the ChatGPT desktop app read the same config.toml, so you set DataDoe up once. Cloud tasks run on OpenAI’s machines and never see that file.

Which Codex surfaces read config.toml and how each reaches DataDoe
SurfaceReads config.tomlHow DataDoe gets inAmazon data
Codex CLITerminalYesEdit the file, or start with codex mcp add datadoe --url https://mcp.datadoe.com/mcp/v1 and add the header line by handYes, in every session
Codex IDE extensionVS Code and editors built on itYes, the same fileGear menu → MCP servers, or nothing at all if the CLI already has itYes, next to your open repo
ChatGPT desktop appCodex inside the appYes, the same fileNothing extra once the file has the entryYes
Codex cloud tasksRun in OpenAI’s sandboxNoOpenAI does not document MCP servers for cloud tasks yetNot directly. Run data jobs locally, send code-only work to the cloud
ChatGPT on the webChat, not CodexNoThrough the DataDoe app instead, see DataDoe for ChatGPTYes, in chats

Based on OpenAI’s Codex MCP documentation, October 2026.

• Before you build

Three checks that the connection works.

Thirty seconds now saves you from a long Codex run that quietly fell back to guessing. The same three checks work for any MCP server you add.

  1. Check 1

    Is the server loaded?

    codex mcp list

    DataDoe should be on the list under the name you gave the table.

  2. Check 2

    Can Codex see its tools?

    /mcp

    Type it inside a running Codex session. It lists every connected server and the tools each one offers.

  3. Check 3

    Does real data come back?

    Show me my Amazon Seller Central sales for the last 7 days.

    Real numbers mean you are connected. Codex will ask before the call if you set approvals to prompt.

If one of them fails

The five problems we see most when people connect Codex to DataDoe, and the fix for each.

DataDoe is missing from the list
The entry is in the wrong file. Codex reads ~/.codex/config.toml; a project file only counts in a trusted folder. Restart Codex after any edit.
The server times out on start
Raise startup_timeout_sec. DataDoe’s docs use 30; the Codex default of 10 can be too short on a slow network.
Calls fail as unauthorized
The key is mistyped, revoked, or the env variable is empty in this shell. Create a fresh key under Integrations → MCP in DataDoe.
Tables come back thin or empty
The first load is still running. Recent data arrives first; about two years of order history can take two days or more to fill in.
A write is refused
That Action type is still off, or the Amazon account is read-only. Switch the type on in Settings → Actions and set the account to Read and write.
• Amazon jobs for Codex

Hand Codex the engineering work. Keep the decisions.

Codex is at its best on jobs that take an hour of reading, writing and testing. With DataDoe connected it works from your real schema and numbers instead of mocks. Three briefs to try, and what a run looks like.

The brief you give Codex

Build a nightly job that pulls yesterday’s orders, settlements, ad spend and refunds from DataDoe, applies our unit costs from costs.csv and writes margin per SKU and marketplace to Postgres. Add tests and a README.

Reads through DataDoe
SettlementsOrdersSponsored ProductsReturns
Changes on Amazon
Code in your repo only
How the run goes
  1. 0:00

    Plan. Five steps: schema, fee columns, cost join, job, tests.

  2. 0:40

    DataDoe returns the settlement, order and ad table schemas.

  3. 2:10

    DataDoe samples 30 days so Codex can see how fees are split.

  4. 5:30

    Writes the job, the SQL and a cost loader for costs.csv.

  5. 8:05

    Runs tests against the sample. 12 pass.

  6. 9:12

    You review the diff and merge.

Codex used MCP to learn your data while it wrote the code. The finished job calls the DataDoe REST API on its own schedule, so it keeps running after the session ends.

• Writes, with brakes

Codex can change listings. After three gates.

Reading is on from the start. Anything that would change your Amazon account has to get past three separate gates, and the last one is Codex. You can add a dry run before it.

  1. The Action type is off until you switch it on in DataDoe. Prices are a separate type from listing content.
  2. The Amazon account is read-only until you set it to Read and write on the Accounts page.
  3. An optional dry run checks the payload without sending it to Amazon. Ask Codex to run one first, as in the brief above.
  4. Codex asks you before the tool call when approvals are set to prompt. Every Action that goes through is logged.
• Not a Codex shop?

The same server works in other agents.

DataDoe is one MCP endpoint, so the key you made for Codex works anywhere that speaks MCP. These guides cover the setups closest to this one.

FAQ

Codex setup, question by question.

Open ~/.codex/config.toml and add a [mcp_servers.<name>] table. For a remote server, give it a url and any headers it needs; for a local one, give it a command and args. Restart Codex, then run codex mcp list to confirm it loaded. The CLI also has codex mcp add for the same job.

In the .codex folder in your home directory, so ~/.codex/config.toml on macOS and Linux. Codex also merges a .codex/config.toml inside a project, but only in folders you have marked as trusted. Keep personal keys in the home-level file.

Yes. The Codex CLI, the IDE extension and the ChatGPT desktop app share one config.toml, so a server added in one shows up in the others. In the IDE you can also add servers from the gear menu under MCP servers.

Not directly today. Cloud tasks run on OpenAI's machines and do not read your local config.toml, and OpenAI does not document MCP servers for them yet. Run jobs that need Amazon data from the CLI, the IDE extension or the desktop app.

Use env_http_headers instead of http_headers: map the datadoe-mcp-key header to the name of an environment variable, such as DATADOE_MCP_KEY, and export the key in the shell that starts Codex. You can revoke a key in DataDoe at any time under Integrations, MCP.

Only through DataDoe Actions, and only after you allow it. Every Action type is off until you switch it on, prices are a separate type, and the Amazon account has to be set to read and write. You can ask for a dry run first, Codex can ask before each tool call, and every Action is logged.

Yes. Seller Central, Vendor Central and Amazon Ads sit in one DataDoe schema with 100+ tables, so Codex can join a vendor ASIN's purchase orders with its ad spend in the same job.

Separately. DataDoe costs $97 a month after a 14-day free trial, with unlimited Seller, Vendor and Ads connections. Codex is billed by OpenAI through your ChatGPT plan or API usage.

Building something bigger on Amazon data?

We'll walk through your repo and the jobs you want Codex to own, on a demo account with real Amazon data.

Book a demo
• Get started

Give Codex the real numbers.

Connect Amazon to DataDoe, paste four lines into config.toml, and every Codex job starts from fresh Seller, Vendor and Ads data — with writes off until you say so.

  • CLI, IDE and desktop app
  • Seller, Vendor and Ads
  • Dry-run any change first
  • $97/mo after 14 days free