Safety model
How to let an AI agent operate ad accounts without giving it unchecked control
Published and last reviewed: July 10, 2026 · AdsCove Product & Engineering
Direct answer
Do not give the model a single unrestricted “make changes” function. Separate read tools from write tools, make the first write call return a reviewable plan, require explicit consent tied to that exact execution, and keep activation separate from campaign creation.
The six-step control loop
- Authenticate the user, not the model. Platform OAuth tokens stay on the server. AI clients receive only AdsCove authorization; API keys can be deleted in the console, while self-serve MCP OAuth token revocation is still being built.
- Read before proposing. The agent first reads connection health, performance, targeting, or assets required to describe a specific change.
- Dry-run the write. Write tools default to returning the proposed resource or change without mutating the platform.
- Bind consent to one execution. A real request enters
pending_approvaland returns anexecution_id. The agent must read the change back and wait for explicit consent. - Approve server-side. Only
approve_actionwith the pending execution can perform the write. Approval expires after 72 hours. - Record the outcome. Inputs, outputs, risk level, duration, approval decision, and before/after state remain in the Activity log.
Additional guardrails used by AdsCove
- Meta and Google creation tools create PAUSED resources; activation is a separate approved write.
- Idempotency keys stop a network retry from creating the same campaign twice.
- Counterfeit terms and landing pages outside connected or registered domains are blocked before approval.
- Deletion tools are not exposed.
- API keys are rate-limited to reduce runaway loops.
- Unavailable executors return
capability_not_implementedinstead of sample success.
What this model does not guarantee
Approval gates reduce accidental or manipulated writes; they do not make an advertising decision profitable, guarantee platform acceptance, or replace account-side stop-loss rules. AdsCove is in beta and does not provide an uptime SLA. Keep native Meta and Google safeguards active and review the exact targeting, budget, creative, landing page, and status before approving.
A safe prompt pattern
Read the last 7 days of performance and identify one justified change. Do not mutate anything yet. Show the evidence, proposed object, budget, status, and landing page. Dry run first. If a write is needed, return the pending execution and wait for my explicit approval.