Does Codex need a client ID?+
Yes. Production connections use a pre-registered OAuth client: pass it with --oauth-client-id, and have the callback URL that codex mcp add prints registered before you sign in.
How do I make it read-only?+
Add http_headers = { "Mcp-Requested-Access" = "read" } to the [mcp_servers.control-mcp] entry in ~/.codex/config.toml, reconnect and refresh the tool list. A read-only session receives no write tools.
Why does sign-in fail with an authorized-party error?+
Codex tried to sign in without the registered client. Add the client ID from Data outputs, then MCP Server, to the connection and sign in again. If that page shows no client ID, registering one is part of setup: ask us.
Can I script imports?+
Yes: prepare_file_upload, then validate_bulk_file_import, then submit_bulk_file_import after you confirm the validation result. The file goes straight to api.control.dev, and a locked budget refuses the import.
What does the server return?+
JSON. Statements come by layout with every subtotal and formula row, and transaction browsing pages with limit up to 5000 and offset. The tool list (tools/list) is the source of truth for what your session can call; the tool catalog lists them by group.
Where is the data processed?+
OpenAI processes what Codex reads under your agreement with OpenAI, and Control’s own AI processes data in the EU (security at Control.dev).
What does it cost?+
There is no separate MCP fee: MCP access, budgets and forecasts come with every plan. The pricing page lists the self-serve plans, a group with more than the five ledgers the Enterprise plan includes gets a quote, and the 30-day trial needs no card.