Input schema
{
"type": "object",
"properties": {
"brand_id": {
"type": "string",
"description": "The UUID of the brand (optional, defaults to current brand)"
},
"start_date": {
"type": "string",
"description": "Start date in YYYY-MM-DD format (optional, defaults to last 7 days)"
},
"end_date": {
"type": "string",
"description": "End date in YYYY-MM-DD format (optional, defaults to today)"
},
"topic_id": {
"type": "string",
"description": "Filter by topic ID (UUID). PREFERRED over search when filtering by topic - use this when you have topic_id from getBrandTopics or user message."
},
"prompt_id": {
"type": "string",
"description": "Filter by prompt ID(s). Can be a single UUID or comma-separated list of UUIDs. Use this to get citations for specific prompts (e.g., prompts in a cluster)."
},
"persona_id": {
"type": "string",
"description": "Filter by Prompt Studio persona UUID (restricts to that persona's assigned active regular prompts)."
},
"funnel": {
"type": "string",
"enum": [
"awareness",
"consideration",
"conversion"
],
"description": "Filter by funnel stage"
},
"platform": {
"type": "string",
"description": "Filter by AI platform (e.g., 'chatgpt', 'gemini', 'perplexity', 'grok', 'copilot', 'openai', 'google-ai-mode', 'googleaioverview'). Common values: chatgpt, gemini, perplexity, grok, copilot, googleaioverview"
},
"platforms": {
"type": "string",
"description": "Filter by multiple AI platforms in one query (comma-separated, e.g. 'chatgpt,gemini,google-ai-mode'). Prefer over repeated single-platform calls."
},
"per_platform_url_cap": {
"type": "integer",
"description": "With multi-platform platforms filter, keep only the top N citation URLs per platform before merging across platforms. Used by OffSite earned-media analysis to preserve legacy per-platform top-N semantics in one query."
},
"model": {
"type": "string",
"description": "Filter by AI model name (e.g., 'gpt-5', 'gpt-5-t-mini', 'gemini-2.5-flash', 'grok-3', 'grok-4-auto', 'perplexity'). Model names vary by platform"
},
"media_type": {
"type": "string",
"enum": [
"Reference & Informational",
"Public & Institutional",
"Competitor",
"Earned Media",
"Commercial Media",
"Owned Media",
"Shared Media"
],
"description": "Filter by media type. Valid values: 'Reference & Informational' (reference sites, informational content), 'Public & Institutional' (public institutions, government sites), 'Competitor' (competitor websites), 'Earned Media' (unpaid media coverage like press mentions, reviews, articles), 'Commercial Media' (commercial/advertising media), 'Owned Media' (content you own/control like your website, blog), 'Shared Media' (shared/social platforms)"
},
"is_mentioning_brand": {
"type": "string",
"enum": [
"true",
"false",
"unknown"
],
"description": "Filter citations by whether the URL mentions the brand. 'true' = only URLs that mention the brand; 'false' = only URLs that do not mention the brand; 'unknown' = only URLs where brand mention status is unknown. Omit to return all citations."
},
"favorite_competitor_mentioned_not_brand": {
"type": "string",
"enum": [
"true",
"false"
],
"description": "Filter by competitor-only: 'true' = only URLs where a favorite competitor is mentioned in scraped content but the brand is not; 'false' = only URLs that do not match that. Response fields isMentioningAnyFavoriteCompetitor and isFavoriteCompetitorMentionedNotBrand may be null until backend data is available."
},
"exclude_domains": {
"type": "string",
"description": "Exclude citations from these domains. Comma-separated list of domain names (e.g. 'example.com, foo.org'). Case-insensitive."
},
"domain": {
"type": "string",
"description": "Filter URL rows to a specific domain (case-insensitive, supports apex/subdomain matching in backend)."
},
"view": {
"type": "string",
"enum": [
"urls",
"domains"
],
"description": "Result mode: 'urls' (default) for URL-level rows, or 'domains' for grouped domain rows."
},
"search": {
"type": "string",
"description": "Search query for URL or title text. Use ONLY when you don't have topic_id or prompt_id filters available. Prefer ID-based filters (topic_id, prompt_id) over search when possible."
},
"include_total": {
"type": "boolean",
"description": "When true (default in backend), include totalCount in pagination metadata."
},
"count_only": {
"type": "boolean",
"description": "When true, only returns pagination totals (no data rows). Useful to fetch counts quickly."
},
"page": {
"type": "number",
"description": "Page number for pagination"
},
"page_size": {
"type": "number",
"description": "Number of citations per page. Maximum allowed is 200 to prevent token limit issues. Use values up to 200 when user wants comprehensive data, 'all' results, or analysis of top/most items. Default is 50."
},
"sort_by": {
"type": "string",
"enum": [
"url",
"domain",
"mediaType",
"title",
"citationsCount",
"domainCitationCount",
"domainUrlCount",
"isMentioningBrand",
"isFavoriteCompetitorMentionedNotBrand",
"domainBrandMentions",
"domainCompetitorOnlyMentions",
"domainCompetitorOnlyPresence",
"shareOfCitation",
"shareOfCitationDomain",
"promptsImpactedByUrl",
"promptsImpactedByDomain",
"lastSeenAt",
"firstSeenAt"
],
"description": "Field to sort by. ALWAYS use appropriate sorting based on query intent: 'citationsCount' for most/least cited (with order='desc' for most, order='asc' for least), 'domainBrandMentions' for most/least URLs mentioning brand per domain (with order='desc' for most, order='asc' for least), 'shareOfCitation' for highest/lowest share (with order='desc' for highest, order='asc' for lowest), 'lastSeenAt' for recent/oldest (with order='desc' for recent, order='asc' for oldest), 'firstSeenAt' for earliest/latest first appearance (with order='asc' for earliest, order='desc' for latest), 'isFavoriteCompetitorMentionedNotBrand' for competitor-only flag, 'url' or 'domain' for alphabetical (with order='asc'). NEVER rely on defaults - always specify sort_by and order. Valid values: url, domain, mediaType, title, citationsCount, domainCitationCount, isMentioningBrand, isFavoriteCompetitorMentionedNotBrand, domainBrandMentions, shareOfCitation, shareOfCitationDomain, promptsImpactedByUrl, promptsImpactedByDomain, lastSeenAt, firstSeenAt"
},
"order": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "Sort order: 'asc' for ascending or 'desc' for descending. ALWAYS specify: Use 'desc' for top/most/highest/recent, 'asc' for least/lowest/oldest/alphabetical. Must ALWAYS be provided when sort_by is used - never rely on defaults."
},
"include_prompt_ids": {
"type": "boolean",
"description": "When true and prompt_id is set, response includes promptIds (array of prompt UUIDs) per citation row for client-side batching (e.g. split citations by cluster)."
}
},
"required": []
}