confirm argument, and the WritePreview dry-run
shape. For the plain-language safety model, see
Handlinger & guardrails.
Each connector is its own named MCP at
https://mcp.consile.ai/<id>/mcp with
only its own tools. Tool calls go to the connector endpoint: the aggregate
https://mcp.consile.ai/mcp is the Consile Concierge (management tools only),
not where ad tools are called. The transport namespaces every tool as
<id>__<tool> (e.g. meta-ads__create_campaign,
linkedin-ads__update_status). The AI invokes these names on your behalf.Which connectors have write tools
| Connector | Endpoint | Capability | Write tools |
|---|---|---|---|
| Google Search Console | mcp.consile.ai/gsc/mcp | read-only | 0 |
| Uniconta | mcp.consile.ai/uniconta/mcp | read-only | 0 |
| e-conomic | mcp.consile.ai/economic/mcp | read-only | 0 |
| Meta Ads | mcp.consile.ai/meta-ads/mcp | read + guardrailed write | 5 of 39 |
| LinkedIn Ads | mcp.consile.ai/linkedin-ads/mcp | read + guardrailed write | 19 of 64 |
The three guardrail rules
Every write tool on Meta Ads and LinkedIn Ads obeys the same three rules:- New objects are created paused. A new campaign, ad set / ad group, or ad is created PAUSED (Meta Ads) / DRAFT (LinkedIn Ads). It is never live and spends nothing until you explicitly activate it.
- Money / destructive / public actions require
confirm: true. Anything that spends money (setting status toACTIVE), changes a budget or bid, archives or deletes an object, or publishes public content requires an explicitconfirm: trueargument. - Without
confirm, you get a dry-run. A guarded tool called withoutconfirm: truereturns aWritePreviewobject describing exactly what would happen and calls no upstream API. Nothing changes until you re-issue the call withconfirm: true.
Default status: PAUSED / DRAFT
Creating an object never makes it live:- Meta Ads:
create_campaign,create_ad_setandcreate_adcreate the object with status PAUSED. It exists, but does not deliver and spends nothing. - LinkedIn Ads: the create tools produce the object in DRAFT status. It is not running.
update_status (Meta) / the equivalent
LinkedIn status tool with the target status and confirm: true, because
going live spends money (rule 2).
The confirm argument
Guarded tools accept a boolean confirm argument.
Set
true to actually execute the mutation upstream. When omitted or false,
the tool performs no upstream call and returns a WritePreview dry-run
instead.confirm: true to execute) when it would:
- spend money: set an object’s status to
ACTIVE(go live); - change a budget or bid: e.g.
update_budgeton Meta Ads; - archive or delete an object;
- publish public content (LinkedIn organic-social posts).
The WritePreview dry-run shape
When a guarded tool is called withoutconfirm: true, it returns a structured
preview of the intended change and makes no upstream request. The exact field set
varies by tool, but the shape is consistent:
WritePreview (dry-run, no confirm)
true whenever this is a dry-run: no upstream API was called.The write tool that produced the preview (e.g.
update_status, update_budget).The intended mutation: object type, id, and the
from / to field deltas that
would be written if confirmed.true for money / destructive / public actions; re-issue with confirm: true
to apply.confirm: true:
Confirmed write (executes upstream)
The AI runs these calls for you. It is expected to show you the
WritePreview
and get your go-ahead before re-issuing with confirm: true. Treat the
preview as the moment to review before any spend.Meta Ads write tools
Meta Ads exposes 5 write tools (of 39 total):| Tool | Guarded? | Notes |
|---|---|---|
create_campaign | create → PAUSED | New campaign, never live until activated. |
create_ad_set | create → PAUSED | |
create_ad | create → PAUSED | |
update_status | confirm | Going ACTIVE spends money; archiving is destructive. |
update_budget | confirm | Budget change spends money differently. |
LinkedIn Ads write tools
LinkedIn Ads exposes 19 write tools (of 64 total): 11 ad-management tools plus 8 organic-social tools.- Ad-management writes follow the standard model: new objects are created in
DRAFT; activation, budget/bid changes, and archive/delete require
confirm: true, otherwise aWritePreviewis returned. - Organic-social writes publish public content, so they are confirm-gated by the same rules.
Why read-only connectors are different
To restate the boundary precisely: Google Search Console, Uniconta and e-conomic ship no write tools at all. Their safety is structural, not behavioural: there is no mutating handler to gate. For example, the Uniconta balance tooluniconta__get_account_balance only reads a balance; there is no
Uniconta tool that posts an entry or edits a record.
The guardrail machinery on this page exists specifically because Meta Ads and
LinkedIn Ads can write. For the full plain-language model, see
Handlinger & guardrails.
A failed or rejected upstream write surfaces as a normal tool error (e.g. a
400/403 from the provider, or LinkedIn’s 403 for un-approved
organic-social tools). See Errors & limits.