From markifact
Reference for Markifact MCP server: discover via find_operations, inspect inputs, run 300+ operations for ad management/reporting on Google Ads, Meta, TikTok, Shopify, and more.
npx claudepluginhub markifact/markifact-mcp --plugin markifactThis skill uses the workspace's default tool permissions.
[Markifact](https://www.markifact.com) is a full performance-marketing **management + reporting** platform. Its remote MCP server at `https://api.markifact.com/mcp` exposes **300+ operations** that let you run accounts end-to-end: launch campaigns, edit creatives, manage audiences, rotate ads, sweep negatives, scale winners, diagnose underperformers, and pull reports across every connected plat...
Manages Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads campaigns via natural language. Automates keyword research, budget optimization, ROAS tracking, wasted spend analysis, and reporting.
Audits and optimizes paid ad campaigns across Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads using 250+ checks, scoring, parallel agents, industry templates, and AI creative generation.
Audits Meta (Facebook + Instagram) Ads accounts, analyzes health, gathers business context, and persists JSON artifacts for reuse by other Meta Ads skills.
Share bugs, ideas, or general feedback.
Markifact is a full performance-marketing management + reporting platform. Its remote MCP server at https://api.markifact.com/mcp exposes 300+ operations that let you run accounts end-to-end: launch campaigns, edit creatives, manage audiences, rotate ads, sweep negatives, scale winners, diagnose underperformers, and pull reports across every connected platform. Reporting is a first-class capability — it's just not the only thing Markifact does.
Sign up at www.markifact.com for free credits. Connect your ad accounts at www.markifact.com/app/connections. Docs and platform coverage at www.markifact.com.
gads_get_report.The server exposes a small meta-tool surface — you don't call 300 tools directly, you discover them at runtime:
| Tool | Purpose |
|---|---|
find_operations | Search the operation registry by intent. Always step 1. Each result includes `requires_approval: true |
get_operation_inputs | Get the full input schema (required + optional, types, examples) for an operation. Always step 2. Never guess shapes. |
run_operation | Execute an operation with requires_approval: false. No confirmation needed. |
run_write_operation | Execute an operation with requires_approval: true. Always confirm with the user first (see safe-write-operations skill). |
list_connections | List the user's authenticated logins per platform. Rarely needed — see Cross-cutting rules. |
get_file_url | Get a signed URL for a file stored in Markifact. |
read_file | Read the contents of a file the user uploaded or that an op produced. |
upload_media | Upload an image or video as a creative asset (e.g. for a Meta ad image, Google Ads asset, etc.). Only images and videos — no documents or other file types. |
Every workflow follows the same three steps:
find_operations with the user's intent in plain English (e.g. "create google search campaign", "replace meta ad creative"). Returns matching operation IDs, descriptions, and a requires_approval flag.get_operation_inputs with the operation ID to see exact required fields. Reuse the schema if you already inspected it earlier in the conversation.requires_approval flag from step 1: false → run_operation (no confirmation needed); true → run_write_operation (only after the four-step protocol in safe-write-operations). Connections (logins) are auto-resolved — only pass connection_id if you've already called list_connections because the user has multiple connections on the platform.Never invent operation IDs. Never guess input field names. Always discover and inspect first.
gads_* — Google Adsmeta_ads_* — Meta (Facebook / Instagram)ga4_* — Google Analytics 4gsc_* — Google Search Consolegmc_* — Google Merchant Centertiktok_ads_*, linkedin_ads_*, pinterest_ads_*, snapchat_ads_*, reddit_ads_*, microsoft_ads_*, amazon_ads_*shopify_*, klaviyo_*, hubspot_*, slack_*When you see a hint like "use gads_create_campaign" anywhere in instructions, that's a hint for what to discover — you still need to find_operations and get_operation_inputs before calling.
*_select_accounts first. Account names are matched as a substring ("contains"), not exact. If multiple match, ask the user to disambiguate.*_list_report_fields op first to get valid fields, then build the report.gads_create_campaign, gads_update_ad_status over gads_mutate. Only fall back to gads_mutate when no dedicated op exists for the action.user1@example.com connected to Google). One connection can have access to many ad accounts under that login.*_select_accounts op.list_connections if (a) the user has multiple connections on the platform and didn't name one, (b) the user explicitly asks to use a specific connection / login, or (c) an op fails with a connection-not-found / auth error.*_select_accounts op (substring match on name) before any account-scoped op. If multiple accounts match, ask the user to disambiguate.Reporting is uniform across every platform (GA4, Google Ads, Meta Ads, GSC, GMC, TikTok, etc.) and always takes the same three steps:
*_select_accounts — resolve the account ID from the user's account name (substring match). Skip if the user already gave you an exact ID.*_list_report_fields — fetch valid metric and dimension names. Never guess field names; they vary per platform and per report type.*_get_report — run the report with the resolved account ID, validated fields, and the date range.You can pull multiple accounts in one report — either aggregated, or split by account by adding the account dimension.
file_id (often when a result is too large to inline). Use get_file_url(file_id) to get a shareable URL, then embed in your reply with Markdown:  for images, [name](url) for other files. Use read_file(file_id) to inspect contents yourself.file_id values. Always go through get_file_url and embed via Markdown.upload_media to let the user upload an image or video for use as a creative asset (e.g. Meta ad image, Google Ads asset). Images and videos only — no documents.file_id it returned earlier. If an op expects a URL, pass the full URL from get_file_url, not the raw file_id.safe-write-operations skill; never bypass.get_operation_inputs, fix payload, re-confirm with user before retrying.*_select_accounts resolution; no cross-account writes.requires_approval: true goes through the four-step protocol in the safe-write-operations skill — plain-English statement, blast-radius disclosure, explicit user confirmation, post-execution verification. The agent never spends money or mutates a live campaign without a yes.find_operations, get_operation_inputs, *_get_report) are read-only. Write operations (create, update, pause, resume, delete) require user confirmation every time.