M Metadata / docs
Docs / Introduction

Build agents that run real paid media.

Metadata exposes 141 documented MCP tools that let Claude Code, Hermes, OpenClaw, and custom agents plan, build, review, launch, and optimize B2B advertising across LinkedIn, Meta, Google, Reddit, Display, intent, video, and LLM channels. The same execution engine powers the prompt-first interface on www.metadata.io and the review surface inside platform.metadata.io.

# Connect in 30 seconds
claude mcp add metadataone npx -y claude mcp add --transport http metadataone https://mcp-server.metadata.io/mcp \
  --env METADATA_API_KEY=$METADATA_API_KEY

What you can build

The API is shaped for operators, agents that don't just surface data but take action. Every workflow a human runs inside the Metadata app is also exposed as an MCP tool. That means an agent with an API key can:

Build audiences
Firmographic, technographic, Bombora intent, G2 intent, LinkedIn/Meta native, retargeting, CSV upload.
20 tools5 cr avg
Launch campaigns
Create multi-channel campaigns in Draft, edit elements, then transition to LIVE when ready.
14 tools10–25 cr
Generate creatives & ads
AI image generation, brand kits, image/video/carousel/conversation ads, Google Ads extensions.
25 tools1–25 cr
Read analytics & ABM
Funnel, performance, account insights, timelines, opportunities, pipeline attribution, leads.
17 tools3 cr avg
Run experiments & keywords
Adjust budgets, manage keyword lists and search terms, pause/restart, negative keywords.
15 tools1–5 cr
Integrate channels
OAuth connect LinkedIn, Meta, Google, Reddit, HubSpot, Salesforce from inside the agent loop.
8 tools1–5 cr

Two surfaces, one execution engine

Marketing leaders can type an outcome into the Metadata interface: build the audience, generate the offer, assemble channel-specific assets, forecast pipeline, and prepare the campaign. Operators can then review the full campaign structure in the SaaS UI before spend goes live. Developers and agents can run the same workflow headlessly through MCP.

Prompt-first web
Use www.metadata.io as the LLM-friendly front door where marketers ask for outcomes in plain language.
strategy to drafthuman-readable
SaaS review UI
Use platform.metadata.io to inspect audiences, assets, campaign structure, budgets, guardrails, approvals, and performance.
review to launchcontrolled spend
MCP headless
Connect Claude Code, Hermes, OpenClaw, or your own agent to automate execution with structured tool calls and approval gates.
141 toolsJSON schemas

Designed for agents, not humans

Every tool returns structured JSON. Every parameter has a schema. Every destructive action (launch_campaign, connect_crm) is idempotent and clearly marked. Errors carry actionable messages. Rate limits are documented up front.

The tool surface is designed to compose: an agent can call estimate_target_group before create_target_group, call search_target_group_criteria before either, and loop on deep_funnel_stats after launch to decide whether to scale a budget group.

New to MCP? The Model Context Protocol is Anthropic's open standard for connecting AI agents to external systems. Any MCP-compatible client (Claude Code, Claude Desktop, Hermes, Paperclip, OpenClaw, custom agents) can use Metadata tools without custom integration work.

A complete agentic workflow

Here's the archetypal loop an agent runs against Metadata:

Python
# 1. Get context about the account
account = mcp.get_account_details()
brand   = mcp.get_brand_kit(domain="acme.com")

# 2. Build a firmographic audience of our ICP
audience = mcp.create_firmographic_audience(
    name="ICP — Mid-market SaaS, US",
    filters={
        "industries": ["Computer Software"],
        "employee_range": [201, 1000],
        "countries": ["US"],
        "seniority": ["vp", "director", "c-level"],
    },
)

# 3. Generate on-brand creatives
creative = mcp.generate_brand_creative(
    brand_kit_id=brand["id"],
    prompt="Hero ad: platform screenshot, VP of Marketing audience, urgency CTA",
    aspect_ratios=["1:1", "16:9", "9:16"],
)

# 4. Assemble campaign in Draft (no spend yet)
campaign = mcp.create_campaign(
    name="Q2 ICP Demand Capture",
    channels=["linkedin", "meta"],
    audiences=[audience["id"]],
    ads=[creative["id"]],
    daily_budget=500,
)

# 5. Human approval gate, then launch
if human_approved(campaign):
    mcp.launch_campaign(campaign_id=campaign["id"])

# 6. Close the loop — read results tomorrow
results = mcp.deep_funnel_stats(
    campaign_id=campaign["id"],
    date_range="last_7_days",
)

That entire loop runs on roughly 55 credits, read (1+1) + audience (5) + creative (25) + campaign (10) + launch (25) + analytics (3). On the Command Center tier that's about $5.50.

Where to next