---
title: 'Claude for Meta ads, with approvals | Plainrouter'
description: 'Connect Claude Code to Meta ads with a workspace key. Try synthetic reads, review account evidence and approve supported changes in Plainrouter.'
canonical: 'https://plainrouter.com/agents/claude/meta'
last_updated: '2026-10-08'
---

# Claude for Meta ads, with your approval.

Claude Code can review Meta ads and propose supported changes through Plainrouter. Sign up in Plainrouter, connect Meta and start with Read access.

[Start for free](/register) · [Try the sandbox](/docs/mcp/setup#start-in-test-mode)

## What can Claude Code do with Meta ads?

For a Claude ads workflow, ask Claude Code to read Meta account context, retained performance, the creative library and stored tracking-health checks before recommending a change. Check freshness and the reporting period; these stored reads are not a fresh Meta report.

Connect Claude Code’s terminal workflow to Plainrouter’s hosted MCP server with a workspace key. Start with Read access and switch to Write with Ask mode when you want to approve proposals individually.

With Write access, Claude Code can preview and propose supported pauses and resumes for campaigns, ad sets and ads, eligible daily-budget changes, and creative tests. Stage an image or duplicate a selected ad with an account-owned creative. New copies are created paused. [Supported agent workflows](/solutions/meta-ads-agent) explain the shared capabilities without requiring a different chatbot.

## How do I connect Claude Code to Meta ads?

Connect Claude Code to Plainrouter’s remote MCP server, starting with the account-free sandbox.

```sh
claude mcp add --transport http plainrouter-test https://plainrouter.com/mcp/sandbox
```

Open Claude Code in the project and run `/mcp` to inspect the connection. Ask for an account-state read and check the tool output for `sandbox: true`; seeing a server name alone does not verify a successful read.

For production, sign up in Plainrouter, connect Meta and create a Read workspace key. Make `PLAINROUTER_WORKSPACE_TOKEN` available in the environment that launches Claude Code, using your protected secret store. The key itself belongs neither in your prompt nor in source control. Add this project `.mcp.json` entry:

```json
{
  "mcpServers": {
    "plainrouter": {
      "type": "http",
      "url": "https://plainrouter.com/mcp",
      "headers": {
        "Authorization": "Bearer ${PLAINROUTER_WORKSPACE_TOKEN}"
      }
    }
  }
}
```

Use `/mcp`, then verify the workspace in a read. A key covers one workspace and cannot switch workspaces. Name the intended ad account when several are available. The [Claude Code connection guide](/docs/mcp/setup#start-in-test-mode) covers scope, credentials and the full first read. These steps cover Claude Code only.

## How do approvals work in Claude Code?

Claude Code’s permission to call a tool is separate from Plainrouter’s permission to execute an ad change. If you allow a tool call in Claude Code, you have not approved the resulting Plainrouter proposal.

Start with Read, which cannot preview or propose Actions. When ready, connect a Write key and choose Ask mode in Plainrouter. Have Claude Code preview the selected change first, then inspect the proposal result it returns. In Ask mode, a person reviews the specific change in Plainrouter’s Inbox; a terminal reply saying “proposed” is not proof it ran.

Full mode queues policy-allowed changes automatically, so a sentence in your Claude prompt asking it to wait does not replace Ask mode. Rule violations are blocked in either mode. Use Plainrouter’s kill switch to stop further changes, including queued work, and revoke a workspace key when the connection is no longer needed. Check execution and verification separately in the decision receipt.

## What can’t Claude Code do through this connection?

This integration gives Claude Code a focused set of Meta tasks, not unrestricted [Marketing API access](/library/meta-ads-api). It does not create audiences or change lifetime budgets, and neither a successful tool call nor a persuasive explanation guarantees better ad results.

The `.mcp.json` configuration also does not grant every teammate your account access: the environment variable must exist in the process that launches their Claude Code session. If authentication fails, check that environment and key scope before rewriting the prompt. Never paste the missing key into the conversation as a workaround.

## Worked example: a terminal review without writes

Claude Code can review synthetic account state and signal health without writes. After connecting `plainrouter-test`, ask:

> Use only the Plainrouter test server. Read account state and signal health. Tell me which account this is and whether the results are real. Do not propose changes.

The synthetic responses show `sandbox: true`, account `act_SANDBOX`, signal-health `status: "healthy"` and workspace `Sandbox Workspace`.

The fictional signal-health summary says “Sandbox Signal is receiving events and delivering to the destination.”

Claude Code can explain those two tool results in the terminal, but its prose may vary. Inspect the fields yourself and ask it to identify missing evidence rather than invent spend recommendations. The sandbox has four tools and no proposals, approvals or execution, so there is no pending budget change to approve in this example.

## How does this differ from Meta’s official Ads MCP?

Plainrouter is an independent hosted server, not Meta’s own connector. If you need Meta’s own tools, consider its official server; choose Plainrouter when you want its approval workflow and independent conversion checks.

See [Meta Ads MCP servers compared](/library/meta-ads-mcp-options).

## Frequently asked questions

### Does this work in Claude or only Claude Code?

This page verifies the documented Claude Code workflow. The [client index](/docs/mcp/clients) points Claude users to those terminal instructions; do not assume the same configuration works in the Claude app.

### Can Claude manage ads?

Yes, Claude Code can review Meta ads and propose supported changes through Plainrouter. For this Claude ads workflow, sign up in Plainrouter first, connect Meta and start with a Read key, which cannot preview or propose Actions; the optional ingestion diagnostic is a separate test-event operation. Switch to Write and Ask mode when you want proposals that you approve individually.

### Is Claude good for creating ads?

Claude Code can help review evidence and prepare supported creative tests through Plainrouter, including staging an image or duplicating a selected ad with an account-owned creative. That does not establish creative quality or guarantee better performance; new copies are created paused, and Ask mode lets you review the proposed change.

### Can I share the project configuration?

You can keep the environment-variable reference in configuration. Keep the actual workspace key outside the repository and outside Claude prompts; issue and revoke access deliberately.

### Are MCP calls billed separately?

Plainrouter includes MCP on every plan and does not meter MCP calls. Claude’s own charges are separate; check [current Plainrouter pricing](/pricing).

## Related guides

- [What your Meta ads agent can do](</solutions/meta-ads-agent>)
- [Hosted Meta Ads MCP overview](</solutions/meta-ads-mcp>)
- [AI agent safety checklist](</library/ai-agent-meta-ads-safety>)
- [Agents hub](</agents>)
- [ChatGPT for Meta ads](</agents/chatgpt/meta>)
- [Codex for Meta ads](</agents/codex/meta>)
- [Claude Code MCP reference](<https://code.claude.com/docs/en/mcp>)
