Skip to main content
Glama

Register Meta cabinet

register_meta_cabinet

Register (or refresh) a Facebook ad account's campaign catalog WITHOUT a Graph token — id, name, status, objective, daily / lifetime budget — what the Torvex browser extension reads from a logged-in Ads Manager session before posting costs. Lands under a tokenless Meta profile keyed by the FB user id (created on first call), so the campaign editor's Facebook picker can link these FB campaigns to tracker campaigns and import_meta_costs then matches them. The campaign list is the cabinet's complete list: campaigns missing from it are dropped from the mirror unless partial is set. Adsets of the same cabinet go through report_meta_adsets, ads through report_meta_ads.

Input Schema

NameRequiredDescriptionDefault
pagesNoThe FB user's pages (/me/accounts) — the launch wizard's page picker for this profile
pixelsNoThe cabinet's pixels (/act_X/adspixels) — complete list, the wizard's pixel picker
fb_userYes
partialNotrue on every chunk but the last when one cabinet is split over several requests (no pruning)
agency_idNoMeta agency (list_meta_agencies) whose commission the profile's cabinets pay — set on the profile before the costs of the same run, so the first sync books spend with the markup; omit / null to keep what Meta → Accounts set
campaignsYes
ad_accountYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the hints: the profile is created on first call, and 'campaigns missing from it are dropped from the mirror unless `partial` is set' — a pruning side effect an agent could easily trigger by mistake. The agency_id note explains that it must be set before the same run's costs so markup books correctly. Minor tension with the supplied hints: removal of campaigns reads as destructive-ish despite destructiveHint=false, and 'register (or refresh)' sounds upsert-like against idempotentHint=false; neither is a flat contradiction but both deserve a caveat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the tokenless qualifier, and every clause carries weight (pruning rule, profile keying, sibling routing, agency/commission ordering). The single dense paragraph with em-dash chains makes it harder to scan than it needs to be; two or three short sentences would read better.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, nested, mutation-style tool with no output schema and 57% schema coverage, the description covers purpose, side effects, ordering constraints and sibling division well. The remaining hole is the return value: with no output schema the agent gets no statement of what the call returns or how failures surface, which is the one thing this description should still say.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57% (7 params, nested), so the description has to carry some load and does: it explains what the campaigns array supplies, why fb_user.id is the profile key, and what partial protects against. It leaves the pages, pixels and ad_account sub-fields entirely to the schema, which already documents them, so the gap is small but present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Register (or refresh) a Facebook ad account's campaign catalog') plus the key differentiator — 'WITHOUT a Graph token' and the enumerated fields (id, name, status, objective, daily/lifetime budget). It also names where the data lands (tokenless Meta profile keyed by FB user id), which separates it from create_campaign_from_meta and import_meta_costs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool in a pipeline: the browser extension posts here first, the campaign editor's Facebook picker links FB campaigns, then import_meta_costs matches them, and 'Adsets of the same cabinet go through report_meta_adsets, ads through report_meta_ads.' That is genuine sibling routing. It never states an exclusion case (e.g. when a Graph-token path like list_meta_accounts should be preferred instead), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources