SwipeBuilder MCP Server
Allows programmatic access to a library of saved Facebook ad swipes, enabling users to retrieve ads, filter by format (image, video, carousel), and organize them into collections.
Provides tools to retrieve and manage Google ad swipes, allowing for programmatic filtering by ad format and organization within the SwipeBuilder library.
Enables programmatic retrieval and management of Instagram ad swipes, with capabilities to filter by media format and organize items into folders.
Facilitates access to TikTok ad swipes, providing tools to filter saved ads by format and manage library collections via the Model Context Protocol.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SwipeBuilder MCP ServerShow me my recent TikTok video ads"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SwipeBuilder MCP Server
Access your SwipeBuilder ad swipe library programmatically via the Model Context Protocol (MCP).
Installation
From PyPI (when published)
pip install swipebuilder-mcpFrom Source
cd swipebuilder-mcp
pip install -e .Related MCP server: Meta Ads MCP Server
Configuration
Get Your API Key
Log in to SwipeBuilder
Go to Settings > API Keys
Create a new API key (starts with
sb_live_orsb_test_)
Environment Variables
Variable | Required | Default | Description |
| Yes* | - | Your API key. Can also be passed per-tool call. |
| No |
| API base URL (for testing) |
Usage
With Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"swipebuilder": {
"command": "swipebuilder-mcp",
"env": {
"SWIPEBUILDER_API_KEY": "sb_live_your_key_here"
}
}
}
}Restart Claude Desktop after updating the configuration.
With Other MCP Clients
Run the server directly:
SWIPEBUILDER_API_KEY=sb_live_xxx swipebuilder-mcpWith Docker
docker build -t swipebuilder-mcp .
docker run -e SWIPEBUILDER_API_KEY=sb_live_xxx swipebuilder-mcpOr with docker-compose:
SWIPEBUILDER_API_KEY=sb_live_xxx docker-compose upAvailable Tools
get_swipes
Retrieve ads from your swipe file with optional filters.
Parameters:
api_key(optional): API key if not set via environmentplatform(optional): Filter by platform (facebook, tiktok, instagram, linkedin, google)format(optional): Filter by format (image, video, carousel)limit(optional): Number of results, 1-100 (default: 50)cursor(optional): Pagination cursor from previous response
Credit Usage: 1 credit per swipe returned
get_swipe
Get a single swipe by ID.
Parameters:
swipe_id(required): The ID of the swipeapi_key(optional): API key if not set via environment
Credit Usage: 1 credit
get_collections
List your collections (folders).
Parameters:
api_key(optional): API key if not set via environmentparent_id(optional): Filter by parent ('root' for root-level, collection ID for children)limit(optional): Number of results, 1-100 (default: 50)cursor(optional): Pagination cursor
Credit Usage: No credits consumed
get_collection
Get a single collection by ID.
Parameters:
collection_id(required): The ID of the collectionapi_key(optional): API key if not set via environment
Credit Usage: No credits consumed
get_collection_items
Get items (swipes) within a specific collection.
Parameters:
collection_id(required): The ID of the collectionapi_key(optional): API key if not set via environmentlimit(optional): Number of results, 1-100 (default: 50)cursor(optional): Pagination cursor
Credit Usage: 1 credit per swipe returned
get_usage
Check your API credit usage for the current billing period.
Parameters:
api_key(optional): API key if not set via environment
Credit Usage: No credits consumed
Returns:
credits_used: Credits consumed this monthcredits_limit: Monthly credit limitcredits_remaining: Credits still availableperiod_start: Start of billing periodperiod_end: End of billing period
Example Conversations
Once configured, you can ask Claude things like:
"Show me my recent Facebook video ads"
"Get all swipes from my 'Winners' collection"
"How many API credits have I used this month?"
"Find all carousel ads I've saved"
Rate Limits
100 requests per minute
1,000 requests per hour
If you exceed these limits, you'll receive a rate limit error.
Credits
Each API call that returns swipe data consumes credits:
1 credit per swipe returned from any endpoint
Collections and usage queries are free (no credits)
Check your plan for monthly credit limits.
Support
Documentation: https://docs.swipebuilder.io/api
Support: support@swipebuilder.io
License
MIT
Available Tools
6 toolsget_collectionB
Get a single collection by ID.
Args:
collection_id: The ID of the collection to retrieve
api_key: Your SwipeBuilder API key. Optional if SWIPEBUILDER_API_KEY env var is set.
Returns:
Dictionary with collection data or error message
Credit Usage: No credits consumed
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | ||
| api_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about credit usage ('No credits consumed') and API key handling via environment variables, but lacks details on error handling, rate limits, authentication requirements beyond the key, or response structure. This is adequate but has clear gaps for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Credit Usage), front-loaded with the core purpose, and every sentence adds value without redundancy. It's appropriately sized for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is moderately complete. It covers purpose, parameters, and credit usage, but lacks output details (only mentions 'Dictionary with collection data or error message' vaguely) and doesn't integrate with sibling tools, leaving room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains both parameters: 'collection_id' as 'The ID of the collection to retrieve' and 'api_key' with optionality and environment variable fallback. This adds meaningful semantics beyond the bare schema, though it doesn't cover format details like ID structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('a single collection by ID'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_collections' (plural) or 'get_collection_items', which would be needed for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_collections' or 'get_collection_items'. It mentions the optionality of 'api_key' but doesn't explain tool selection criteria, leaving the agent with minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_itemsB
Get items (swipes) in a collection.
Args:
collection_id: The ID of the collection
api_key: Your SwipeBuilder API key. Optional if SWIPEBUILDER_API_KEY env var is set.
limit: Number of results (1-100, default 50)
cursor: Pagination cursor from previous response
Returns:
Dictionary with collection info, items data, and pagination
Credit Usage: 1 credit per swipe returned
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | ||
| api_key | No | ||
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: credit usage (1 credit per swipe returned), pagination behavior (via cursor), and optional API key handling. However, it doesn't cover potential errors, rate limits, or authentication requirements beyond the API key note, leaving gaps for a mutation-free read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections for args and returns. Every sentence adds value—no fluff or repetition—making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description does a decent job covering parameters and basic behavior (pagination, credit usage). However, it lacks details on error handling, response structure beyond 'dictionary', and sibling tool differentiation, making it incomplete for optimal agent use in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It effectively explains all four parameters: collection_id (ID of the collection), api_key (optional with env var fallback), limit (range and default), and cursor (pagination). This adds significant meaning beyond the bare schema, though it could detail format constraints (e.g., collection_id structure).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'items (swipes) in a collection', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like get_swipe or get_swipes, which might also retrieve swipe items, leaving some ambiguity about when to use this specific collection-focused retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_swipe or get_swipes. It mentions the tool's function but lacks context about prerequisites (e.g., needing a collection ID) or comparisons to siblings, leaving the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionsA
Get your collections (folders).
Args:
api_key: Your SwipeBuilder API key. Optional if SWIPEBUILDER_API_KEY env var is set.
parent_id: Filter by parent ('root' for root-level, collection ID for children, None for all)
limit: Number of results (1-100, default 50)
cursor: Pagination cursor from previous response
Returns:
Dictionary with collections data and pagination info
Credit Usage: No credits consumed
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| parent_id | No | ||
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it specifies authentication options (API key or env var), pagination behavior, credit usage ('No credits consumed'), and return format. However, it doesn't mention rate limits, error conditions, or whether this is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Credit Usage) and efficiently communicates necessary information. However, the opening sentence could be more front-loaded with key differentiators, and some redundancy exists between the title-like opening and the detailed parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description provides good coverage: purpose, all parameters, return format, and credit usage. It could be more complete by explicitly stating this is a read operation and mentioning error cases, but overall it's substantially complete given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description compensates excellently by explaining all 4 parameters with clear semantics: api_key (optional with env var fallback), parent_id (filtering options with 'root' and 'None' semantics), limit (range and default), and cursor (pagination purpose). This adds substantial value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('your collections (folders)'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'get_collection' (singular) or 'get_collection_items', leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context through parameter explanations (e.g., filtering by parent_id, pagination), but doesn't explicitly state when to use this tool versus alternatives like 'get_collection' or 'get_collection_items'. No explicit when-not-to-use guidance or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swipeB
Get a single swipe by ID.
Args:
swipe_id: The ID of the swipe to retrieve
api_key: Your SwipeBuilder API key. Optional if SWIPEBUILDER_API_KEY env var is set.
Returns:
Dictionary with swipe data or error message
Credit Usage: 1 credit
| Name | Required | Description | Default |
|---|---|---|---|
| swipe_id | Yes | ||
| api_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context: it mentions credit usage ('Credit Usage: 1 credit'), which is useful for cost awareness, and hints at authentication behavior (API key optional if env var set). However, it lacks details on error handling, rate limits, or what 'swipe data' entails, leaving gaps for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the first sentence states the purpose clearly, followed by organized sections for Args, Returns, and Credit Usage. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete. It covers the basic operation, parameters, and credit usage, but lacks details on return values (only 'Dictionary with swipe data or error message' is vague) and doesn't address potential errors or system limits. For a simple read tool, this is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It adds meaningful semantics: 'swipe_id' is explained as 'The ID of the swipe to retrieve', and 'api_key' is described with optionality and environment variable fallback. This clarifies parameter purposes beyond the bare schema, though it doesn't cover format or constraints (e.g., ID structure).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Get a single swipe by ID.' This specifies the verb ('Get') and resource ('swipe'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_swipes' (which likely retrieves multiple swipes), though the 'single' hint provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_swipes' or 'get_collection_items', nor does it specify prerequisites or contexts for usage. The only usage hint is the optional 'api_key' parameter, which is insufficient for broader decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swipesA
Get swipes from your swipe file.
Args:
api_key: Your SwipeBuilder API key (sb_live_xxx or sb_test_xxx).
Optional if SWIPEBUILDER_API_KEY env var is set.
platform: Filter by platform (facebook, tiktok, instagram, linkedin, google)
format: Filter by format (image, video, carousel)
limit: Number of results (1-100, default 50)
cursor: Pagination cursor from previous response
Returns:
Dictionary with swipes data, pagination info, and credit usage
Credit Usage: 1 credit per swipe returned
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| platform | No | ||
| format | No | ||
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds valuable context: it explains authentication (API key or env var), pagination behavior (cursor parameter), credit usage (1 credit per swipe returned), and the return structure (dictionary with data, pagination, and credit info). This covers key operational aspects beyond basic input/output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It uses clear sections (Args, Returns, Credit Usage) with bullet-like formatting, making it easy to scan. Every sentence adds value—no redundant or vague statements. It's front-loaded with the core purpose, then details parameters and behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description does an excellent job of covering essentials: purpose, parameters, return format, and credit usage. It's nearly complete, though it could slightly improve by explicitly mentioning error cases or rate limits. Given the context, it provides strong guidance for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description fully compensates by providing detailed semantics for all 5 parameters. It explains each parameter's purpose, optionality, valid values (e.g., platform options, limit range), defaults, and environmental alternatives (API key). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get swipes from your swipe file.' This specifies the verb ('Get') and resource ('swipes'), making it immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_swipe' (singular) or 'get_collection_items', which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_swipe' (singular) or 'get_collection_items', nor does it explain prerequisites like authentication requirements beyond the API key note. The agent must infer usage from the name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageA
Get your API credit usage for the current month.
Args:
api_key: Your SwipeBuilder API key. Optional if SWIPEBUILDER_API_KEY env var is set.
Returns:
Dictionary with usage statistics including:
- credits_used: Credits consumed this month
- credits_limit: Monthly credit limit
- credits_remaining: Credits still available
- period_start: Start of billing period
- period_end: End of billing period
Credit Usage: No credits consumed
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that no credits are consumed by using this tool, which is useful context, but does not cover other behavioral aspects like authentication needs beyond the API key note, rate limits, or error handling. It adds some value but is incomplete for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose, followed by structured sections for arguments and returns. Every sentence adds value, with no redundant information, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is mostly complete: it covers purpose, parameters, returns, and behavioral notes. However, it lacks details on error cases or advanced usage scenarios, leaving minor gaps in contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by explaining the 'api_key' parameter's semantics: it's optional and can be set via an environment variable. This adds meaningful context beyond the schema, though it doesn't detail other potential parameters or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('API credit usage for the current month'), distinguishing it from sibling tools that handle collections and swipes. It precisely defines what the tool retrieves without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to check API credit usage), but does not explicitly mention when not to use it or name alternatives. It implies usage for monitoring billing, though lacks explicit exclusions or comparisons to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
get_collection - First observed
get_collection_items - First observed
get_collections - First observed
get_swipe - First observed
get_swipes - First observed
get_usage
TDQS
Scored across 6 tools
Every tool has a clearly distinct purpose with no ambiguity. The tools are organized around specific resources (collections, swipes, usage) and actions (get single item, get list, get usage), making it easy for an agent to select the right tool for each task without confusion.
All tool names follow a consistent verb_noun pattern using snake_case, specifically 'get_' followed by the resource name (e.g., get_collection, get_swipes). This predictability enhances readability and usability across the entire tool set.
With 6 tools, the server is well-scoped for its purpose of accessing SwipeBuilder data. Each tool serves a clear and necessary function—retrieving collections, swipes, and usage information—without being overly sparse or bloated, fitting typical expectations for such an API.
The tool surface provides comprehensive read-only coverage for the domain, including retrieval of collections, items within collections, swipes, and usage data. A minor gap exists in the lack of create, update, or delete operations, but this is likely intentional for a data access server, and agents can still perform core workflows effectively.
Maintenance
Related MCP Connectors
Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.
Conversational access to advertising performance data, creative analysis, and campaign insights
Conversational access to advertising performance data, creative analysis, and campaign insights
Read and manage Meta Ads campaigns, ad sets, ads, audiences, pages and Business Manager. You provide
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables programmatic access to Meta Ads data and management features, including campaign insights, ad account details, performance metrics, and change history through the Meta Ads API.-
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive management of Facebook and Instagram advertising campaigns via the Meta Marketing API, supporting campaign creation, targeting optimization, and budget management. It provides tools for detailed performance reporting and creative analysis, including insights into spend, ROI, and audience breakdowns.MIT
- FlicenseCqualityDmaintenanceEnables managing Facebook ads campaigns, ad sets, ads, creatives, insights, and audience targeting via Meta's Marketing API.39-
- AlicenseNot gradedqualityDmaintenanceEnables full read/write management of Facebook ad campaigns, ad sets, ads, and creatives via the Meta Marketing API through natural language, with AI creative generation, performance analytics, and PDF reporting.MIT