---
title: "Metadata developer docs. Metadata Developer Docs"
url: https://metadata.io/developers/
description: "Connect an agent to the Metadata MCP server and run real paid-media tools. 160 tools, 65 read-only and 39 that move budget, with full JSON Schema for every argument."
source: metadata.io
---

# Run paid media from your agent

Metadata exposes its whole platform over MCP: 160 tools for audiences, campaigns, creative, paid search and attribution. Point a client at the server and your agent can build an audience, draft a campaign and read what it returned.

## Watch a real session

Five calls an agent makes before it does anything that spends. Every response below came back from the production server while these docs were written, at the latency shown. The sixth call is the one that would launch a campaign, and it is not made.

1. `get_current_date` Read 160 B · 102 ms Return the REAL current date and time (UTC). `{ "current_date": "2026-09-05", "current_datetime_utc": "2026-09-05T15:03:22.518Z", "current_year": 2026, "current_quarter": "Q3", "timezone": "UTC" }`
2. `get_account_details` Read 1,111 B · 1699 ms Current user and account information. `{ "id": 6, "firstName": "[firstName redacted]", "lastName": "[lastName redacted]", "email": "[email redacted]", "role": "SUPER_USER", "roleId": "sys_super_user", "status": "ACTIVE", "saml": false, "accountId": "[number redacted]", "userId": 6, "domain": "[domain redacted]", "phoneNumber": "[phoneNumber redacted]", "jobTitle": null, "country": null, "uiPreference": "CLASSIC", "experiencePromptDismissed": false, "accountName": "[accountName redacted]", "landingSubdomain": "metadataone", "impersonate": null, "accountStatus": "ACTIVE", "impersonatedAccountStatus": null, "currency": "USD", "renewalDate": "2026-02-27T22:32:37.000Z", "subscriptionChangeStatus": { "hasScheduledDowngrade": false, "hasScheduledCancellation": false }, "isSocial": true, "auth0UserId": "[auth0UserId redacted]", "subscriptionComponents": [ "audiences", "bid-agent", "campaigns", …`
3. `list_target_groups` Read 5,729 B · 299 ms List and search target groups in Metadata platform. `{ "totalElements": 45, "totalPages": 5, "data": [ { "id": "[number redacted]", "name": "[name redacted]", "channel": "REDDIT", "createdDate": "2026-09-03T22:16:30.000Z", "matchCountType": "FIXED_SIZE", "matchCount": "[number redacted]", "isMatchCountTooSmall": false, "visibility": "VISIBLE", "mdAudienceIds": [], "tags": [], "activeExperiments": false, "locked": false, "inactiveAudiences": false, "hasExclusionCriteria": true, "hasAudiencesOlderThan90Days": false, "hasAudiencesOlderThan180Days": false }, { "id": "[number redacted]", "name": "[name redacted]", "channel": "REDDIT", "createdDate": "2026-09-03T20:45:30.000Z", "matchCountType": "FIXED_SIZE", "matchCount": "[number redacted]", "isMatchCountTooSmall": false, "visibility": "VISIBLE", "mdAudienceIds": [], "tags": [], "activeExperiments": false …`
4. `account_level_stats` Read 2,765 B · 619 ms Account-level statistics and channel breakdown for a timeframe. `"[value redacted]"`
5. `get_converted_leads_summary` Read 396 B · 334 ms Fast aggregate summary of the account's converted leads (Smart Leads) — counts and rates only, no lead rows. `"[value redacted]"`
6. `launch_campaign` Destructive not called This is where the agent stops. LAUNCHES REAL MARKETING CAMPAIGNS WITH REAL BUDGET SPEND 🚨 KEYWORDS: launch, start, activate, go live, campaign, begin, advertising, spend, marketing PREREQUISITE: Before runni…

All 65 read-only tools behave like the five above. The 39 destructive ones behave like the sixth. [Filter the full list by effect.](https://metadata.io/developers/tools/)

## Connect in one command

Claude Code, with a key you have already minted:

Claude Desktop and any client that speaks stdio, via the `mcp-remote` bridge:

## Or skip the client entirely

The server is plain JSON-RPC over HTTP. This lists every tool it exposes:

A useful sanity check, because it needs no client, no npx and no config file: if this returns 160 tools, your key works and the fault is somewhere else.

## Know which calls spend money

The server annotates every tool with what it does to the account. Of the 160:

| Effect | Count | Meaning |
|---|---|---|
| Read | 65 | Returns data. Safe to call freely. |
| Writes | 56 | Creates or changes something in the account. |
| Destructive | 39 | Deletes, archives, launches or moves budget. |

Filter the full list by effect in the [tool reference](https://metadata.io/developers/tools/). If you are giving an agent an unattended loop, start it with the 65 read tools.

## Where to go next

- [Quickstart](https://metadata.io/developers/quickstart.html) — key to first tool call.
- [Authentication](https://metadata.io/developers/authentication.html) — minting, scoping and rotating keys.
- [MCP reference](https://metadata.io/developers/mcp.html) — transport, capabilities, errors.
- [All 160 tools](https://metadata.io/developers/tools/) — filterable, with full schemas.
- [Recipes](https://metadata.io/developers/recipes/) — multi-tool flows that do a real job.
- [Autonomous onboarding](https://metadata.io/developers/agents.html) — what an agent can and cannot do on its own today.
