MCP App Store
Business
Adthena icon

Adthena

by Adthena Ltd

Overview

Connect to the Adthena competitive intelligence platform to analyze paid search markets, monitor competitors, and uncover search opportunities directly inside ChatGPT. Explore market share trends, compare advertiser visibility, discover high-value search terms, analyze ad copy strategies, track AI Overview presence, and detect potential trademark infringements using natural language queries. Ask questions like “Who is gaining market share in running shoes?”, “What ad copy themes are competitors using?”, or “Which search terms are driving growth in this category?” and receive structured, data-driven insights instantly. The app provides authoritative competitive search intelligence across market analysis, search optimization, brand protection, and AI search visibility. Requires an active Adthena subscription and authenticates securely via OAuth using your existing Adthena credentials.

Tools

get_account_settings

ChatGPT
Get account configuration data: locations, search term groups, and group metrics. Call "locations" or "search_term_groups" first to discover values for use as filters in other tools. setting_type options: - "locations": All locations in the account hierarchy. No extra params needed. - "search_term_groups": Group hierarchy with metadata. Paginated. - "search_term_groups_metrics": Groups with performance metrics. Requires start_date, end_date, device. Paginated. Response fields (search_term_groups): group_name, group_type, created_at, created_by, modified_at, modified_by, search_term_count. Response fields (search_term_groups_metrics): group_name, group_type, estimated_impressions, share_of_clicks, share_of_spend, average_position, competitor_count. order_by for groups: "group_name", "group_type", "created_at", "created_by", "modified_at", "modified_by". order_by for metrics: "total_estimated_clicks", "group_name", "total_estimated_impressions", "total_estimated_spend", "avg_position", "competitor_count". See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_account_settings

ChatGPT
Get account configuration data: locations, search term groups, and group metrics. Call "locations" or "search_term_groups" first to discover values for use as filters in other tools. setting_type options: - "locations": All locations in the account hierarchy. No extra params needed. - "search_term_groups": Group hierarchy with metadata. Paginated. - "search_term_groups_metrics": Groups with performance metrics. Requires start_date, end_date, device. Paginated. Response fields (search_term_groups): group_name, group_type, created_at, created_by, modified_at, modified_by, search_term_count. Response fields (search_term_groups_metrics): group_name, group_type, estimated_impressions, share_of_clicks, share_of_spend, average_position, competitor_count. order_by for groups: "group_name", "group_type", "created_at", "created_by", "modified_at", "modified_by". order_by for metrics: "total_estimated_clicks", "group_name", "total_estimated_impressions", "total_estimated_spend", "avg_position", "competitor_count". See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_ad_hijacking

ChatGPT
Get ad hijacking detection data. Workflow: Call "configurations" first to get IDs, then use configuration_id with "incidents" or "summary". report_type options: - "configurations" (default): Hijacking rule configs. Only needs account_id. Paginated. - "incidents": Detailed hijacking records. Requires configuration_id, start_date, end_date. Paginated. - "summary": Aggregated stats with top hijackers. Requires configuration_id, start_date, end_date. Response fields (configurations): name, id, created/modified dates, enabled status. Response fields (incidents): one object per hijacking instance - geo_code, hijacker_id, ad_url, final_url, date, domain, device, search_term, utm_params, evidence_link, redirect_count, and a nested redirects[] chain. Each redirects[] hop has order_num, redirect_url, affiliate_network_name, affiliate_id, sub_id, date. Results are sorted by date, newest first by default; pass order_direction to override. Response fields (summary): total_incidents, unique_hijackers, device_breakdown, top_hijackers. Use affiliate_text to search affiliate_id/sub_id. Use network_name to filter by affiliate_network_name. See docs://date-rules for date handling.

get_ad_hijacking

ChatGPT
Get ad hijacking detection data. Workflow: Call "configurations" first to get IDs, then use configuration_id with "incidents" or "summary". report_type options: - "configurations" (default): Hijacking rule configs. Only needs account_id. Paginated. - "incidents": Detailed hijacking records. Requires configuration_id, start_date, end_date. Paginated. - "summary": Aggregated stats with top hijackers. Requires configuration_id, start_date, end_date. Response fields (configurations): name, id, created/modified dates, enabled status. Response fields (incidents): one object per hijacking instance - geo_code, hijacker_id, ad_url, final_url, date, domain, device, search_term, utm_params, evidence_link, redirect_count, and a nested redirects[] chain. Each redirects[] hop has order_num, redirect_url, affiliate_network_name, affiliate_id, sub_id, date. Results are sorted by date, newest first by default; pass order_direction to override. Response fields (summary): total_incidents, unique_hijackers, device_breakdown, top_hijackers. Use affiliate_text to search affiliate_id/sub_id. Use network_name to filter by affiliate_network_name. See docs://date-rules for date handling.

get_ads

ChatGPT
Get the most frequent ad copies or product listing ads. ad_format options: - "text" (default): Top text ads. Use ad_type to control which: ["textad"], ["organic"], or both. - "pla": Top product listing ads. Requires PLA enabled. ad_type not applicable. Response fields (text): ad_id, ad_type, device, location_name, competitor, title, display_text, description1, description2, frequency, first_seen, last_seen, estimated_impressions, search_terms, best_position, average_position. Response fields (pla): ad_id, device, location_name, competitor, title, display_text, frequency, first_seen, last_seen, estimated_impressions, search_terms, price, old_price, price_numeric, old_price_numeric, rating, shopping_tag, badge, image, comparison_shopping_services (CSS — Comparison Shopping Services — provider that placed the ad, e.g. "Google Shopping" or a third-party CSS partner; may be null), return_policy. order_by options for text: "frequency", "estimated_impressions" (default). order_by options for pla: "frequency", "estimated_impressions" (default), "price". Use ad_text/excluded_ad_text for text search. Use is_new=true for ads first seen in last 7 days, is_current=true for last seen in last 7 days (text only). Data is always segmented by device and ad_type. See docs://date-rules for date and time_period handling.

get_ads

ChatGPT
Get the most frequent ad copies or product listing ads. ad_format options: - "text" (default): Top text ads. Use ad_type to control which: ["textad"], ["organic"], or both. - "pla": Top product listing ads. Requires PLA enabled. ad_type not applicable. Response fields (text): ad_id, ad_type, device, location_name, competitor, title, display_text, description1, description2, frequency, first_seen, last_seen, estimated_impressions, search_terms, best_position, average_position. Response fields (pla): ad_id, device, location_name, competitor, title, display_text, frequency, first_seen, last_seen, estimated_impressions, search_terms, price, old_price, price_numeric, old_price_numeric, rating, shopping_tag, badge, image, comparison_shopping_services (CSS — Comparison Shopping Services — provider that placed the ad, e.g. "Google Shopping" or a third-party CSS partner; may be null), return_policy. order_by options for text: "frequency", "estimated_impressions" (default). order_by options for pla: "frequency", "estimated_impressions" (default), "price". Use ad_text/excluded_ad_text for text search. Use is_new=true for ads first seen in last 7 days, is_current=true for last seen in last 7 days (text only). Data is always segmented by device and ad_type. See docs://date-rules for date and time_period handling.

get_ai_ads_intelligence

ChatGPT
Get AI Ads Intelligence data: how often the brand and competitors appear in paid LLM ad placements (ChatGPT and Google AI). This is a separate surface from get_llm_performance — it tracks PAID AD placements inside LLM responses, not organic citations. Engines are "chatgpt" and "googleai" (NOT "perplexity"). Requires the account to have llm_ads_enabled; per-engine entitlement flags further gate which engines respond — disabled engines are silently dropped, and a call with no entitled engines returns 403. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any AI Ads prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive — so historical metrics can reference prompts no longer returned by get_llm_ad_prompts(). The prompt_group filter follows the same active-during-window rule. The prompt filter is different: it matches the underlying scrape data directly, so a fully-historic prompt name still matches as long as scrape rows exist for it. report_type options: - "performance_trends" (default): one segment per (engine, location) bucket with period-level summary metrics (ad_presence_rate, prompts_with_ads, total_prompts, competitors_detected, top_competitor, top_competitor_detection_rate) and a daily time_series (date, ad_presence_rate, prompts_with_ads, competitors_detected). Unpaginated. - "advertiser_share_trends": one segment per (engine, location) containing a competitors list — the brand row first, then top competitors by detection count (cap via max_number_of_domains, default 5). Each entry carries a period share_of_ads and a daily time_series (date, share_of_ads). Unpaginated. - "prompts_analysis": one row per prompt with brand vs competitor rates (your_ads_detection_rate, top_competitor_rate, avg_competitor_detection_rate, you_vs_top_competitor_rate), the competitors list, competitors_count, and is_greenfield flag. Paginated. prompt_status (prompts_analysis only): "with_brand_ads" = prompts where the brand has ads; "gap" = prompts where competitors have ads but the brand does not; "all" = both (default). segment_by=["engine"] splits the trend results per LLM engine; empty default aggregates engines into a single comma-joined label like "chatgpt, googleai". Ignored for prompts_analysis. max_number_of_domains (advertiser_share_trends only): 1-100, default 5. The brand row is always returned in addition to these competitors. Sorting (prompts_analysis only): order_by one of "prompt", "your_ads_detection_rate" (default), "top_competitor_rate", "avg_competitor_detection_rate", "competitors_count". order_direction defaults to "desc". Default page_size is 0 (all results). AI Ads Intelligence volumes are small; pass a specific page_size only if you need smaller pages. DATA INTERPRETATION — how to read the response (fields, omissions, zero-fill): - All rate fields (*_rate, share_of_ads) are in [0, 1]. - The API NEVER returns JSON null. Undefined values are OMITTED FROM THE RESPONSE (the key is absent), not serialized as null. To detect "undefined", check for key absence — field is None in JS/Python after parsing because the key doesn't exist, not because it was explicitly null. - ad_presence_rate (both period-level and per-day in time_series) is ALWAYS PRESENT and numeric — the DAO zero-fills buckets with no data and substitutes 0 for any undefined value. A 0 is therefore AMBIGUOUS: it can mean "no scrapes occurred" OR "scrapes occurred but the brand was not detected". Use the corresponding total_prompts field at the same level to disambiguate (never use the period-level value to interpret a daily value, or vice versa): - PERIOD level: each segment exposes a total_prompts. total_prompts > 0 ⇒ scrapes occurred during the period ⇒ ad_presence_rate = 0 is a real "brand absent across the period" signal. total_prompts = 0 ⇒ no scrapes occurred in the period ⇒ the rate carries no signal; do not…

get_ai_ads_intelligence

ChatGPT
Get AI Ads Intelligence data: how often the brand and competitors appear in paid LLM ad placements (ChatGPT and Google AI). This is a separate surface from get_llm_performance — it tracks PAID AD placements inside LLM responses, not organic citations. Engines are "chatgpt" and "googleai" (NOT "perplexity"). Requires the account to have llm_ads_enabled; per-engine entitlement flags further gate which engines respond — disabled engines are silently dropped, and a call with no entitled engines returns 403. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any AI Ads prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive — so historical metrics can reference prompts no longer returned by get_llm_ad_prompts(). The prompt_group filter follows the same active-during-window rule. The prompt filter is different: it matches the underlying scrape data directly, so a fully-historic prompt name still matches as long as scrape rows exist for it. report_type options: - "performance_trends" (default): one segment per (engine, location) bucket with period-level summary metrics (ad_presence_rate, prompts_with_ads, total_prompts, competitors_detected, top_competitor, top_competitor_detection_rate) and a daily time_series (date, ad_presence_rate, prompts_with_ads, competitors_detected). Unpaginated. - "advertiser_share_trends": one segment per (engine, location) containing a competitors list — the brand row first, then top competitors by detection count (cap via max_number_of_domains, default 5). Each entry carries a period share_of_ads and a daily time_series (date, share_of_ads). Unpaginated. - "prompts_analysis": one row per prompt with brand vs competitor rates (your_ads_detection_rate, top_competitor_rate, avg_competitor_detection_rate, you_vs_top_competitor_rate), the competitors list, competitors_count, and is_greenfield flag. Paginated. prompt_status (prompts_analysis only): "with_brand_ads" = prompts where the brand has ads; "gap" = prompts where competitors have ads but the brand does not; "all" = both (default). segment_by=["engine"] splits the trend results per LLM engine; empty default aggregates engines into a single comma-joined label like "chatgpt, googleai". Ignored for prompts_analysis. max_number_of_domains (advertiser_share_trends only): 1-100, default 5. The brand row is always returned in addition to these competitors. Sorting (prompts_analysis only): order_by one of "prompt", "your_ads_detection_rate" (default), "top_competitor_rate", "avg_competitor_detection_rate", "competitors_count". order_direction defaults to "desc". Default page_size is 0 (all results). AI Ads Intelligence volumes are small; pass a specific page_size only if you need smaller pages. DATA INTERPRETATION — how to read the response (fields, omissions, zero-fill): - All rate fields (*_rate, share_of_ads) are in [0, 1]. - The API NEVER returns JSON null. Undefined values are OMITTED FROM THE RESPONSE (the key is absent), not serialized as null. To detect "undefined", check for key absence — field is None in JS/Python after parsing because the key doesn't exist, not because it was explicitly null. - ad_presence_rate (both period-level and per-day in time_series) is ALWAYS PRESENT and numeric — the DAO zero-fills buckets with no data and substitutes 0 for any undefined value. A 0 is therefore AMBIGUOUS: it can mean "no scrapes occurred" OR "scrapes occurred but the brand was not detected". Use the corresponding total_prompts field at the same level to disambiguate (never use the period-level value to interpret a daily value, or vice versa): - PERIOD level: each segment exposes a total_prompts. total_prompts > 0 ⇒ scrapes occurred during the period ⇒ ad_presence_rate = 0 is a real "brand absent across the period" signal. total_prompts = 0 ⇒ no scrapes occurred in the period ⇒ the rate carries no signal; do not…

get_ai_overview

ChatGPT
Get AI Overview appearance data and frequency metrics. IMPORTANT: start_date must be 2025-07-31 or later. report_type options: - "overview": Time series of AI Overview appearance frequency. No pagination. - "search_terms": Per-term AI Overview data. Paginated. Response fields (overview): date, appearances, frequency, overall_frequency, intent category shares, word count buckets. Premium accounts also get ad position data. Response fields (search_terms): search_term, device, impressions, frequency, intent categories, word count. term_type for search_terms: ["wmv"] (default) or ["premium"] (premium-enabled accounts only). order_by for search_terms: "search_term", "impressions", "frequency". No competitor, ad_type, is_whole_market, or adwords_campaign filters on this endpoint. See docs://date-rules for date and time_period handling. See docs://data-access for segment_by details.

get_ai_overview

ChatGPT
Get AI Overview appearance data and frequency metrics. IMPORTANT: start_date must be 2025-07-31 or later. report_type options: - "overview": Time series of AI Overview appearance frequency. No pagination. - "search_terms": Per-term AI Overview data. Paginated. Response fields (overview): date, appearances, frequency, overall_frequency, intent category shares, word count buckets. Premium accounts also get ad position data. Response fields (search_terms): search_term, device, impressions, frequency, intent categories, word count. term_type for search_terms: ["wmv"] (default) or ["premium"] (premium-enabled accounts only). order_by for search_terms: "search_term", "impressions", "frequency". No competitor, ad_type, is_whole_market, or adwords_campaign filters on this endpoint. See docs://date-rules for date and time_period handling. See docs://data-access for segment_by details.

get_ai_overview_content

ChatGPT
Get AI Overview citation analysis: sentiment, themes, and competitor citations. Premium-only. start_date must be within the last 30 days. Dates in YYYY-MM-DD format. report_type options: - "content": Citation frequency, sentiment breakdown (favourable/unfavourable/neutral/comparative/inconclusive), theme breakdown (how_to/comparison/problem_solve/review/faq/news), top 5 cited domains by position, and daily citation frequency time series. No pagination. - "competitors": Top cited domains with overall citation share and daily time series per domain. No pagination. Use max_number_of_domains to control how many domains are returned (default 10). max_number_of_domains only applies to report_type="competitors" (1-1000, default 10). No competitor, location, or term_type filters on these endpoints. See docs://data-access for segment_by and filtering details.

get_ai_overview_content

ChatGPT
Get AI Overview citation analysis: sentiment, themes, and competitor citations. Premium-only. start_date must be within the last 30 days. Dates in YYYY-MM-DD format. report_type options: - "content": Citation frequency, sentiment breakdown (favourable/unfavourable/neutral/comparative/inconclusive), theme breakdown (how_to/comparison/problem_solve/review/faq/news), top 5 cited domains by position, and daily citation frequency time series. No pagination. - "competitors": Top cited domains with overall citation share and daily time series per domain. No pagination. Use max_number_of_domains to control how many domains are returned (default 10). max_number_of_domains only applies to report_type="competitors" (1-1000, default 10). No competitor, location, or term_type filters on these endpoints. See docs://data-access for segment_by and filtering details.

get_ai_overview_impact

ChatGPT
Get AI Overview impact on CTR and CPC with frequency breakdown. Premium-only. start_date must be within the last 30 days. Dates in YYYY-MM-DD format. report_type options: - "impact": Aggregate CTR/CPC with vs without AI Overview, per-frequency-bucket breakdown (CTR/CPC by AIO frequency), and daily time series. No pagination. - "search_terms": Paginated list of search terms with their frequency bucket, AIO frequency, estimated AIO impressions, and search volume. Use bucket_label to filter by specific frequency buckets. bucket_label values (for search_terms): "0", ">0-25", ">25-50", ">50-75", ">75-<100", "100". Omit for all buckets. For "impact": device and segment_by are supported. For "search_terms": device is fixed to both desktop+mobile (not selectable). order_by defaults to "search_volume". No competitor, location, or term_type filters on these endpoints. See docs://data-access for segment_by and filtering details.

get_ai_overview_impact

ChatGPT
Get AI Overview impact on CTR and CPC with frequency breakdown. Premium-only. start_date must be within the last 30 days. Dates in YYYY-MM-DD format. report_type options: - "impact": Aggregate CTR/CPC with vs without AI Overview, per-frequency-bucket breakdown (CTR/CPC by AIO frequency), and daily time series. No pagination. - "search_terms": Paginated list of search terms with their frequency bucket, AIO frequency, estimated AIO impressions, and search volume. Use bucket_label to filter by specific frequency buckets. bucket_label values (for search_terms): "0", ">0-25", ">25-50", ">50-75", ">75-<100", "100". Omit for all buckets. For "impact": device and segment_by are supported. For "search_terms": device is fixed to both desktop+mobile (not selectable). order_by defaults to "search_volume". No competitor, location, or term_type filters on these endpoints. See docs://data-access for segment_by and filtering details.

get_auto_takedown

ChatGPT
Get Adthena-detected trademark cases — the inputs to Google's Auto-Takedown enforcement system. These are detections, not enforcement outcomes. After a user reports a detection from the Adthena app, the downstream outcome (successful / unsuccessful / pending) is returned by get_trademark_takedowns — a separate tool. Detection → report → enforcement outcome. For the general SERP Tracker rule family (non-trademark rule matches), use get_serp_tracker instead. report_type options: - "matches" (default): Detailed detection records. Requires start_date/end_date. Paginated. - "summary": Aggregated stats including total_matches, unique_competitors, top-N competitors by match_count. Requires start_date/end_date. - "rules": Auto-Takedown rule configurations for the account. No dates needed. Paginated. Response fields (matches): name (rule name), id, date_time, device, location_name, competitor, search_term, title, description1, description2, click_url, destination_url, display_url, position, evidence_link. Response fields (summary): total_matches, unique_competitors, unique_search_terms, desktop_count, mobile_count, top_competitors (each with competitor + match_count). Response fields (rules): id, name, device, enabled, location_name, email_count. order_by for matches: "name", "search_term", "date_time" (default). order_by for rules: "name". See docs://date-rules for date handling.

get_auto_takedown

ChatGPT
Get Adthena-detected trademark cases — the inputs to Google's Auto-Takedown enforcement system. These are detections, not enforcement outcomes. After a user reports a detection from the Adthena app, the downstream outcome (successful / unsuccessful / pending) is returned by get_trademark_takedowns — a separate tool. Detection → report → enforcement outcome. For the general SERP Tracker rule family (non-trademark rule matches), use get_serp_tracker instead. report_type options: - "matches" (default): Detailed detection records. Requires start_date/end_date. Paginated. - "summary": Aggregated stats including total_matches, unique_competitors, top-N competitors by match_count. Requires start_date/end_date. - "rules": Auto-Takedown rule configurations for the account. No dates needed. Paginated. Response fields (matches): name (rule name), id, date_time, device, location_name, competitor, search_term, title, description1, description2, click_url, destination_url, display_url, position, evidence_link. Response fields (summary): total_matches, unique_competitors, unique_search_terms, desktop_count, mobile_count, top_competitors (each with competitor + match_count). Response fields (rules): id, name, device, enabled, location_name, email_count. order_by for matches: "name", "search_term", "date_time" (default). order_by for rules: "name". See docs://date-rules for date handling.

get_brand_activator

ChatGPT
Get Brand Activator data showing automated bid management activity and savings. CRITICAL: Savings UP = fewer competitors (good). Savings DOWN = more competitors (bad). Do NOT invert this. See docs://workflows § Brand Activator Analysis for full interpretation rules and common mistakes to avoid. IMPORTANT: Only search_term filtering available (no competitor/group/location filters). report_type options: - "activity_log": Activity records. Paginated. LIMITED TO LAST 60 DAYS. - "daily_savings": Daily savings per search term. Paginated. No date restriction. - "daily_savings_summary": Aggregated savings overview. Uses top_n. No date restriction. Response fields (activity_log): search_term, action, reason, domains, timestamp. Response fields (daily_savings): search_term, date, currency, savings, in_negative_list, competitor_count. Response fields (daily_savings_summary): total_savings, currency, total_days, avg_daily_savings, max_daily_savings, total_search_terms, avg_competitor_count, avg_time_in_negative_list_pct, top_search_terms. See docs://workflows § Brand Activator Analysis for interpretation rules.

get_brand_activator

ChatGPT
Get Brand Activator data showing automated bid management activity and savings. CRITICAL: Savings UP = fewer competitors (good). Savings DOWN = more competitors (bad). Do NOT invert this. See docs://workflows § Brand Activator Analysis for full interpretation rules and common mistakes to avoid. IMPORTANT: Only search_term filtering available (no competitor/group/location filters). report_type options: - "activity_log": Activity records. Paginated. LIMITED TO LAST 60 DAYS. - "daily_savings": Daily savings per search term. Paginated. No date restriction. - "daily_savings_summary": Aggregated savings overview. Uses top_n. No date restriction. Response fields (activity_log): search_term, action, reason, domains, timestamp. Response fields (daily_savings): search_term, date, currency, savings, in_negative_list, competitor_count. Response fields (daily_savings_summary): total_savings, currency, total_days, avg_daily_savings, max_daily_savings, total_search_terms, avg_competitor_count, avg_time_in_negative_list_pct, top_search_terms. See docs://workflows § Brand Activator Analysis for interpretation rules.

get_competitor_overlap

ChatGPT
Get search term overlap analysis between your domain and each competitor. Shows shared search terms, overlap ratios, and click estimates per competitor. Response fields: competitor, device, ad_type, location_name, your_relevant_search_terms, relevant_search_terms, shared_relevant_search_terms, competitor_only_search_terms, overlap_ratio (0-1), competitor_coverage_ratio (0-1), jaccard_similarity (0-1), estimated_clicks, shared_terms_estimated_clicks. order_by options: "shared_relevant_search_terms" (default), "relevant_search_terms", "competitor_only_search_terms", "overlap_ratio", "competitor_coverage_ratio", "jaccard_similarity", "estimated_clicks", "shared_terms_estimated_clicks". Use min_shared_terms=0 to include all competitors. See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_competitor_overlap

ChatGPT
Get search term overlap analysis between your domain and each competitor. Shows shared search terms, overlap ratios, and click estimates per competitor. Response fields: competitor, device, ad_type, location_name, your_relevant_search_terms, relevant_search_terms, shared_relevant_search_terms, competitor_only_search_terms, overlap_ratio (0-1), competitor_coverage_ratio (0-1), jaccard_similarity (0-1), estimated_clicks, shared_terms_estimated_clicks. order_by options: "shared_relevant_search_terms" (default), "relevant_search_terms", "competitor_only_search_terms", "overlap_ratio", "competitor_coverage_ratio", "jaccard_similarity", "estimated_clicks", "shared_terms_estimated_clicks". Use min_shared_terms=0 to include all competitors. See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_llm_ad_prompts

ChatGPT
List AI Ads prompts and prompt groups configured for an account. This is the discovery tool for the AI Ads Intelligence surface — call it first to see what ad prompts and prompt groups exist before querying ad metrics with get_ai_ads_intelligence(). No date range or engine parameters needed. AI Ads prompts are customer-managed and a different surface from the AEO/organic prompts returned by get_llm_prompts(). An empty result means the account has no AI Ads prompts configured — treat this as the gate signal that AI Ads Intelligence is not in use for this account. By default (is_all=false) this returns only currently active prompts/groups; soft-deleted entries are excluded. There is no date window — listings describe current account configuration. Pass is_all=true to also include soft-deleted entries (those with a valid_to set). Use is_all=true to reconcile discovery output with get_ai_ads_intelligence(), which already counts prompts for the days they were alive, so a metric window may reference a prompt that the default (active-only) listing omits. report_type options: - "prompt_groups": List AI Ads prompt groups with their associated locations. - "prompts": List individual AI Ads prompts with their group name and locations. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, locations, valid_to (null while the group still has any active prompt, otherwise the latest deletion time among its prompts). Response fields (prompts): prompt, group_name, locations, valid_to (null while the prompt is active, otherwise its deletion timestamp). order_by for prompt_groups: "group_name" only. order_by for prompts: "prompt", "group_name". Use the returned group names and prompt texts as filter values in get_ai_ads_intelligence().

get_llm_ad_prompts

ChatGPT
List AI Ads prompts and prompt groups configured for an account. This is the discovery tool for the AI Ads Intelligence surface — call it first to see what ad prompts and prompt groups exist before querying ad metrics with get_ai_ads_intelligence(). No date range or engine parameters needed. AI Ads prompts are customer-managed and a different surface from the AEO/organic prompts returned by get_llm_prompts(). An empty result means the account has no AI Ads prompts configured — treat this as the gate signal that AI Ads Intelligence is not in use for this account. By default (is_all=false) this returns only currently active prompts/groups; soft-deleted entries are excluded. There is no date window — listings describe current account configuration. Pass is_all=true to also include soft-deleted entries (those with a valid_to set). Use is_all=true to reconcile discovery output with get_ai_ads_intelligence(), which already counts prompts for the days they were alive, so a metric window may reference a prompt that the default (active-only) listing omits. report_type options: - "prompt_groups": List AI Ads prompt groups with their associated locations. - "prompts": List individual AI Ads prompts with their group name and locations. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, locations, valid_to (null while the group still has any active prompt, otherwise the latest deletion time among its prompts). Response fields (prompts): prompt, group_name, locations, valid_to (null while the prompt is active, otherwise its deletion timestamp). order_by for prompt_groups: "group_name" only. order_by for prompts: "prompt", "group_name". Use the returned group names and prompt texts as filter values in get_ai_ads_intelligence().

get_llm_performance

ChatGPT
Get LLM domain performance data: citation trends and per-domain metrics from ChatGPT and Perplexity. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive, then disappears — so historical trends can reference prompts no longer returned by get_llm_prompts(). The prompt and prompt_group filters follow the same rule: a prompt that was already deleted before the window started cannot be matched, even by exact name. report_type options: - "domain_trends": Time series of top-cited domains in LLM responses. NOT paginated — returns all selected domains (up to max_number_of_domains) with full daily time series. Use max_number_of_domains (1-100, default 10) and primary_dimension to control which domains are selected. - "domain_performance": Per-domain performance table with scores, citation frequency, and position metrics. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. primary_dimension (domain_trends only): "frequency" (default) ranks domains by citation frequency; "average_position" ranks by average position (lower = better). Response fields (domain_trends): segments (each with engine label + competitors list). Per competitor: citations_frequency, avg_position, performance_score (0-100), avg_position_citation, avg_position_link, and daily time_series (date, citations_frequency, avg_position). Response fields (domain_performance): competitor, engine, performance_score (0-100), citations_frequency, avg_position, avg_position_citation, avg_position_link. order_by for domain_performance: "competitor", "performance_score", "citations_frequency", "avg_position", "avg_position_citation", "avg_position_link". segment_by=["engine"] splits results per LLM engine (ChatGPT vs Perplexity). Default (empty) aggregates across engines. These endpoints only support prompt-based filtering — no device, ad_type, search_term, competitor, or adwords_campaign filters. Use get_llm_prompts() to discover available prompts and prompt groups for filtering.

get_llm_performance

ChatGPT
Get LLM domain performance data: citation trends and per-domain metrics from ChatGPT and Perplexity. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive, then disappears — so historical trends can reference prompts no longer returned by get_llm_prompts(). The prompt and prompt_group filters follow the same rule: a prompt that was already deleted before the window started cannot be matched, even by exact name. report_type options: - "domain_trends": Time series of top-cited domains in LLM responses. NOT paginated — returns all selected domains (up to max_number_of_domains) with full daily time series. Use max_number_of_domains (1-100, default 10) and primary_dimension to control which domains are selected. - "domain_performance": Per-domain performance table with scores, citation frequency, and position metrics. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. primary_dimension (domain_trends only): "frequency" (default) ranks domains by citation frequency; "average_position" ranks by average position (lower = better). Response fields (domain_trends): segments (each with engine label + competitors list). Per competitor: citations_frequency, avg_position, performance_score (0-100), avg_position_citation, avg_position_link, and daily time_series (date, citations_frequency, avg_position). Response fields (domain_performance): competitor, engine, performance_score (0-100), citations_frequency, avg_position, avg_position_citation, avg_position_link. order_by for domain_performance: "competitor", "performance_score", "citations_frequency", "avg_position", "avg_position_citation", "avg_position_link". segment_by=["engine"] splits results per LLM engine (ChatGPT vs Perplexity). Default (empty) aggregates across engines. These endpoints only support prompt-based filtering — no device, ad_type, search_term, competitor, or adwords_campaign filters. Use get_llm_prompts() to discover available prompts and prompt groups for filtering.

get_llm_prompt_metrics

ChatGPT
Get LLM prompt-level citation and health metrics. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive, then disappears — so historical metrics can reference prompts no longer returned by get_llm_prompts(). The prompt and prompt_group filters follow the same rule: a prompt that was already deleted before the window started cannot be matched, even by exact name. report_type options: - "prompt_groups": Citation metrics aggregated per prompt group — unique domain count, total citation count, and brand share of mentions. segment_by=["engine"] available to split by engine. - "prompts": Per-prompt, per-engine health and citation metrics. ALWAYS segmented by engine — the segment_by parameter is ignored for this report type (the server forces engine segmentation). Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, engine, unique_domain_count, total_citation_count, brand_share_of_mentions. Response fields (prompts): prompt, group_name, engine, category, health_status (AT_RISK / ATTENTION / STRONG), brand_mentioned, brand_share_of_mentions, mentioned_competitors, recommended_count, informational_count, cautionary_count, competitor_recommended_count, cited_domain_count, top_cited_urls. order_by for prompt_groups: "group_name", "unique_domain_count", "total_citation_count". order_by for prompts: "prompt", "group_name". Note: If a prompt belongs to multiple groups, it appears as separate rows — one per (prompt, group_name, engine) combination. Use get_llm_prompts() to discover available prompts and prompt groups before querying metrics. These endpoints only support prompt-based filtering — no device, ad_type, search_term, competitor, or adwords_campaign filters.

get_llm_prompt_metrics

ChatGPT
Get LLM prompt-level citation and health metrics. IMPORTANT: start_date must be within the last 30 days. end_date must not be later than yesterday (today's data is not yet available). Dates in YYYY-MM-DD format. Soft-delete behaviour: includes any prompt that was active during any part of the requested window. A prompt deleted mid-window contributes data for the days it was alive, then disappears — so historical metrics can reference prompts no longer returned by get_llm_prompts(). The prompt and prompt_group filters follow the same rule: a prompt that was already deleted before the window started cannot be matched, even by exact name. report_type options: - "prompt_groups": Citation metrics aggregated per prompt group — unique domain count, total citation count, and brand share of mentions. segment_by=["engine"] available to split by engine. - "prompts": Per-prompt, per-engine health and citation metrics. ALWAYS segmented by engine — the segment_by parameter is ignored for this report type (the server forces engine segmentation). Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, engine, unique_domain_count, total_citation_count, brand_share_of_mentions. Response fields (prompts): prompt, group_name, engine, category, health_status (AT_RISK / ATTENTION / STRONG), brand_mentioned, brand_share_of_mentions, mentioned_competitors, recommended_count, informational_count, cautionary_count, competitor_recommended_count, cited_domain_count, top_cited_urls. order_by for prompt_groups: "group_name", "unique_domain_count", "total_citation_count". order_by for prompts: "prompt", "group_name". Note: If a prompt belongs to multiple groups, it appears as separate rows — one per (prompt, group_name, engine) combination. Use get_llm_prompts() to discover available prompts and prompt groups before querying metrics. These endpoints only support prompt-based filtering — no device, ad_type, search_term, competitor, or adwords_campaign filters.

get_llm_prompts

ChatGPT
List AEO (organic) LLM prompts and prompt groups configured for an account. This is the discovery tool for the AEO Performance surface — call it first to see what organic prompts and prompt groups exist before querying metrics with get_llm_prompt_metrics() or get_llm_performance(). No date range or engine parameters needed. Prompts are customer-managed. This tool returns organic prompts only — for the AI Ads surface use get_llm_ad_prompts(). By default (is_all=false) this returns only currently active prompts; soft-deleted prompts are excluded. There is no date window — listings describe current account configuration. Pass is_all=true to also include soft-deleted prompts (those with a valid_to set). Use is_all=true to reconcile discovery output with get_llm_prompt_metrics() / get_llm_performance(), which already count prompts for the days they were alive, so a metric window may reference a prompt that the default (active-only) listing omits. report_type options: - "prompt_groups": List prompt groups with their associated locations. - "prompts": List individual prompts with their group name and locations. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, locations, valid_to (null while the group still has any active prompt, otherwise the latest deletion time among its prompts). Response fields (prompts): prompt, group_name, locations, valid_to (null while the prompt is active, otherwise its deletion timestamp). order_by for prompt_groups: "group_name" only. order_by for prompts: "prompt", "group_name". Use the returned group names and prompt texts as filter values in get_llm_performance() and get_llm_prompt_metrics().

get_llm_prompts

ChatGPT
List AEO (organic) LLM prompts and prompt groups configured for an account. This is the discovery tool for the AEO Performance surface — call it first to see what organic prompts and prompt groups exist before querying metrics with get_llm_prompt_metrics() or get_llm_performance(). No date range or engine parameters needed. Prompts are customer-managed. This tool returns organic prompts only — for the AI Ads surface use get_llm_ad_prompts(). By default (is_all=false) this returns only currently active prompts; soft-deleted prompts are excluded. There is no date window — listings describe current account configuration. Pass is_all=true to also include soft-deleted prompts (those with a valid_to set). Use is_all=true to reconcile discovery output with get_llm_prompt_metrics() / get_llm_performance(), which already count prompts for the days they were alive, so a metric window may reference a prompt that the default (active-only) listing omits. report_type options: - "prompt_groups": List prompt groups with their associated locations. - "prompts": List individual prompts with their group name and locations. Default page_size is 0 (all results). LLM data is typically under 500 items. Pass a specific page_size if you need smaller pages. Response fields (prompt_groups): group_name, locations, valid_to (null while the group still has any active prompt, otherwise the latest deletion time among its prompts). Response fields (prompts): prompt, group_name, locations, valid_to (null while the prompt is active, otherwise its deletion timestamp). order_by for prompt_groups: "group_name" only. order_by for prompts: "prompt", "group_name". Use the returned group names and prompt texts as filter values in get_llm_performance() and get_llm_prompt_metrics().

get_market_share

ChatGPT
Get competitor market share data showing performance in clicks, spend, and impressions. report_type options: - "detail": Per-competitor rows with share metrics. Paginated. - "groups_and_locations": Market share broken down by every search term group and location combination. - "summary": Single overview with your shares, market leader, and top N competitors. Uses top_n instead of pagination. Response fields (detail/groups_and_locations): competitor, device, ad_type, location_name, estimated_impressions, share_of_clicks, share_of_spend, share_of_impressions, average_position, relevant_search_terms, average_cpc, average_ctr. Response fields (summary): total_competitors, your_share_of_clicks, your_share_of_spend, your_estimated_impressions, your_average_cpc, your_average_ctr, market_leader, market_leader_share_of_clicks, average_share_of_clicks, median_share_of_clicks, top_competitors. order_by options vary by report_type: - "detail": share_of_clicks, share_of_spend, estimated_impressions, share_of_impressions, average_position, competitor, relevant_search_terms - "groups_and_locations": share_of_clicks, share_of_spend, estimated_impressions, share_of_impressions, average_position, competitor - "summary": share_of_clicks, share_of_spend Use filtering_options="absolute" for absolute numbers instead of shares. When comparing two periods, use page_size=0 to get all competitors. See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_market_share

ChatGPT
Get competitor market share data showing performance in clicks, spend, and impressions. report_type options: - "detail": Per-competitor rows with share metrics. Paginated. - "groups_and_locations": Market share broken down by every search term group and location combination. - "summary": Single overview with your shares, market leader, and top N competitors. Uses top_n instead of pagination. Response fields (detail/groups_and_locations): competitor, device, ad_type, location_name, estimated_impressions, share_of_clicks, share_of_spend, share_of_impressions, average_position, relevant_search_terms, average_cpc, average_ctr. Response fields (summary): total_competitors, your_share_of_clicks, your_share_of_spend, your_estimated_impressions, your_average_cpc, your_average_ctr, market_leader, market_leader_share_of_clicks, average_share_of_clicks, median_share_of_clicks, top_competitors. order_by options vary by report_type: - "detail": share_of_clicks, share_of_spend, estimated_impressions, share_of_impressions, average_position, competitor, relevant_search_terms - "groups_and_locations": share_of_clicks, share_of_spend, estimated_impressions, share_of_impressions, average_position, competitor - "summary": share_of_clicks, share_of_spend Use filtering_options="absolute" for absolute numbers instead of shares. When comparing two periods, use page_size=0 to get all competitors. See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_search_terms

ChatGPT
Get search term analysis data. report_type options: - "detail": Per-search-term performance data. Paginated. - "detail_summary": Pre-aggregated overview stats. Uses top_n. - "opportunities": Terms competitors bid on but you don't. Paginated. Limited to last 30 days, forces daily time period. Does not support ad_type, segment_by, is_whole_market, or time_period. - "opportunities_summary": Pre-aggregated opportunities stats. Same constraints as opportunities. Uses top_n. Response fields (detail): search_term, device, ad_type, location_name, competitors, top_competitor, estimated_impressions, estimated_clicks, average_position, min_cpc, max_cpc, is_priority, is_ignored. Response fields (opportunities): search_term, device, ad_type, competitors, top_competitor, estimated_clicks, total_clicks, is_rejected. order_by options for detail: "search_term", "estimated_impressions", "estimated_clicks", "competitors", "average_position", "top_competitor". order_by options for opportunities: "search_term", "estimated_clicks". See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_search_terms

ChatGPT
Get search term analysis data. report_type options: - "detail": Per-search-term performance data. Paginated. - "detail_summary": Pre-aggregated overview stats. Uses top_n. - "opportunities": Terms competitors bid on but you don't. Paginated. Limited to last 30 days, forces daily time period. Does not support ad_type, segment_by, is_whole_market, or time_period. - "opportunities_summary": Pre-aggregated opportunities stats. Same constraints as opportunities. Uses top_n. Response fields (detail): search_term, device, ad_type, location_name, competitors, top_competitor, estimated_impressions, estimated_clicks, average_position, min_cpc, max_cpc, is_priority, is_ignored. Response fields (opportunities): search_term, device, ad_type, competitors, top_competitor, estimated_clicks, total_clicks, is_rejected. order_by options for detail: "search_term", "estimated_impressions", "estimated_clicks", "competitors", "average_position", "top_competitor". order_by options for opportunities: "search_term", "estimated_clicks". See docs://date-rules for date and time_period handling. See docs://data-access for pagination and segment_by details.

get_serp_tracker

ChatGPT
Get SERP Tracker rule matches — ads on the search results page that triggered a configured rule. These are rule matches, not legal infringements. Many legitimate competitor behaviours (e.g. permitted brand-bidding on your terms) trip rules. When summarising to a user, say "rule matches" or "SERP Tracker matches" — never "infringements". SERP Tracker is the in-platform name for what was formerly called the "Infringement Tracker". Adthena scans the SERP every hour for ads that match rules configured for your account (brand misuse, unauthorized resellers, etc.). For trademark-specific detections that feed Google's Auto-Takedown system, use get_auto_takedown instead. For the enforcement outcomes of trademark takedowns (successful / unsuccessful / pending), use get_trademark_takedowns. report_type options: - "matches" (default): Detailed match records. Requires start_date/end_date. Paginated. - "summary": Aggregated stats including total_matches, unique_competitors, top-N competitors by match_count. Requires start_date/end_date. - "rules": SERP Tracker rule configurations for the account. No dates needed. Paginated. Response fields (matches): name (rule name), id, date_time, device, location_name, competitor, search_term, title, description1, description2, click_url, destination_url, display_url, position, evidence_link. Response fields (summary): total_matches, unique_competitors, unique_search_terms, desktop_count, mobile_count, top_competitors (each with competitor + match_count). Response fields (rules): id, name, device, enabled, location_name, email_count. order_by for matches: "name", "search_term", "date_time" (default). order_by for rules: "name". See docs://date-rules for date handling.

get_serp_tracker

ChatGPT
Get SERP Tracker rule matches — ads on the search results page that triggered a configured rule. These are rule matches, not legal infringements. Many legitimate competitor behaviours (e.g. permitted brand-bidding on your terms) trip rules. When summarising to a user, say "rule matches" or "SERP Tracker matches" — never "infringements". SERP Tracker is the in-platform name for what was formerly called the "Infringement Tracker". Adthena scans the SERP every hour for ads that match rules configured for your account (brand misuse, unauthorized resellers, etc.). For trademark-specific detections that feed Google's Auto-Takedown system, use get_auto_takedown instead. For the enforcement outcomes of trademark takedowns (successful / unsuccessful / pending), use get_trademark_takedowns. report_type options: - "matches" (default): Detailed match records. Requires start_date/end_date. Paginated. - "summary": Aggregated stats including total_matches, unique_competitors, top-N competitors by match_count. Requires start_date/end_date. - "rules": SERP Tracker rule configurations for the account. No dates needed. Paginated. Response fields (matches): name (rule name), id, date_time, device, location_name, competitor, search_term, title, description1, description2, click_url, destination_url, display_url, position, evidence_link. Response fields (summary): total_matches, unique_competitors, unique_search_terms, desktop_count, mobile_count, top_competitors (each with competitor + match_count). Response fields (rules): id, name, device, enabled, location_name, email_count. order_by for matches: "name", "search_term", "date_time" (default). order_by for rules: "name". See docs://date-rules for date handling.

get_trademark_takedowns

ChatGPT
Get Google's trademark auto-takedown enforcement outcomes. Different from get_infringements (detected violations) — this shows Google's enforcement actions. report_type options: - "detail": Individual takedown records. Paginated. - "summary": Aggregated counts and success_rate with top domains. Uses top_n. Response fields (detail): case_id, domain_name, status (successful/unsuccessful/pending), reason, timestamp. Response fields (summary): successful_count, unsuccessful_count, pending_count, total_count, success_rate, top_domains. success_rate = successful_count / (successful_count + unsuccessful_count). Pending cases are excluded from the denominator. Null when there are no resolved (non-pending) cases. See docs://date-rules for date handling.

get_trademark_takedowns

ChatGPT
Get Google's trademark auto-takedown enforcement outcomes. Different from get_infringements (detected violations) — this shows Google's enforcement actions. report_type options: - "detail": Individual takedown records. Paginated. - "summary": Aggregated counts and success_rate with top domains. Uses top_n. Response fields (detail): case_id, domain_name, status (successful/unsuccessful/pending), reason, timestamp. Response fields (summary): successful_count, unsuccessful_count, pending_count, total_count, success_rate, top_domains. success_rate = successful_count / (successful_count + unsuccessful_count). Pending cases are excluded from the denominator. Null when there are no resolved (non-pending) cases. See docs://date-rules for date handling.

list_accessible_accounts

ChatGPT
List all Adthena accounts you have access to. IMPORTANT: Call this tool first before using any other Adthena tool. If there are multiple accounts, you MUST present the list to the user and ask them which account to use. Do NOT proceed with queries until the user has confirmed their choice. Never query all accounts unless the user explicitly asks for it. Returns a list of accounts with account_id, domain, location_code, location_name, and parent_account_id. Filtering: Use domain and/or location to narrow results. Both perform case-insensitive substring matching (e.g., domain="nike" matches "nike.com" and "nike.co.uk"). When the full list is large, always filter to keep results manageable. Location hierarchy: Accounts with a non-null parent_account_id are child locations within a hierarchy. To query data across multiple locations efficiently, use the parent account and pass the desired location names via the location parameter — this returns all locations' data in a single call instead of making separate requests per child account. Missing accounts: Only accounts with API access enabled are listed here. If an expected account is not shown, it likely does not have API access enabled. The user should contact their Adthena account manager to verify and enable API access for that account. Args: domain: Filter accounts by domain (case-insensitive substring match). location: Filter accounts by location name (case-insensitive substring match).

list_accessible_accounts

ChatGPT
List all Adthena accounts you have access to. IMPORTANT: Call this tool first before using any other Adthena tool. If there are multiple accounts, you MUST present the list to the user and ask them which account to use. Do NOT proceed with queries until the user has confirmed their choice. Never query all accounts unless the user explicitly asks for it. Returns a list of accounts with account_id, domain, location_code, location_name, and parent_account_id. Filtering: Use domain and/or location to narrow results. Both perform case-insensitive substring matching (e.g., domain="nike" matches "nike.com" and "nike.co.uk"). When the full list is large, always filter to keep results manageable. Location hierarchy: Accounts with a non-null parent_account_id are child locations within a hierarchy. To query data across multiple locations efficiently, use the parent account and pass the desired location names via the location parameter — this returns all locations' data in a single call instead of making separate requests per child account. Missing accounts: Only accounts with API access enabled are listed here. If an expected account is not shown, it likely does not have API access enabled. The user should contact their Adthena account manager to verify and enable API access for that account. Args: domain: Filter accounts by domain (case-insensitive substring match). location: Filter accounts by location name (case-insensitive substring match).

App Stats

42

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily