create_image_generation
ChatGPTCreate image generation Submit an image-generation request. The caller's prompt is treated as a creative brief: Atria expands it into size distinct concept variants and renders one image per variant. size > 1 returns real creative variety, not seed-jittered copies of the same prompt. Treat prompt as a directional brief (intent, audience, mood, visual hints), not the final image-model prompt — Atria produces the per-variant prompts internally. Async. Returns immediately with a generation_id and (initially empty) image_ids. Poll GET /open/v1/image-generations/{generation_id} to pick up image ids and track status; see that endpoint for cadence guidance. Brand required. brand_id must reference a workspace-owned brand from GET /open/v1/owned-brands. The brand's logo / colors / product context grounds the brief — there is no placeholder fallback. Cross-workspace brand ids return code=40401. Idempotency. idempotency_key deduplicates retries — re-submitting the same key from the same workspace returns the same generation_id and never produces a duplicate charge. Pick a stable UUID per attempt; reuse only to recover from a dropped response. Credits. Charged at the same rate as the in-app image generation feature — trigger one image in Atria's web app to see the current per-image credit cost; size multiplies it. Credits are reserved on submit; per-image failures are auto-refunded. Errors: code=40001 when workspace context is missing from the request; code=40401 for unknown / cross-workspace brand_id; code=50001 when the upstream image-gen service is unavailable, returns an error envelope, or rejects the submit (including credit-exhaustion at the upstream layer).
create_image_generation
ChatGPTCreate image generation Submit an image-generation request. The caller's prompt is treated as a creative brief: Atria expands it into size distinct concept variants and renders one image per variant. size > 1 returns real creative variety, not seed-jittered copies of the same prompt. Treat prompt as a directional brief (intent, audience, mood, visual hints), not the final image-model prompt — Atria produces the per-variant prompts internally. Async. Returns immediately with a generation_id and (initially empty) image_ids. Poll GET /open/v1/image-generations/{generation_id} to pick up image ids and track status; see that endpoint for cadence guidance. Brand required. brand_id must reference a workspace-owned brand from GET /open/v1/owned-brands. The brand's logo / colors / product context grounds the brief — there is no placeholder fallback. Cross-workspace brand ids return code=40401. Idempotency. idempotency_key deduplicates retries — re-submitting the same key from the same workspace returns the same generation_id and never produces a duplicate charge. Pick a stable UUID per attempt; reuse only to recover from a dropped response. Credits. Charged at the same rate as the in-app image generation feature — trigger one image in Atria's web app to see the current per-image credit cost; size multiplies it. Credits are reserved on submit; per-image failures are auto-refunded. Errors: code=40001 when workspace context is missing from the request; code=40401 for unknown / cross-workspace brand_id; code=50001 when the upstream image-gen service is unavailable, returns an error envelope, or rejects the submit (including credit-exhaustion at the upstream layer).
discover_apis
ChatGPTList every other tool this MCP server advertises. Call this first to see what atria APIs you can use.
discover_apis
ChatGPTList every other tool this MCP server advertises. Call this first to see what atria APIs you can use.
get_ad_account_ad
ChatGPTGet ad-account ad Full creative (text copy + image / video assets + CTA) plus per-ad performance metrics over the requested window. Creative is served from Atria's server-side cache of the Meta / TikTok Marketing API responses; metrics come from one filtered platform-API call. Returns: code=0 success; code=40001 invalid path parameters or workspace context missing; code=40401 when the account or the platform_ad_id is not accessible to the caller; code=50001 when the upstream platform API is unavailable.
get_ad_account_ad
ChatGPTGet ad-account ad Full creative (text copy + image / video assets + CTA) plus per-ad performance metrics over the requested window. Creative is served from Atria's server-side cache of the Meta / TikTok Marketing API responses; metrics come from one filtered platform-API call. Returns: code=0 success; code=40001 invalid path parameters or workspace context missing; code=40401 when the account or the platform_ad_id is not accessible to the caller; code=50001 when the upstream platform API is unavailable.
get_ad_account_summary
ChatGPTGet ad-account summary Account-wide KPI total for the requested window. One row of metrics (spend / impressions / clicks / ctr / cpm / cpc / conversions / cost_per_conversion / roas), aggregated by the ad platform. Returns: code=0 success; code=40001 invalid account_id or workspace context missing; code=40401 when the account does not exist or belongs to a different workspace; code=50001 when the upstream platform API is unavailable.
get_ad_account_summary
ChatGPTGet ad-account summary Account-wide KPI total for the requested window. One row of metrics (spend / impressions / clicks / ctr / cpm / cpc / conversions / cost_per_conversion / roas), aggregated by the ad platform. Returns: code=0 success; code=40001 invalid account_id or workspace context missing; code=40401 when the account does not exist or belongs to a different workspace; code=50001 when the upstream platform API is unavailable.
get_ad_account_video_transcript
ChatGPTGet cached ad-account video transcript Cache-only lookup. Returns the existing transcript for this video if the workspace has one, or code=40401 if nothing is cached yet. Never triggers a transcription and never costs credits — use this to scan candidates before deciding which to POST and pay to transcribe. Returns: code=0 cached transcript; code=40001 invalid account_id; code=40401 no cached transcript yet / cross-workspace account / unknown video.
get_ad_account_video_transcript
ChatGPTGet cached ad-account video transcript Cache-only lookup. Returns the existing transcript for this video if the workspace has one, or code=40401 if nothing is cached yet. Never triggers a transcription and never costs credits — use this to scan candidates before deciding which to POST and pay to transcribe. Returns: code=0 cached transcript; code=40001 invalid account_id; code=40401 no cached transcript yet / cross-workspace account / unknown video.
get_board
ChatGPTGet board Fetch a single board's metadata. children is populated with the direct child boards only (one level deep). To reconstruct deeper subtrees, follow each child's board_id recursively or use GET /open/v1/boards and rebuild the tree on the client. Returns: code=0 success; code=40001 invalid board_id or workspace context missing; code=40401 when the board does not exist in the caller's workspace.
get_board
ChatGPTGet board Fetch a single board's metadata. children is populated with the direct child boards only (one level deep). To reconstruct deeper subtrees, follow each child's board_id recursively or use GET /open/v1/boards and rebuild the tree on the client. Returns: code=0 success; code=40001 invalid board_id or workspace context missing; code=40401 when the board does not exist in the caller's workspace.
get_image_generation
ChatGPTGet image-generation status Poll the status of a POST /open/v1/image-generations submission. Returns the same OpenImageGeneration shape — status is pending / processing / success / partial_success / failed, and image_ids populates once the request fans out into per-image tasks. Polling cadence: poll every 2–5 seconds. The fan-out step typically completes in 5–15s; individual images then complete asynchronously over the next 15–60s each. Terminal statuses: success (all images done), partial_success (some failed), failed (no images produced). Stop polling on any terminal state. Use individual GET /open/v1/image-generations/{generation_id}/images/{image_id} calls to fetch each image's generated URL. Returns: code=0 success; code=40001 invalid generation_id or workspace context missing; code=40401 when the generation does not belong to the caller's workspace; code=50001 when the upstream image-generation service is unavailable.
get_image_generation
ChatGPTGet image-generation status Poll the status of a POST /open/v1/image-generations submission. Returns the same OpenImageGeneration shape — status is pending / processing / success / partial_success / failed, and image_ids populates once the request fans out into per-image tasks. Polling cadence: poll every 2–5 seconds. The fan-out step typically completes in 5–15s; individual images then complete asynchronously over the next 15–60s each. Terminal statuses: success (all images done), partial_success (some failed), failed (no images produced). Stop polling on any terminal state. Use individual GET /open/v1/image-generations/{generation_id}/images/{image_id} calls to fetch each image's generated URL. Returns: code=0 success; code=40001 invalid generation_id or workspace context missing; code=40401 when the generation does not belong to the caller's workspace; code=50001 when the upstream image-generation service is unavailable.
get_image_generation_image
ChatGPTGet image-generation image Fetch a single generated image: prompt, status, aspect ratio, generated image URL (when complete). The image's URL is null until rendering finishes — keep polling until status is success or failed. generation_id in the path is a structural parent reference; ownership is enforced by the caller's workspace, and the lookup is keyed on image_id. Returns: code=0 success; code=40001 invalid path parameters or workspace context missing; code=40401 when the image does not belong to the caller's workspace; code=50001 when the upstream image-generation service is unavailable.
get_image_generation_image
ChatGPTGet image-generation image Fetch a single generated image: prompt, status, aspect ratio, generated image URL (when complete). The image's URL is null until rendering finishes — keep polling until status is success or failed. generation_id in the path is a structural parent reference; ownership is enforced by the caller's workspace, and the lookup is keyed on image_id. Returns: code=0 success; code=40001 invalid path parameters or workspace context missing; code=40401 when the image does not belong to the caller's workspace; code=50001 when the upstream image-generation service is unavailable.
get_library_ad
ChatGPTGet library ad Fetch the full record for a single ad from Atria's global ad library, including creative assets (images / videos), copy, CTA and brand metadata. Returns: code=0 success; code=40401 when no ad matches the id in the global catalog.
get_library_ad
ChatGPTGet library ad Fetch the full record for a single ad from Atria's global ad library, including creative assets (images / videos), copy, CTA and brand metadata. Returns: code=0 success; code=40401 when no ad matches the id in the global catalog.
get_library_brand
ChatGPTGet library brand Fetch full metadata for a single library brand: name, avatar, website, description, industries, ad count and source library. Returns: code=0 success; code=40401 when no brand matches the id in the global catalog.
get_library_brand
ChatGPTGet library brand Fetch full metadata for a single library brand: name, avatar, website, description, industries, ad count and source library. Returns: code=0 success; code=40401 when no brand matches the id in the global catalog.
list_ad_account_ads
ChatGPTList ad-account ads by KPI List the account's own ads with per-ad metrics, sorted by the chosen KPI and capped at limit rows. The ad platform applies the sort + limit server-side, so this stays cheap regardless of total ad count. Each item carries a thumbnail and the same metric bundle as /summary. Use the returned platform_ad_id with GET /open/v1/ad-accounts/{account_id}/ads/{platform_ad_id} to drill into a single ad's creative + text copy. Timeout / page-size guidance: the underlying Marketing-API insights call scales linearly with the requested page size; high-volume ad accounts can exceed the upstream timeout at larger limits and return code=50001. The default is limit=10 and the validated range is 1–50, but limit > 20 is risky on busy accounts. The endpoint retries once with a halved limit on upstream failure, but if that still fails, prefer smaller page sizes (e.g. limit=5) and call the endpoint multiple times with different sort_by/sort_order combinations to enumerate the ads you need rather than asking for one large page. Returns: code=0 success; code=40001 invalid query / path parameters or workspace context missing; code=40401 when the account does not exist or belongs to a different workspace; code=50001 when the upstream platform API is unavailable (including after the internal shrink-retry exhausts).
list_ad_account_ads
ChatGPTList ad-account ads by KPI List the account's own ads with per-ad metrics, sorted by the chosen KPI and capped at limit rows. The ad platform applies the sort + limit server-side, so this stays cheap regardless of total ad count. Each item carries a thumbnail and the same metric bundle as /summary. Use the returned platform_ad_id with GET /open/v1/ad-accounts/{account_id}/ads/{platform_ad_id} to drill into a single ad's creative + text copy. Timeout / page-size guidance: the underlying Marketing-API insights call scales linearly with the requested page size; high-volume ad accounts can exceed the upstream timeout at larger limits and return code=50001. The default is limit=10 and the validated range is 1–50, but limit > 20 is risky on busy accounts. The endpoint retries once with a halved limit on upstream failure, but if that still fails, prefer smaller page sizes (e.g. limit=5) and call the endpoint multiple times with different sort_by/sort_order combinations to enumerate the ads you need rather than asking for one large page. Returns: code=0 success; code=40001 invalid query / path parameters or workspace context missing; code=40401 when the account does not exist or belongs to a different workspace; code=50001 when the upstream platform API is unavailable (including after the internal shrink-retry exhausts).
list_ad_accounts
ChatGPTList connected ad accounts List Meta and TikTok ad accounts the calling workspace has connected. Use the returned id as account_id on the per-account endpoints (/open/v1/ad-accounts/{account_id}/summary, /open/v1/ad-accounts/{account_id}/ads, /open/v1/ad-accounts/{account_id}/ads/{platform_ad_id}). Scoped to the workspace bound to your API key. No pagination — workspaces rarely connect more than a handful of accounts. Returns: code=0 success; code=40001 workspace context missing.
list_ad_accounts
ChatGPTList connected ad accounts List Meta and TikTok ad accounts the calling workspace has connected. Use the returned id as account_id on the per-account endpoints (/open/v1/ad-accounts/{account_id}/summary, /open/v1/ad-accounts/{account_id}/ads, /open/v1/ad-accounts/{account_id}/ads/{platform_ad_id}). Scoped to the workspace bound to your API key. No pagination — workspaces rarely connect more than a handful of accounts. Returns: code=0 success; code=40001 workspace context missing.
list_board_ads
ChatGPTList board ads List the ads saved into a specific board. Filters here apply only to the ads in that board, not the global ad library. Returns: code=0 success; code=40001 invalid board_id or workspace context missing; code=40401 when the board is not accessible to the caller's workspace.
list_board_ads
ChatGPTList board ads List the ads saved into a specific board. Filters here apply only to the ads in that board, not the global ad library. Returns: code=0 success; code=40001 invalid board_id or workspace context missing; code=40401 when the board is not accessible to the caller's workspace.
list_boards
ChatGPTList boards List all boards belonging to the calling workspace as a flat array, depth-first ordered (parent then its descendants then the next sibling). Reconstruct the tree on the client by following parent_id links — children is always empty on this surface to avoid duplicating the same nodes across the response. Top-level boards carry parent_id == workspace_id as a sentinel. Page-based pagination — pass page=2, page=3, ... to walk the list. Each board is returned exactly once across all pages. Returns: code=0 success; code=40001 workspace context missing.
list_boards
ChatGPTList boards List all boards belonging to the calling workspace as a flat array, depth-first ordered (parent then its descendants then the next sibling). Reconstruct the tree on the client by following parent_id links — children is always empty on this surface to avoid duplicating the same nodes across the response. Top-level boards carry parent_id == workspace_id as a sentinel. Page-based pagination — pass page=2, page=3, ... to walk the list. Each board is returned exactly once across all pages. Returns: code=0 success; code=40001 workspace context missing.
list_followed_library_brands
ChatGPTList followed library brands List library brands the calling workspace is following / tracking. These are the catalog brands surfaced in the workspace's competitor view — same data pool as GET /open/v1/brand-library/search, filtered to the follow relation. Scoped to the workspace bound to your API key. Returns: code=0 success; code=40001 workspace context missing.
list_followed_library_brands
ChatGPTList followed library brands List library brands the calling workspace is following / tracking. These are the catalog brands surfaced in the workspace's competitor view — same data pool as GET /open/v1/brand-library/search, filtered to the follow relation. Scoped to the workspace bound to your API key. Returns: code=0 success; code=40001 workspace context missing.
list_library_brand_ads
ChatGPTList library brand ads List ads from Atria's global ad library that belong to a specific library brand. Filters here apply to that brand's ads only. Returns: code=0 success; code=40401 when the brand does not exist in the global catalog.
list_library_brand_ads
ChatGPTList library brand ads List ads from Atria's global ad library that belong to a specific library brand. Filters here apply to that brand's ads only. Returns: code=0 success; code=40401 when the brand does not exist in the global catalog.
list_owned_brands
ChatGPTList owned brands Return the calling workspace's own brand profiles — the entities you create under Atria's brand-management UI. Each carries the brand id, name, industries, logo, website, color palette and fonts. Use the returned id as brand_id for the image generation endpoints. Distinct from GET /open/v1/brand-library/followed (catalog brands the workspace tracks) and GET /open/v1/brand-library/search (global ad-library catalog). Returns: code=0 success; code=40001 workspace context missing.
list_owned_brands
ChatGPTList owned brands Return the calling workspace's own brand profiles — the entities you create under Atria's brand-management UI. Each carries the brand id, name, industries, logo, website, color palette and fonts. Use the returned id as brand_id for the image generation endpoints. Distinct from GET /open/v1/brand-library/followed (catalog brands the workspace tracks) and GET /open/v1/brand-library/search (global ad-library catalog). Returns: code=0 success; code=40001 workspace context missing.
list_saved_library_ads
ChatGPTList saved library ads List ads the calling workspace has saved from the global ad library. Each item carries the standard ad fields plus a saved_details block (saved_at, boards, tags). Scoped to the workspace bound to your API key. Use the response cursor to paginate. Returns: code=0 success; code=40001 invalid query parameters.
list_saved_library_ads
ChatGPTList saved library ads List ads the calling workspace has saved from the global ad library. Each item carries the standard ad fields plus a saved_details block (saved_at, boards, tags). Scoped to the workspace bound to your API key. Use the response cursor to paginate. Returns: code=0 success; code=40001 invalid query parameters.
ping
ChatGPTHealth-check tool that always returns 'pong'. Useful for verifying the MCP connection without invoking a real API.
ping
ChatGPTHealth-check tool that always returns 'pong'. Useful for verifying the MCP connection without invoking a real API.
search_library_ads
ChatGPTSearch ad library Search Atria's global ad library across all platforms. Returns a paginated list of ads matching the given filters, ordered by the chosen sort order. Use the returned cursor value as the cursor query parameter on the next request to fetch the following page. A null cursor in the response means there are no more results. Returns: code=0 success; code=40001 invalid query parameters.
search_library_ads
ChatGPTSearch ad library Search Atria's global ad library across all platforms. Returns a paginated list of ads matching the given filters, ordered by the chosen sort order. Use the returned cursor value as the cursor query parameter on the next request to fetch the following page. A null cursor in the response means there are no more results. Returns: code=0 success; code=40001 invalid query parameters.
search_library_brands
ChatGPTSearch brand library Search Atria's global brand library by name. Results span all ingested sources (Meta and TikTok ad libraries), ordered by ad volume (ad_num) descending. Each result's id carries an origin prefix: m* for Meta-origin brands and t* for TikTok-origin. Use that id directly when calling GET /open/v1/brand-library/{brand_id} or GET /open/v1/brand-library/{brand_id}/ads. Returns: code=0 success; code=40001 invalid query parameters.
search_library_brands
ChatGPTSearch brand library Search Atria's global brand library by name. Results span all ingested sources (Meta and TikTok ad libraries), ordered by ad volume (ad_num) descending. Each result's id carries an origin prefix: m* for Meta-origin brands and t* for TikTok-origin. Use that id directly when calling GET /open/v1/brand-library/{brand_id} or GET /open/v1/brand-library/{brand_id}/ads. Returns: code=0 success; code=40001 invalid query parameters.
transcribe_ad_account_video
ChatGPTTranscribe ad-account video Transcribe a workspace-owned ad video to text. Synchronous: blocks until the transcript is ready (~30-60 seconds on a cache miss, near-instant on a hit). POST vs GET semantics. POST on this path triggers transcription; GET on the same path is a pure cache lookup that never triggers and never charges. Pick the verb by intent. Caching. Transcripts are cached per workspace + video content-hash, so repeat calls in the same workspace return the cached transcript at 0 credit. Credits. Cache hit: 0 credits. Cache miss: charged at the same rate as the in-app video-transcription feature — trigger it once in Atria's web app to see the current per-call credit cost. The charge is auto-refunded if transcription itself fails. Returns: code=0 success (status=success with transcript, or status=failure with error populated and credits refunded); code=40001 invalid account_id; code=40401 cross-workspace / unknown account / video not found on the platform; code=42900 when the workspace is out of credits for this feature.
transcribe_ad_account_video
ChatGPTTranscribe ad-account video Transcribe a workspace-owned ad video to text. Synchronous: blocks until the transcript is ready (~30-60 seconds on a cache miss, near-instant on a hit). POST vs GET semantics. POST on this path triggers transcription; GET on the same path is a pure cache lookup that never triggers and never charges. Pick the verb by intent. Caching. Transcripts are cached per workspace + video content-hash, so repeat calls in the same workspace return the cached transcript at 0 credit. Credits. Cache hit: 0 credits. Cache miss: charged at the same rate as the in-app video-transcription feature — trigger it once in Atria's web app to see the current per-call credit cost. The charge is auto-refunded if transcription itself fails. Returns: code=0 success (status=success with transcript, or status=failure with error populated and credits refunded); code=40001 invalid account_id; code=40401 cross-workspace / unknown account / video not found on the platform; code=42900 when the workspace is out of credits for this feature.