AdSpendSpy MCP
An official MCP server by AdSpendSpy that provides AI agents with access to Meta Ad Library data, including estimated ad spend per ad and advertiser, landing pages, ad hooks, and creative analysis for competitor research.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.adspendspy.com/mcp-demoWhat you can do with it
- Retrieve estimated ad spend for specific advertisers
- Identify landing pages behind Meta ads
- Extract ad hooks and creative elements
- Track competitor ad campaigns and running times
Source and maintenance
Protocol and capabilities
- Server
- adspendspy-demo 1.0.0
- MCP protocol
- 2025-11-25
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
list_tracked_brands — List tracked advertisers
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. List your actively tracked advertisers and their string page_id values.
{
"type": "object",
"required": [],
"properties": {
"project": {
"enum": [
"all"
],
"type": "string",
"description": "Only all is available in the public demo."
}
},
"additionalProperties": false
}{
"title": "List tracked advertisers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_tracked_brands — Find a tracked advertiser
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. Search your tracked advertisers by name, Meta page ID, or stored Facebook URL. Searches existing local data only; does not resolve vanity URLs through paid providers.
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
}{
"title": "Find a tracked advertiser",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_brands_tracked — Check advertiser tracking
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. Check whether each string Meta page ID is actively tracked by your account.
{
"type": "object",
"required": [
"page_ids"
],
"properties": {
"page_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]{5,25}$",
"description": "Meta advertiser page ID, kept as a string."
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}{
"title": "Check advertiser tracking",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_brand_ads — List advertiser ads
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. List creative summaries for one tracked advertiser, newest internal ID first, or with sort spend highest latest cumulative estimated spend first (use it for an advertiser's top ads). pagination.next_cursor returns the next page. Each ad carries internal_ad_id (AdSpendSpy ID) and meta_ad_id (the ad on Meta).
{
"type": "object",
"required": [
"page_id"
],
"properties": {
"sort": {
"enum": [
"newest",
"spend"
],
"type": "string",
"default": "newest",
"description": "newest = newest internal ID first; spend = highest estimated spend first."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1
},
"cursor": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Opaque pagination.next_cursor returned by the previous page with the same filters."
},
"page_id": {
"enum": [
"116482854782233"
],
"type": "string",
"pattern": "^[0-9]{5,25}$",
"description": "Meta advertiser page ID, kept as a string."
},
"media_type": {
"enum": [
"all",
"image",
"video"
],
"type": "string",
"default": "all"
},
"active_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}{
"title": "List advertiser ads",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_ad_details — Inspect an ad creative
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. Retrieve one ad of an advertiser you actively track by its internal AdSpendSpy ad ID (internal_ad_id), not its Meta ad ID. Saved lists and favorites do not retain MCP ad access after you remove a tracked brand on the website.
{
"type": "object",
"required": [
"ad_id"
],
"properties": {
"ad_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Internal AdSpendSpy ad ID (internal_ad_id in ad listings); never a Meta ad ID."
}
},
"additionalProperties": false
}{
"title": "Inspect an ad creative",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_top_ads_stats — Analyze estimated ad spend
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. Analyze latest cumulative estimated spend in EUR for your tracked advertisers. page_id is an exact advertiser filter. timeframe filters when ads were last seen, NOT spend accrued during that period. Creative breakdowns sample the top 1,000 ads; response metadata states matched and sampled counts and full-match aggregate spend. Zero can mean unavailable estimates.
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"maxLength": 500
},
"page_id": {
"enum": [
"116482854782233"
],
"type": "string",
"pattern": "^[0-9]{5,25}$",
"description": "Meta advertiser page ID, kept as a string."
},
"project": {
"enum": [
"all"
],
"type": "string",
"description": "Only all is available in the public demo."
},
"category": {
"type": "string",
"maxLength": 100
},
"timeframe": {
"enum": [
"all",
"7d",
"30d",
"90d"
],
"type": "string",
"default": "30d",
"description": "Last-seen window; never a period-spend calculation."
},
"media_type": {
"enum": [
"all",
"image",
"video"
],
"type": "string",
"default": "all"
},
"active_only": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"0",
"1",
"true",
"false"
],
"type": "string"
}
],
"default": false
}
},
"additionalProperties": false
}{
"title": "Analyze estimated ad spend",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_top_landingpages_stats — Rank landing pages by estimated spend
Public demo: Alex Hormozi only (page_id 116482854782233). Ad listings/details expose only approved public creatives; statistics describe this advertiser only. Rank the landing pages of your tracked advertisers by latest cumulative estimated spend in EUR. Ads are grouped by landing URL with ad, advertiser and active-ad counts, the top-spending advertiser and, when one is stored, a screenshot as screenshot_url (site path) and screenshot_full_url (absolute URL). page_id is an exact advertiser filter; q matches part of the landing URL. timeframe filters when ads were last seen, NOT spend accrued during that period. Zero can mean unavailable estimates.
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"maxLength": 500,
"description": "Substring of the landing URL."
},
"limit": {
"type": "integer",
"default": 60,
"maximum": 100,
"minimum": 1
},
"page_id": {
"enum": [
"116482854782233"
],
"type": "string",
"pattern": "^[0-9]{5,25}$",
"description": "Meta advertiser page ID, kept as a string."
},
"project": {
"enum": [
"all"
],
"type": "string",
"description": "Only all is available in the public demo."
},
"timeframe": {
"enum": [
"all",
"7d",
"30d",
"90d"
],
"type": "string",
"default": "30d",
"description": "Last-seen window; never a period-spend calculation."
},
"active_only": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"0",
"1",
"true",
"false"
],
"type": "string"
}
],
"default": false
}
},
"additionalProperties": false
}{
"title": "Rank landing pages by estimated spend",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
rebuild_landing_page — Rebuild a winning landing page for your offer
Public demo: Alex Hormozi only (page_id 116482854782233). Pick a landing page with real estimated Meta ad spend, explain why it converts and rebuild its structure for your own offer with original copy.
- landing_url
- Optional landing page URL (http or https). Without it, the highest-spend landing pages are ranked first.
- page_id
- Optional Meta advertiser page_id (digits only) to limit the landing page ranking to one advertiser.
- my_offer
- Your brand, product, audience, main promise, price/offer and the proof you own.
- output_folder
- Optional relative output folder for the rebuild (default landing-rebuild).
landing_page_teardown — Explain why a top-spending landing page converts
Public demo: Alex Hormozi only (page_id 116482854782233). Rank landing pages by estimated spend and break one down: sections, offer, proof, calls to action and the ad hooks that send traffic to it. No build.
- landing_url
- Optional landing page URL (http or https). Without it, the highest-spend landing pages are ranked first.
- page_id
- Optional Meta advertiser page_id (digits only) to limit the landing page ranking to one advertiser.
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 619 ms
- 95th percentile latency
- 619 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 619 ms · metadata changed · 7 tool(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http adspendspy-mcp https://www.adspendspy.com/mcp-demoCodex
codex mcp add adspendspy-mcp --url https://www.adspendspy.com/mcp-demoCursor
{
"mcpServers": {
"adspendspy-mcp": {
"url": "https://www.adspendspy.com/mcp-demo"
}
}
}Cline
{
"mcpServers": {
"adspendspy-mcp": {
"type": "streamableHttp",
"url": "https://www.adspendspy.com/mcp-demo",
"disabled": false
}
}
}VS Code
{
"servers": {
"adspendspy-mcp": {
"type": "http",
"url": "https://www.adspendspy.com/mcp-demo"
}
}
}Gemini CLI
gemini mcp add --transport http adspendspy-mcp https://www.adspendspy.com/mcp-demoClaude Desktop
{
"mcpServers": {
"adspendspy-mcp": {
"url": "https://www.adspendspy.com/mcp-demo"
}
}
}Windsurf
{
"mcpServers": {
"adspendspy-mcp": {
"serverUrl": "https://www.adspendspy.com/mcp-demo"
}
}
}Let your agent find its tools
Find servers like AdSpendSpy MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run AdSpendSpy MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.