Every tool of the Media Ops MCP server: permission, type, inputs and REST equivalent.
Every tool the Media Ops MCP server exposes, generated from the server's own tool catalog. Server: https://media.ops.infotrafego.com.br/api/mcp (Streamable HTTP, OAuth 2.1 or API key). To connect a client, see Connect via MCP.
- Tool names are Portuguese identifiers; they are stable and are what your client calls.
- A client only sees the tools its permissions allow (scope and role).
- Results and error messages (
user_message) are in Brazilian Portuguese. - Each tool runs the same server-side service as its REST equivalent, linked below, where the full request schema lives.
Summary
| Tool | What it does | Permission | Type |
|---|---|---|---|
quem_sou_eu | Who am I | Any authenticated user | Read-only |
listar_clientes | List clients | clients:read | Read-only |
listar_bms | List a client's Business Managers and assets | clients:read | Read-only |
cadastrar_cliente | Register client and Business Manager | clients:write | Writes |
sincronizar_ativos_bm | Sync Business Manager assets | clients:write | Writes |
ativar_desativar_conta | Enable/disable ad account | clients:write | Writes |
arquivar_cliente | Archive client (offboarding) | clients:write (administrators only) | Destructive |
listar_saldos | Ad account balances | balances:read | Read-only |
atualizar_saldos | Refresh balances | balances:write | Writes |
buscar_publicos | Search audiences, interests and locations | meta:read | Read-only |
buscar_formularios | Search lead forms | meta:read | Read-only |
buscar_publicacoes | Search Instagram posts | meta:read | Read-only |
buscar_campanhas | Search existing campaigns | meta:read | Read-only |
buscar_conjuntos | Search ad sets | meta:read | Read-only |
escanear_pasta_drive | Scan a Google Drive folder | meta:read | Read-only |
validar_campanha | Validate campaign (dry run) | campaigns:write | Read-only |
criar_campanha | Create campaign | campaigns:write | Writes |
status_execucao | Execution status | campaigns:read | Read-only |
detalhar_execucao | Execution details | campaigns:read | Read-only |
listar_execucoes | List executions | campaigns:read | Read-only |
logs_execucao | Execution logs | campaigns:read | Read-only |
reexecutar_execucao | Retry execution | campaigns:write | Writes |
reexecutar_log | Retry a single call | campaigns:write | Writes |
criar_publicos_engajamento | Create engagement audiences | audiences:write | Writes |
status_publicos | Audience creation status | audiences:read | Read-only |
listar_execucoes_publicos | List audience creation runs | audiences:read | Read-only |
listar_modelos_segmentacao | List targeting templates | templates:read | Read-only |
criar_modelo_segmentacao | Create targeting template | templates:write | Writes |
renomear_modelo_segmentacao | Rename targeting template | templates:write | Writes |
remover_modelo_segmentacao | Delete targeting template | templates:write | Destructive |
listar_notificacoes | Notifications | Any authenticated user | Read-only |
listar_usuarios | List users | admin:users (administrators only) | Read-only |
criar_usuario | Create user | admin:users (administrators only) | Writes |
atualizar_usuario | Update user | admin:users (administrators only) | Writes |
remover_usuario | Delete user | admin:users (administrators only) | Destructive |
quem_sou_eu
quem_sou_euWho am I. Shows the authenticated user, role (admin/member), channel (OAuth or API key) and available permissions.
- Permission: Any authenticated user
- Type: Read-only
- REST equivalent:
GET /me
No input.
listar_clientes
listar_clientesList clients. Lists the active clients (id and name). First step to pick client → Business Manager → ad account.
- Permission:
clients:read— Read clients, Business Managers, ad accounts and assets - Type: Read-only
- REST equivalent:
GET /clients
No input.
listar_bms
listar_bmsList a client's Business Managers and assets. Lists a client's Business Managers with their synced assets (usable ad accounts, pages, Instagram, pixels, WhatsApp). Each Business Manager's id is the business_manager_id used in selection by the other tools.
- Permission:
clients:read— Read clients, Business Managers, ad accounts and assets - Type: Read-only
- REST equivalent:
GET /clients/{id}/businesses
| Input | Type | Required | Description |
|---|---|---|---|
client | string | yes | Client ID (UUID) or exact name |
cadastrar_cliente
cadastrar_clienteRegister client and Business Manager. Registers (or updates) a client, its Business Manager and the Business Manager's Meta token. Then run sincronizar_ativos_bm.
- Permission:
clients:write— Register clients and Business Managers, sync assets, enable/disable ad accounts and archive clients (archiving requires an administrator) - Type: Writes (creates or changes data)
- REST equivalent:
POST /clients
| Input | Type | Required |
|---|---|---|
client | string | yes |
business_id | string | yes |
business_name | string | no |
meta_access_token | string | yes |
sincronizar_ativos_bm
sincronizar_ativos_bmSync Business Manager assets. Re-reads the Business Manager's ad accounts, pages, Instagram accounts, pixels and WhatsApp numbers from Meta.
- Permission:
clients:write— Register clients and Business Managers, sync assets, enable/disable ad accounts and archive clients (archiving requires an administrator) - Type: Writes (creates or changes data)
- REST equivalent:
POST /businesses/{id}/sync
| Input | Type | Required | Description |
|---|---|---|---|
id | string | yes | business_manager_id (the Business Manager's UUID in Media Ops) |
ativar_desativar_conta
ativar_desativar_contaEnable/disable ad account. Manually enables or disables an ad account of the Business Manager (a disabled account leaves balance monitoring and the pickers).
- Permission:
clients:write— Register clients and Business Managers, sync assets, enable/disable ad accounts and archive clients (archiving requires an administrator) - Type: Writes (creates or changes data)
- REST equivalent:
PATCH /businesses/{id}/ad-accounts
| Input | Type | Required | Description |
|---|---|---|---|
account_id | string | yes | |
active | boolean | yes | |
business_manager_id | string (uuid) | yes | The Business Manager's UUID |
arquivar_cliente
arquivar_clienteArchive client (offboarding). Archives the client: removes the Meta tokens and clears the Business Managers' assets. Administrators only.
- Permission:
clients:write(administrators only) — Register clients and Business Managers, sync assets, enable/disable ad accounts and archive clients (archiving requires an administrator) - Type: Destructive (the client asks for confirmation)
- REST equivalent:
POST /clients/{id}/archive
| Input | Type | Required | Description |
|---|---|---|---|
id | string | yes | Client ID (UUID) |
listar_saldos
listar_saldosAd account balances. Available balance, average daily spend and days left for the monitored ad accounts (prepaid/Pix accounts).
- Permission:
balances:read— Read ad account balances - Type: Read-only
- REST equivalent:
GET /account-balances
No input.
atualizar_saldos
atualizar_saldosRefresh balances. Queries Meta and refreshes the balances panel.
- Permission:
balances:write— Refresh ad account balances - Type: Writes (creates or changes data)
- REST equivalent:
POST /account-balances/refresh
| Input | Type | Required | Description |
|---|---|---|---|
force | boolean | no | Skip the cache and query everything again |
buscar_publicos
buscar_publicosSearch audiences, interests and locations. Queries Meta on the selected ad account. search_type: "audiences" (custom audiences — use only the ones with usable=true; paged: limit, default 50, and after = paging.after of the previous page; saved audiences only with include_saved=true), "interests" (query), "interest_suggestions" (interest_list: a list of names, e.g. ["Medical residency"]), "geo" (query + location_types; Meta may include subcities and neighborhoods — filter on the type field) or "validate_audiences" (audience_ids). The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /meta/audiences/search
| Input | Type | Required |
|---|---|---|
selection | object | yes |
search_type | one of audiences, validate_audiences, interests, interest_suggestions, geo | no |
query | string | no |
limit | integer | no |
after | string | no |
include_saved | boolean | no |
audience_ids | array of string | no |
interest_list | array of string or string | no |
location_type | one of city, region, country, zip, neighborhood | no |
location_types | array of one of city, region, country, zip, neighborhood | no |
country_code | string | no |
buscar_formularios
buscar_formulariosSearch lead forms. Lists the lead generation forms of the selected page — needed for the native lead form objective. The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /meta/leadforms/search
| Input | Type | Required |
|---|---|---|
selection | object | yes |
limit | integer | no |
buscar_publicacoes
buscar_publicacoesSearch Instagram posts. Lists or searches posts of the selected Instagram account (action "list", "search" by text/permalink or "get" by post_id) to advertise existing posts. The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /meta/posts/search
| Input | Type | Required |
|---|---|---|
selection | object | yes |
action | one of list, get, search | no |
query | string | no |
post_id | string | no |
limit | integer | no |
buscar_campanhas
buscar_campanhasSearch existing campaigns. Lists the campaigns of the selected ad account (to extend an existing campaign or ad set), newest first. Paged: limit (default 50, max 100) and after = paging.after of the previous page; paging.has_more tells whether there is more. effective_status: ACTIVE, PAUSED, WITH_ISSUES (default), ARCHIVED, DELETED, IN_PROCESS. The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /meta/campaigns/search
| Input | Type | Required |
|---|---|---|
selection | object | yes |
effective_status | array of one of ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES | no |
limit | integer | no |
after | string | no |
buscar_conjuntos
buscar_conjuntosSearch ad sets. Lists the ad sets of a campaign (campaign_id) or of the whole selected ad account. effective_status: ACTIVE, PAUSED, WITH_ISSUES (default), CAMPAIGN_PAUSED, ARCHIVED, DELETED, IN_PROCESS. The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /meta/adsets/search
| Input | Type | Required |
|---|---|---|
selection | object | yes |
campaign_id | string | no |
effective_status | array of one of ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES, CAMPAIGN_PAUSED | no |
escanear_pasta_drive
escanear_pasta_driveScan a Google Drive folder. Lists the media in a Drive folder the way the campaign creator sees it: loose images/videos become creatives, a CARROSSEL subfolder becomes carousels, FEED/STORIES folders become placement asset customization. Send folder_url OR feed_folder_url + stories_folder_url (links like https://drive.google.com/drive/folders/<ID>). The job_id in the response only groups this lookup's request logs (use it with logs_execucao); it is not a campaign execution.
- Permission:
meta:read— Query Meta and Google Drive: audiences, interests, locations, lead forms, posts, campaigns, ad sets and folders - Type: Read-only
- REST equivalent:
POST /drive/scan
| Input | Type | Required | Description |
|---|---|---|---|
folder_url | string | no | Single folder |
feed_folder_url | string | no | FEED folder (separate folders mode) |
stories_folder_url | string | no | STORIES/REELS folder (separate folders mode) |
validar_campanha
validar_campanhaValidate campaign (dry run). Builds and validates a campaign with the SAME rules as the web app, creating nothing on Meta. Returns per-field errors and a preview of the ad sets and ads. Use it before criar_campanha.
- Permission:
campaigns:write— Create, extend and retry campaigns (everything is created PAUSED) - Type: Read-only
- REST equivalent:
POST /campaigns/validate
| Input | Type | Required |
|---|---|---|
selection | object | yes |
mode | one of new_campaign, extend_campaign, extend_adset | no |
existing_campaign_id | string | no |
existing_adset_id | string | no |
campaign | object | no |
adsets | array of object | no |
ads | object | yes |
criar_campanha
criar_campanhaCreate campaign. Creates campaign → ad sets → creatives → ads on Meta, everything PAUSED, with the same rules and orchestration as the web app (audience pre-flight, Meta rate limits, reuse on retries). Also extends campaigns (mode extend_campaign) and ad sets (extend_adset). Runs in the background: poll status_execucao with the returned job_id until the status is success, partial or error.
- Permission:
campaigns:write— Create, extend and retry campaigns (everything is created PAUSED) - Type: Writes (creates or changes data)
- REST equivalent:
POST /campaigns
| Input | Type | Required |
|---|---|---|
selection | object | yes |
mode | one of new_campaign, extend_campaign, extend_adset | no |
existing_campaign_id | string | no |
existing_adset_id | string | no |
campaign | object | no |
adsets | array of object | no |
ads | object | yes |
status_execucao
status_execucaoExecution status. Progress of a campaign creation run (job_id from criar_campanha/reexecutar_execucao): overall status, step by step (campaign, ad sets, uploads, creatives, ads) and pauses caused by Meta rate limits. The step list stays available after the run ends.
- Permission:
campaigns:read— Read campaign executions, progress and logs - Type: Read-only
- REST equivalent:
GET /executions/{id}/progress
| Input | Type | Required | Description |
|---|---|---|---|
job_id | string (uuid) | yes | Execution ID (job_id) |
detalhar_execucao
detalhar_execucaoExecution details. Full record of the run: summary with the IDs created on Meta, errors and configuration.
- Permission:
campaigns:read— Read campaign executions, progress and logs - Type: Read-only
- REST equivalent:
GET /executions/{id}
| Input | Type | Required | Description |
|---|---|---|---|
job_id | string (uuid) | yes | Execution ID (job_id) |
listar_execucoes
listar_execucoesList executions. Latest campaign creation runs (your own; administrators see all of them).
- Permission:
campaigns:read— Read campaign executions, progress and logs - Type: Read-only
- REST equivalent:
GET /executions
| Input | Type | Required | Description |
|---|---|---|---|
limit | integer | no | 1–100 (default 20) |
status | one of queued, running, success, partial, error | no | Filter by status |
logs_execucao
logs_execucaoExecution logs. Calls made to Meta/Drive during a run or a lookup (also accepts the job_id returned by buscar_*), with error messages in Portuguese and Meta error codes. Retention: successful calls are kept for 24h and errors for 14 days; after that the list comes back empty — the run's outcome stays in detalhar_execucao.
- Permission:
campaigns:read— Read campaign executions, progress and logs - Type: Read-only
- REST equivalent:
GET /executions/{id}/logs
| Input | Type | Required | Description |
|---|---|---|---|
job_id | string (uuid) | yes | Execution ID (job_id) |
reexecutar_execucao
reexecutar_execucaoRetry execution. Smart retry: redoes only what failed, reusing the campaign, ad sets, media, creatives and ads already created. Runs in the background: poll status_execucao with the returned job_id until the status is success, partial or error.
- Permission:
campaigns:write— Create, extend and retry campaigns (everything is created PAUSED) - Type: Writes (creates or changes data)
- REST equivalent:
POST /executions/{id}/retry
| Input | Type | Required | Description |
|---|---|---|---|
job_id | string (uuid) | yes | Execution ID (job_id) |
reexecutar_log
reexecutar_logRetry a single call. Repeats one failed call (by log id). Idempotent: two requests never create the same item twice.
- Permission:
campaigns:write— Create, extend and retry campaigns (everything is created PAUSED) - Type: Writes (creates or changes data)
- REST equivalent:
POST /logs/{id}/retry
| Input | Type | Required | Description |
|---|---|---|---|
id | string | yes | Log ID (request_logs.id) |
criar_publicos_engajamento
criar_publicos_engajamentoCreate engagement audiences. Creates the default engagement audiences (Instagram and Facebook, 365 or 730 days) on the selected ad account. Track it with status_publicos.
- Permission:
audiences:write— Create engagement audiences - Type: Writes (creates or changes data)
- REST equivalent:
POST /audiences/engagement
| Input | Type | Required |
|---|---|---|
selection | object | yes |
max_retention_days | 365 or 730 | no |
platforms | one of all, ig | no |
status_publicos
status_publicosAudience creation status. Result of an engagement audience creation run.
- Permission:
audiences:read— Read audience creation runs - Type: Read-only
- REST equivalent:
GET /audience-executions/{id}
| Input | Type | Required | Description |
|---|---|---|---|
job_id | string (uuid) | yes | Execution ID (job_id) |
listar_execucoes_publicos
listar_execucoes_publicosList audience creation runs. Latest engagement audience creation runs.
- Permission:
audiences:read— Read audience creation runs - Type: Read-only
- REST equivalent:
GET /audience-executions
No input.
listar_modelos_segmentacao
listar_modelos_segmentacaoList targeting templates. Targeting templates saved by the team. Use the id in adsets[].targeting_template_id when creating campaigns.
- Permission:
templates:read— Read targeting templates - Type: Read-only
- REST equivalent:
GET /targeting-templates
No input.
criar_modelo_segmentacao
criar_modelo_segmentacaoCreate targeting template. Saves a targeting (the creator's internal format: age, genders, locations, interests, audiences) as a team template.
- Permission:
templates:write— Create, rename and delete targeting templates - Type: Writes (creates or changes data)
- REST equivalent:
POST /targeting-templates
| Input | Type | Required |
|---|---|---|
name | string | yes |
description | string (nullable) | no |
category | string (nullable) | no |
targeting_spec | object | yes |
renomear_modelo_segmentacao
renomear_modelo_segmentacaoRename targeting template. Changes a template's name/description (author or administrator only).
- Permission:
templates:write— Create, rename and delete targeting templates - Type: Writes (creates or changes data)
- REST equivalent:
PATCH /targeting-templates/{id}
| Input | Type | Required |
|---|---|---|
id | string (uuid) | yes |
name | string | no |
description | string (nullable) | no |
remover_modelo_segmentacao
remover_modelo_segmentacaoDelete targeting template. Deletes a template (author or administrator only).
- Permission:
templates:write— Create, rename and delete targeting templates - Type: Destructive (the client asks for confirmation)
- REST equivalent:
DELETE /targeting-templates/{id}
| Input | Type | Required | Description |
|---|---|---|---|
id | string | yes | Template ID (UUID) |
listar_notificacoes
listar_notificacoesNotifications. Your recent notifications (finished campaigns, failures, syncs).
- Permission: Any authenticated user
- Type: Read-only
- REST equivalent:
GET /notifications
No input.
listar_usuarios
listar_usuariosList users. Team users. Administrators only.
- Permission:
admin:users(administrators only) — Manage team users (administrators only) - Type: Read-only
- REST equivalent:
GET /users
No input.
criar_usuario
criar_usuarioCreate user. Creates a team user (public sign-up is disabled). Administrators only.
- Permission:
admin:users(administrators only) — Manage team users (administrators only) - Type: Writes (creates or changes data)
- REST equivalent:
POST /users
| Input | Type | Required |
|---|---|---|
email | string | yes |
name | string | yes |
password | string | yes |
role | one of admin, member | no |
atualizar_usuario
atualizar_usuarioUpdate user. Changes a user's name or role (admin/member). Administrators only.
- Permission:
admin:users(administrators only) — Manage team users (administrators only) - Type: Writes (creates or changes data)
- REST equivalent:
PATCH /users/{id}
| Input | Type | Required |
|---|---|---|
id | string (uuid) | yes |
role | one of admin, member | no |
name | string | no |
remover_usuario
remover_usuarioDelete user. Deletes a user. Administrators only.
- Permission:
admin:users(administrators only) — Manage team users (administrators only) - Type: Destructive (the client asks for confirmation)
- REST equivalent:
DELETE /users/{id}
| Input | Type | Required | Description |
|---|---|---|---|
id | string | yes | User ID (UUID) |

