Look up Conservatory oboe fingerings, half-hole, left/forked F rules, octave keys & trills.
Developer ToolsData access / search
- Passed: Handshake
- Passed: Tools listed
- Passed: Updated recently
Median latency 66 ms · Last checked
Explore
Evidence for your next connection.
Independent measurements of remote MCP servers. Every observation has a timestamp.
Read-only probesMCP server · Data access / search
Track how AI assistants mention, cite, and rank your brand and competitors in AI search.
3 failed · 8 not measured
Median of successful probes over 7 days
Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.
Tool definitions returned by this server
Independent monitoring
Responded
The server completed its last measured handshake. This is an observation, not a guarantee.
Last checked| Test area | Passed | Failed | Unmeasured |
|---|---|---|---|
ConnectionCan a client connect and discover tools? | 5 | 0 | 0 |
Reliability & speedDoes it respond consistently and quickly? | 0 | 0 | 4 |
Access & authenticationWhat is required to use this server? | 1 | 0 | 2 |
Tool qualityAre the tool definitions usable by an agent? | 3 | 1 | 0 |
Publisher identityCan the publisher be traced to its source? | 2 | 2 | 2 |
Unmeasured means there is not enough evidence to decide. How these checks work
Start using AthenaHQ
Choose your client, copy the configuration, then enable the server in your client’s MCP settings.
Run this command in your terminal, then restart Claude Code.
Claude Code
claude mcp add --transport http athenahq https://api.athenahq.ai/api/mcpCapabilities
Showing 100 of 132 tools.
Add brand facts to a website's Knowledge Base in bulk (1-50 per call). Each fact runs the full ingestion pipeline (deduplication, approval gates, pillar routing); there is no way to force-approve. Returns one outcome per fact (approved | pending | duplicate; extensible) with the created fact id and the pillar it was filed under. Facts without a pillar_id are routed automatically and may land unfiled. A fact similar to facts already in the Knowledge Base is not added: its outcome is duplicate and lists them under matches, and the response carries a match_token. To resolve, call again with those facts, the match_token, one decision per listed match (approve, optionally with new text, or delete) and save_submitted (true adds the facts as written, false only applies the decisions).
DiscoveredStart tracking competitors on a website, 1 to 25 per call, under the same rules as the Competitors page. Each competitor needs a name and its website url, or no_website: true for a brand with no website of its own; identifiers and additional_urls are optional. Returns one result per competitor, in order: added, already_tracked (the website already tracks that url; nothing changes), or rejected with the reason (a url on the website's own domains, an invalid url, or the limit of 500 competitors per website). New AI responses count mentions of an added competitor right away. Past responses are reanalyzed only when someone runs the backfill on the Competitors page, which costs credits; this tool never starts it and costs no credits.
DiscoveredAdd an article that is already written (for example, one drafted in this conversation) to the website's Content Hub as an editable draft. Same as pasting it into the Content Hub's blank editor: no AI model runs and no content credits are spent. Use create_content instead when Athena should research and write the piece. body is the full article in Markdown and is stored as given, except that link and image destinations with an unsafe scheme (javascript:, data:) become #. The item is created with type manual at stage generated, and the body is recorded as version 1, so get_content_draft, edit_content, revise_content and get_content_versions work on it right away. Pass title, or it is taken from the body's first heading (else its first line). sheet_id must be a tab from get_content_hub_sheets: a sheet-type tab keeps the item, a view-type tab or no sheet_id puts it in the shared pool. The item is not published. Once it is live on the site, call publish_content with its URL to start citation tracking.
DiscoveredApprove a content brief and start writing the article from it. Only valid while the piece is at status generated_brief. The article is generated from the brief exactly as it currently stands, including any revisions made with revise_brief or edits made in the app. Consumes content credits; poll get_content_status afterwards, then read the result with get_content_draft.
DiscoveredCheck HTTP responses to AI crawler user agents and robots.txt permissions for a public website. No AthenaHQ account required. Search, retrieval and training are separate. Requests originate from AthenaHQ, not verified crawler IPs. Unknown responses are inconclusive; this does not measure visibility or guarantee indexing, citations or real crawler access. Use nullable evidence and diagnostics.
DiscoveredCreate a brand kit from text the user provides: a name, guidance text per field (voice is the writing direction), voice settings and writing rules, all authored by the caller; nothing is generated. The kit starts as a draft; content generation uses it only once published, which publish: true does as version 1 (or update_brand_kit later). The website's first kit becomes its default. A name another kit uses is refused; a rule that contradicts an existing global rule is refused with the explanation and no kit is created. Kit rules need the writing rules feature on the plan. To change an existing kit, use update_brand_kit; to generate a kit from the website or uploaded documents, use the Brand Profile page.
DiscoveredGenerate an article or content brief in AthenaHQ. Fetches source URLs, sends source material to external AI providers, and consumes content credits. Obtain user approval before calling. Does not publish to a website or CMS. For draft mode, auto_approve defaults to true; set false to generate only a brief and wait for approve_brief. Poll get_content_status using each returned content_ids value. Slice mode returns slice_titles and an empty content_ids array; generated items appear in list_content. To save an already-written article without generation or credit use, call add_content.
DiscoveredCreate a location for a website
DiscoveredCreate a Knowledge Base pillar (a subject area that groups brand facts) from a name and optional description. Get-or-create semantics: if a pillar with the same name already exists, it is returned with created: false instead of failing, so retries are idempotent.
DiscoveredCreate a prompt tag on a website, or return the existing tag when its name matches case-insensitively. Trims surrounding whitespace and rejects reserved prompt-type names. Returns the tag ID and whether it was created. Use the returned ID to assign the tag to prompts; creating a tag does not assign it to any prompts.
DiscoveredCreate one or more prompts on a website
DiscoveredCreate a saved view (filter preset) for a website. Saved views appear in the dashboard filter bar for every member of the website. filters is an object keyed by filter field key, each value shaped {"id": "<unique string>", "field": "<same field key>", "operator": "is_any_of", "values": [...]}. Common field keys: "models" (slugs like "chatgpt", "perplexity", "google_ai_overview"), "competitors", "prompts", "personas", "locations", "promptTags", "attributes" (arrays of UUIDs from the matching list tools), "countries", "sourceTag". "promptTags" also accepts the builtin tokens "type:high_intent" (branded prompts) and "type:discovery" (non-branded) alongside tag UUIDs. "sourceTag" values are the builtin categories "owned", "competitor", "partner", "third_party" or custom source tag UUIDs, not display labels; custom source tag ids appear on existing saved views (list the website's saved views to find them). When unsure, list the website's saved views and mirror their filter shapes. icon, when set, must be a supported Remix icon name (e.g. "RiStarLine"); invalid names are rejected with the full list. When talking to the user about a view or its filters, use the dashboard names (Branded / Non-branded prompts, Owned / Competitor / Partner / Third party sources), never internal tokens, field keys, operator strings, or icon identifiers.
DiscoveredCreate a topic on a website (returns the existing topic when the name is already taken)
DiscoveredPermanently delete 1-50 brand facts from a website's Knowledge Base. There is no undo. Ids that do not exist on the website are reported in not_found_ids rather than failing the call, so retries are idempotent. Requires an admin; on OAuth connections the signed-in user must have the admin role.
DiscoveredDelete a content row. Destructive: physical row delete, no undo. Powers delete-and-retry. Bulk delete is out of scope.
DiscoveredDelete a location from a website
DiscoveredPermanently delete 1-20 Knowledge Base pillars and every fact filed under them. Facts are deleted, not unfiled; there is no undo. Ids that do not exist on the website are reported in not_found_ids rather than failing the call, so retries are idempotent; ids in failed_ids are untouched and safe to retry. Requires an admin; on OAuth connections the signed-in user must have the admin role.
DiscoveredDelete a prompt (soft when responses exist, hard otherwise)
DiscoveredDelete a topic (soft delete; optionally also delete its prompts)
DiscoveredDraft a pitch email to the author of a cited page and save it as the page's Outreach draft, replacing any previous draft. Uses the website's team-wide Outreach custom instructions, the saved author name, and the sender's name. Costs 0.1 credits per draft written (billed in whole credits every 10 drafts); free when the page cannot be read. Show the draft to the user before they send it; nothing is sent.
DiscoveredApply exact find-and-replace edits to a content draft's article body. Deterministic, no AI model involved: your replacement text lands verbatim (use revise_content when you want an AI rewrite from an instruction). Each edit's find text must match the current body exactly once; zero or multiple matches fail the whole call and nothing is saved, so extend the find text until it is unique. Edits apply in order, later ones see earlier results, and the batch is recorded as one new version, recoverable via get_content_versions / restore_content_version. Pass expected_version_number from get_content_draft to fail with a conflict when a new version was recorded after your read (a revision, edit, or restore). An app autosave changes the body without recording a version; that drift is caught by the anchors themselves, since a moved or vanished find text fails the call.
DiscoveredFind more prompts for a finished Discover run: start the next round of its series with the same sources, effort level, country, language and custom instructions. The round skips every question the series already suggested and reads evidence earlier rounds did not use, so its prompts add to the same list. Invoke only after the user asks for more prompts from an existing run, and confirm with them first: each round runs the same paid research as a new run. A series takes one round at a time and at most two after the first run, and ends early after a round that found fewer than ten new prompts or nothing new to read; the tool then refuses with the reason. Returns the new round's run ID; poll the discovery history tool with it. Prompts are not added to tracking automatically. Requires prompt-management permission and the series' source entitlements.
DiscoveredFind who wrote a cited page and how to reach them, then save it to the page's Outreach contact. Reads the page's byline, the addresses the page publishes, and Hunter.io; when no author is found it returns the site's contact address and contact page instead. Every email comes with its source. Costs 0.1 credits when an author is found (billed in whole credits every 10 lookups); free otherwise. Overwrites the saved author fields. Obtain user confirmation before running it over many pages.
DiscoveredRead one stored AI insight in full, by its id from get_ai_insights: its title, headline, body, suggested action, why it happened (with reasons and their pages), its numbers (facts, each with the table it came from), its move (subject, metric, current and previous values, the direction that is good news, and a definition of what the series counts and what it is out of), its evidence (topics, competitors, prompts, URLs), and the scope its numbers were computed under (window, comparison period, Default schedule, the prompts active at the analysis, prompt-type filter, the models the citation tables leave out). The numbers are the card's as of its analysis: quote them as such, with the window and the date the analysis ran (analyzed_at). A recompute with the other tools counts today's active prompts, so it can differ. Returns a not-found error for an insight that is not this website's, and status 'no_access' when AI Insights is not part of the organization's setup.
DiscoveredList the website's stored AI insights: the precomputed cards on the AI Insights page, each a verified finding of one past analysis, newest analysis first and higher impact first. Each has its id, title, headline, category, impact, the days its numbers cover (window), the time the analysis ran (analyzed_at), its status (available, done, or discarded = hidden by the team), the team's rating, and its move's subject and metric. Call this first for an open-ended request for insights or for what to do ('give me some insights', 'what's interesting', 'what should I prioritize'), and answer from these cards instead of running a new analysis: highest impact first, each by its title and headline. Always state the window and the date the analysis ran, and offer a fresh look with the other analytics tools. Read one card in full with get_ai_insight. Paged: 20 by default; for more, pass limit (up to 50) and offset set to the returned next_offset until it is null. Default status is available. Returns status 'no_access' when AI Insights is not part of the organization's setup. Then, or when no insight is listed, answer from the other analytics tools.
DiscoveredAI Search Value for a website: topic-market value, captured value range, headroom, coverage, value-weighted AI share of voice, per-topic detail, and modeled attributed contribution.
DiscoveredGet cumulative brand trait (attribute) metrics: for each brand-perception keyword (e.g. 'Affordable', 'Slow Support'), how many AI responses mentioned it across the date range, and the percentage. `positive` selects the observation direction and defaults to true when omitted. `total_responses` is the denominator: responses in the date range that mention the brand AND had attribute extraction run on them. It is NOT every response for the website — responses that never mention the brand are excluded, and Athena samples which responses get extraction, so un-analyzed ones are excluded too. Compute rates from the returned `percentage` / `total_responses` rather than against a response count from another endpoint. Attributes nobody mentioned come back with response_count 0. Use get_competitor_attribute_metrics for the same breakdown per competitor.
DiscoveredGet individual brand trait (attribute) observations: each row is one AI response describing one entity (the brand or a competitor) with one brand trait, including the response excerpt as `text_span`. `score` runs from -1 to 1 and its sign always matches `positive`; its magnitude (0.1 to 1.0) is how strongly the wording praises or criticizes. `score` is null when the observation was not scored (extracted before scoring existed, or no valid value was recorded); for direction only, use `score ?? (positive ? 1 : -1)`. Omit `positive` for both directions. `sort: "intensity"` (the default) returns the strongest observations first with unscored ones last; `sort: "recent"` returns the newest first. Narrow with entity_ids and attribute_ids (from get_attributes). Paginate with page_num and page_size; a page can hold fewer than page_size rows when an excerpt is no longer available, so use `has_more` to decide whether to fetch the next page. Use get_attribute_metrics for how often each trait is mentioned.
DiscoveredGet the daily trend for ONE brand trait (attribute), brand and competitors side by side — how mentions of a keyword like 'Affordable' moved over time. Requires an attribute_id: call get_attributes first to discover ids. `positive` selects the observation direction and defaults to true when omitted. Days with no data are returned as zeros, so the series is gap-free and chartable. Denominators are per-side, not the day's whole response set: brand_percentage divides by that day's responses that mention the brand (and had attribute extraction run), and competitor_percentage by responses that mention the tracked competitors. brand_total and competitor_total return those denominators explicitly. Competitor figures aggregate all tracked competitors unless competitor_ids narrows them.
DiscoveredList the brand traits (called attributes in the API) tracked for a website: brand-perception keywords such as 'Affordable' or 'Slow Support'. Athena extracts these from AI model responses. Brand traits are direction-neutral; `positive` selects the directional series and defaults to true when omitted. Use this to discover attribute ids, then get_attribute_metrics for how often each is mentioned, or get_attribute_time_series for one attribute's trend over time.
DiscoveredList a website's brand facts from the Knowledge Base, newest first, with offset paging. By default excludes facts generated by Oracle analysis; pass include_oracle=true to include them. Filters: pillar, review status (default approved), source type, and unfiled=true for facts not under any published pillar (unfiled and pillar_id are mutually exclusive).
DiscoveredRead a brand kit as the Brand Profile editor shows it, to inspect or change it: the draft name, the eight guidance fields as text (voice is the writing direction), voice settings (1-5 or auto), tone traits, the kit's writing rules with ids, and the website's global writing rules with ids, plus draft and published versions. Omit kit_id for the website's default kit; available_kits lists every kit. Content generation uses a kit's published version, so has_unpublished_changes means the draft differs from it. Guidance fields longer than the clip come back shortened and listed in truncated_fields; pass fields to read those whole, which update_brand_kit's find needs. Rules are clipped too, each with its own truncated flag. Call this before update_brand_kit. To write in the brand's voice, read brandKit__get instead. Read-only.
DiscoveredGet cumulative citation rate — average citation rate for each competitor across the date range. citation_rate is absolute (share of all responses); relative_citation_rate is the share of responses citing the website or any tracked competitor.
DiscoveredGet citation rate over time — how often AI models cite (link to) the website, grouped by day. citation_rate is absolute (share of that day's responses); relative_citation_rate is the share of that day's responses citing the website or any tracked competitor.
DiscoveredGet brand trait (attribute) metrics per tracked competitor: for each competitor and each brand-perception keyword (e.g. 'Affordable'), how many AI responses mentioned that keyword for that competitor, and the percentage. Use with get_attribute_metrics to compare the brand against competitors. `total_responses` is per-competitor: responses in the date range that mention THAT competitor and had attribute extraction run on them. Each competitor therefore has its own denominator, and none of them is the website's total response count. `positive` selects the observation direction and defaults to true when omitted. Returns one row per competitor per attribute, so results can be large — filter with competitor_ids. Competitors with no responses in the date range are omitted entirely rather than returned with zeros.
DiscoveredList competitors tracked for a website
DiscoveredFor a single tracked content item, list every prompt whose AI responses cited it — with citations, citation %, and estimated impressions. Use after get_tracked_content to drill into which prompts a given URL is appearing for. This is CITED-BY, measured over the requested date range, not the targeting the page was written for: an empty prompts array means no AI response cited this URL in that window, which is expected for new or never-cited pages and is not missing data. For the prompts a page was written to target, read `prompts` on get_content_detail (or prompt_ids on list_content) — those come from the content record itself and do not depend on any citation having happened.
DiscoveredFetch the full detail of a single tracked content item — its brief and body text (drafts, optimize rewrites, snipes, authored and scraped pages), plus status, cited source URLs, and links. Use after get_tracked_content to read the actual text behind a content_id. A status of generated_brief means the brief is ready while the article is still being written. Pages registered via track_content_urls return a null body and null status until their page text is fetched from the app — a null body on an external page means not fetched yet, not missing content; citation tracking does not need the body. `prompts` lists the prompts this page was WRITTEN FOR (the same ids create_content takes), newest-linked last, capped at 100 with the true size in `prompts_total`. When prompts_total exceeds 100 the rest are not currently readable through any tool — report the total, do not imply the list is complete. Entries carry status active, paused or deleted: a deleted prompt is still part of what the page was written for and still shows in the Content Hub, but get_prompts will not list it, so use the text returned here. An empty array means the page has no prompt targeting, which is normal for imported or externally tracked pages. That is a different question from get_content_citation_prompts, which lists prompts whose AI responses CITED the page. For an optimize item, source_url is the live page it is based on, available as soon as the item exists; url stays null until publish_content records the published page and marks the item done, so read source_url to link a request in review to its page. source_url is null for other content types and for optimize items based on pasted text or a file. To see the reworded variants actually asked of the models for these prompts, pass their ids to get_responses (each row carries base_prompt plus the variation as prompt) or query the responses cube via query_rows on the prompt_variation dimension.
DiscoveredRead the current draft text of a content item — the article body as it stands right now, including every revision applied so far. Use this before revise_content to see what you are changing, and after it to confirm the result. A status of generated_brief means the brief is ready while the article is still being written, so body may still be empty. For the full record (cited urls, links, social posts) use get_content_detail instead.
DiscoveredList the Content Hub tabs/sheets configured for a website. Use to discover available tabs (e.g. 1st-party content, 3rd-party placements, Reddit) before calling get_tracked_content with a specific sheet_id (metrics; excludes in-flight pipeline items) or list_content (every item including unpublished drafts).
DiscoveredGet the normalized pipeline status (running | succeeded | failed) for one content row, plus the raw stage behind it. Read-only. Poll once per contentId returned by create_content (content.pipeline.start). A stage of generated_brief with status running means the brief is ready and waiting — for a non-auto-approve draft it stays there until approve_brief is called, so do not treat running as always in progress. Not meaningful for tracked pages (track_content_urls / external rows): they have no generation pipeline and report running with a null stage forever — read them via get_tracked_content or get_content_detail instead.
DiscoveredRead the full text of one saved version of a content item. Use it to compare two passes (fetch both and diff them yourself) or to check what an earlier version said before restoring it.
DiscoveredList the saved versions of a content item, newest first. Each entry carries its version number, label, how it was produced, and who made it. Use it to see how a draft evolved, then get_content_version to read a specific one, or restore_content_version to go back to it.
DiscoveredRead recorded organization credit consumption: total, hourly (24h) or daily trend, and charged website/group/organization pools. Use for spending trends and biggest charged pools; the credit-balance tools read current balances. For 'this month' or a specific spike, supply explicit UTC window boundaries; 30d is rolling, not a calendar month. State the returned interval. A group pool is not an originating website. The breakdown may exclude unattributed usage or be capped by the billing provider; totalCreditsUsed is authoritative, not the sum of displayed entities. Negative credits are refunds. Entities are paginated: continue with window and nextOffset while hasMore. Use credit-usage events to inspect recorded actions. Requires organization billing access on a signed-in connection, or a global organization API key. Website-scoped keys are not supported. Read-only.
DiscoveredRead a page of recorded credit charges/refunds and action labels for the organization, optionally filtered by originatingWebsiteId. Use to inspect a usage spike or charges behind a total. Use credit-usage totals for complete period totals. Supply explicit UTC window for calendar months. Continue with returned window, originatingWebsiteId, and nextOffset while hasMore; never compute the next offset from returned row count. Limit bounds underlying operations, each may split into several charged-pool rows. One page is not a complete action breakdown. 'Not recorded' means unknown historical action/site attribution, never infer it. Unknown raw action tags are preserved. Negative credits are refunds. Requires organization billing access on a signed-in connection, or a global organization API key. Website-scoped keys are not supported. Read-only.
DiscoveredGet credit balance for the organization
DiscoveredGet credit balance for a specific website
DiscoveredGet the earliest and latest response dates for a website
DiscoveredFetch a single group by id with its member websites.
DiscoveredList group-level saved views (filter presets) shared across the websites in a group
DiscoveredList all groups in the organization (global API key only)
DiscoveredRead the identifiers of the website's brand, or of one competitor: the names, aliases and domains Athena looks for in AI responses to count a mention. default_identifiers (the name and domain) are always matched and cannot be removed; identifiers lists every other value, as the Competitors page shows them. case_sensitive tells whether matching respects letter case. Read this before update_identifiers. Read-only.
DiscoveredList geo-locations configured for a website
DiscoveredGet cumulative mention rate — average mention rate for each competitor across the date range. mention_rate is absolute (share of all responses); relative_mention_rate is the share of responses mentioning any tracked brand.
DiscoveredGet mention rate over time — how often AI models mention the website by name, grouped by day. mention_rate is absolute (share of that day's responses); relative_mention_rate is the share of that day's responses mentioning any tracked brand.
DiscoveredWhen grounding is present, use its complete team-confirmed statement and all supporting facts as joint evidence; the legacy fact ID/text are only a compatibility anchor. Load one Oracle finding in full: the flagged claim with its verified fact and prompt text, the run it came from, a ~2000-character response excerpt centered on the quoted claim, the cited-page evidence captured during the run (url, quote, snippet, scrape_hash), and its lineage: sibling findings sharing its lineage_id across runs, newest first. Use after get_oracle_findings to interrogate a specific finding. Returns a not-found error for an unknown finding id, and status 'no_access' if the brand does not have Oracle v2.
DiscoveredWhen grounding is present, use its complete team-confirmed statement and all supporting facts as joint evidence; the legacy fact ID/text are only a compatibility anchor. List Oracle accuracy findings for a website: places where an AI response contradicted a verified brand fact (type 'inaccuracy' or 'kb_issue', with quote, claim, and reason) or where two knowledge-base facts conflict ('kb_duplicate' / 'kb_contradiction', pairing fact_text with related_fact_text). Findings from every status are included by default (pending, acknowledged, ignored, ...), each row carrying its status — pass the status filter for pending items only. Filters (run_id, fact_id, lineage_id, response_id, prompt_id, source_url, type, kind, severity, status) AND-compose; source_url matches evidence URLs exactly after normalization (protocol and trailing slash ignored). 'total' is the pre-limit count. 'latest_run' is the newest scan of any kind and is null only when the website has never been scanned, so latest_run plus empty findings means it scanned clean, while latest_run null means never scanned, not clean. Archived findings from before the current scanner ARE included: their run carries 'is_imported': true and keeps its original started_at, so an import can be the newest run — say the history is archived rather than calling it a current scan. 'has_imported_history' is true when any such archived run exists, and every finding row carries 'run_is_imported' so archival and current rows stay distinguishable in one list. Returns status 'no_access' if the brand does not have Oracle v2; that response carries the status alone, with no counts or findings.
DiscoveredList personas configured for a website with per-persona prompt counts. Use it to resolve persona_id values returned by other tools to persona names and descriptions.
DiscoveredFetch a pillar's synthesized markdown document from the Knowledge Base. Returns document: null when the pillar exists but has no synthesized document yet.
DiscoveredList a website's Knowledge Base pillars (excluding archived ones) with approved-fact counts, whether a synthesized document exists, and when each pillar was last researched.
DiscoveredGet a pitch report by ID including competitors, prompts, attributes, top citing sources, and aggregate metrics (brand mentions, sentiment, response rate).
DiscoveredGet cumulative position — average ranking position for each competitor across the date range.
DiscoveredGet position distribution: share of responses where the brand ranks top/middle/bottom across the date range.
DiscoveredGet ranking position over time — average position of the website in AI model responses, grouped by day.
DiscoveredRead Discover history and progress for a website, or supply the run ID returned by discovery launch to inspect one study. Distinguishes pending, running, completed, partial, failed and cancelled. limit bounds returned runs (default 10, maximum 20); has_more means older runs remain. This is read-only: it does not start research, monitor in the background or send notifications. Candidate results can be reviewed in the application's Discover page. Requires permission to view prompts; source visibility restrictions still apply.
DiscoveredList the Default, custom and archived streaming schedules for a website. Use each row's selection value when filtering analytics or responses. Default includes all pre-cutover history and ad hoc runs; archived schedules retain results. To combine schedules, pass several selection values as an array in the schedule field of query_metrics and query_rows, or use a saved view that stores several schedules. Partner REST filters take one schedule. starts_on and ends_on bound a custom schedule's active period as UTC days (null means no bound); an active schedule outside its period does not run.
DiscoveredList prompt tags for a website with per-tag prompt counts. Tag IDs can be used with the prompt_tags filter on the prompts endpoint.
DiscoveredList prompts (search queries) tracked for a website
DiscoveredFetch a single LLM response by id with full sources, mentions, and rank details.
DiscoveredRead the latest (or a specific) response-streaming run's whole-run state and response-queue progress. Only completed means downstream analysis has finished
DiscoveredGet LLM responses for a website. Shows how AI models answer queries, with sources, sentiment, and ranking data. Filter by whether a model used search queries or by text within those queries. For a variation-level export at volume, pair filters.variation_filter with include_response: false and compact_sources: true. That keeps the prompt, its variation, the model, the mentioned/cited flags and the cited domains while dropping the answer text, cutting each row to roughly a tenth of its size.
DiscoveredList saved views (filter presets) for a website
DiscoveredRead saved Google organic rankings by explicit market and device alongside observed AI visibility. Includes recent history, missing-data reasons, freshness and committed provider budget. Does not trigger collection.
DiscoveredGet cumulative share of voice — overall SOV for each competitor across the date range. Each entry also includes relative_mention_rate: the share of responses mentioning any tracked brand that mention this entity.
DiscoveredGet share of voice over time — how often the website is mentioned vs competitors, grouped by day. Each entry also includes relative_mention_rate: the share of that day's responses mentioning any tracked brand that mention this entity.
DiscoveredGet the Shopping Insights dashboard for a website over a date range: how often the brand's products appear in AI shopping answers (product carousels) versus competitors, average position and price, the top own and competitor products, the competitor leaderboard, retailer (merchant) breakdown, rank distribution, price comparison, and a daily appearances trend. Rates are percentages 0-100; positions are 1-based (lower is better). Requires a paid plan.
DiscoveredLive Google Analytics 4, Google Search Console and AI-citation figures for a website over the last 28 complete days, each beside the 28 days before (period gives both ranges; change_pct is null when the earlier period was zero). ga4: AI-referred sessions, their engagement rate and key events, organic and total sessions, AI share of sessions in percent, daily AI sessions, and the top 10 AI sources, AI landing pages and organic landing pages. gsc: clicks, impressions, CTR in percent and average position, a daily series, and the top 10 queries and pages. cited_pages: the website's pages AI answers cited most, with the Google figures for the same page. connected false means no Google property is linked for that provider; available false means it is linked but the read failed. Read live from Google, so a connection made a moment ago shows at once. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredPage through every page one Site Health issue affects, 50 per page, open pages first and most recently seen first within a status. Give the check from the issue list; filter by status; page is 0-based and has_more says whether to continue; page 0 starts from the first affected page, so it repeats the sample pages the issue list showed inline. page_id returns that one page's row for the check. Each row carries the finding_id and task_revision an update of the page's task needs, the finding's detail, recommendation and evidence, the assignee, and the dates it was first and last seen and last checked. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredList a website's Site Health issues: one group per kind of problem (check) with its title, why it matters, severity (critical, warning, opportunity), priority (high, medium, low), owner (writer, developer or either; null when unknown), effort (minutes, hours, days), whether it is site-wide, counts of affected pages by status (open, in_progress, fixed, verified, dismissed), up to three sections it concentrates in, and sample affected pages with each page's detail, recommendation, evidence, assignee and task_revision. Filter by status, check, a search term, the stored URLs of specific pages (page_urls), or assignee "me" (signed-in connections only). Groups are paged: page is 0-based, page_size defaults to 25 (max 200) and total counts the groups that match; counts totals pages by status across the whole site, ignoring the status filter. A group carries at most 50 sample pages (10 when a tool calls it, which also caps page_size at 25); has_more_pages says to read the rest with the issue pages read (get_site_health_issue_pages or POST /v1/seo/issues/pages), whose page 0 repeats the sample pages. has_evidence false means the site has never been crawled or audited. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredRead one audited page of a Site Health property: what the last audit measured (title, meta description, canonical URL, HTTP status code, word count, whether it is indexable, how the server HTML and the rendered page differ, PageSpeed with performance_score 0 to 100, largest_contentful_paint_ms and interaction_to_next_paint_ms in milliseconds and cumulative_layout_shift unitless, and the hreflang audit), the status of every audit of the page, and every finding on it with its check, detail, recommendation, evidence, severity, priority_score, when it was resolved, and verification: whether the last audit of that check passed, failed or left it unverified, with the reason. page_id comes from get_site_health_pages or from an issue's affected pages. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredBrowse the pages of one Site Health property, 50 per page (page is 1-based) sorted by URL, each with its last audit status and time, its count of open findings and whether it is a priority page (cited by AI answers or a top Google page, so audits read it first). Narrow by check (pages with an open finding of it), one URL, or a search term; total counts the pages that match. groups lists every check with an open finding on the property and its page count, ignoring the filters, highest priority first. Page ids feed get_site_health_page and start_site_health_audit. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredList a website's Site Health properties, the crawl scopes Site Health audits: root URL, included and excluded path prefixes, subdomains, sitemaps, page ceiling (max_pages), whether the property is enabled, the live page count, and the latest crawl or audit run with its status, trigger, counts and timestamps. Use it for the property_id that get_site_health_pages and start_site_health_audit take, and to see whether a run is in progress before starting another. Requires Site Health on the website's plan; otherwise the call fails with 403.
DiscoveredList individual cited URLs (pages) for a website with citation, mention, and impression metrics plus a per-URL daily sparkline. Each row is classified as owned / competitor / partner / third_party. Companion to get_sources (root-domain-level). Supports filters (date range, models, prompts, competitors, locations, personas), search, sort, and pagination.
DiscoveredList top cited sources (root domains) for a website with citation, mention, brand-mention, and impression metrics. Each row is classified as owned / competitor / partner / third_party. Supports filters (date range, models, prompts, competitors, locations, personas), sort, and pagination via page_num / page_size.
DiscoveredList TikTok handles cited in AI answers, ordered by citations with unattributed URLs last. Includes profiles, videos and photos across tiktok.com, www, m, vm and vt hosts. Handles come from cited URLs, not verified account identities; short links are not resolved. Citation shares and totals cover all filtered TikTok citations, including unattributed URLs, independent of pagination. Use get_tiktok_pages with channel_key to drill down. No scraping or live TikTok requests.
DiscoveredList TikTok URLs cited in AI answers, ordered by citations. Includes profile, video, photo and unattributed URLs. Filter by channel_key from get_tiktok_creators. Each page's share_percent and totals use all filtered TikTok citations, including unattributed URLs, even when drilling into one channel or paginating. These are AI-answer citation counts, not TikTok views or engagement. No scraping or live TikTok requests.
DiscoveredList topics (groupings of prompts) for a website, with the count of prompts in each
DiscoveredList tracked content (1st-party drafts, imported pages, 3rd-party placements) with citation, mention, and impression metrics for the supplied date range and filters. Supports pagination via page_num / page_size and optional filtering by Content Hub sheet_id or content_type. A sheet_id of a view-type tab (see get_content_hub_sheets sheet_type) lists the shared main pool: content not filed in any sheet. In-flight pipeline items (drafts, briefs, running generations) never appear here; enumerate those with list_content. A returned item can still lack a url (pipeline finished but not published anywhere yet).
DiscoveredLook up a user by email address, scoped to the caller's organization. Returns 404 when the email does not belong to a member of the organization or of one of its websites.
DiscoveredList YouTube channels cited in AI answers for a website, ordered by citations (unknown channel last). Includes channel citation shares, category and video-length breakdowns, and metadata availability. Totals and breakdowns cover the full filtered result, independent of pagination. Use get_youtube_videos with channel_key to list a creator's videos. Reads saved metadata; pending or missing details remain null.
DiscoveredList YouTube videos cited in AI answers for a website, ordered by citation count. Returns saved titles, channel details, categories, durations, publication dates, citation counts, distinct-response citation percentages and linked timestamps. Watch, Shorts and short-link variants of one video are combined. Filter by channel_key or video_id. Metadata may be pending or missing; no live YouTube fetch is performed.
DiscoveredList the organization's API key metadata, including creator and creation date, oldest first. Includes revoked keys so polling can detect keys revoked between checks. Never returns secrets or hashes. Requires a global API key or an organization admin's MCP connection. For polling, keep since/until fixed while paging, overlap successive windows and deduplicate by id. This is an inventory, not a durable event log; deleted creator accounts remove their keys.
DiscoveredEnumerate every content item in a website's Content Hub, published or not: in-flight drafts, briefs, snipes, optimize and slice runs, scheduled and failed items, plus tracked pages. Returns identity fields only (id, title, type, stage, sheet, URL, timestamps, target prompt ids), no metrics. Uncached and Postgres-backed, so an item created by create_content is listable immediately. Filter by sheet_id, content_type, stage, or prompt_id. stage is the raw pipeline workflow state, not a publication flag: null = no pipeline record (most tracked external / imported pages), and manual editor items carry 'generated'. Treat an item as published only when its stage is done (or it is an external / imported page) AND it has a url; done without a url is an unpublished orphan. A sheet_id of a view-type tab (see get_content_hub_sheets sheet_type) lists the shared main pool without the view's saved filters. Use get_tracked_content for citation and impression metrics on published content; use this tool to discover what exists. Each row carries prompt_ids: the prompts that item was WRITTEN FOR (what create_content was given), capped at 25 with the true size in prompt_count — resolve the ids to text with get_prompts rather than calling get_content_detail per row, and drill in with get_content_detail where prompt_count exceeds the ids returned (that read carries up to 100; associations past 100 are not currently readable). prompt_ids includes soft-deleted prompts, which get_prompts does NOT list — an id that fails to resolve there is a deleted prompt, and get_content_detail returns its text and status: "deleted". Empty prompt_ids means no targeting was recorded, which is normal for imported or externally tracked pages. This is not the same as being cited for a prompt — see get_content_citation_prompts for that. Filter by prompt_id for the reverse question: which content already targets a given prompt (coverage gaps).
DiscoveredRead saved Outreach contacts: cited pages with their status, author, email and where the email came from, LinkedIn, contact page, and pitch draft. Only pages someone has triaged, enriched or drafted are listed; find other cited pages with the source-page analytics tools. Newest first; use offset for the next page. Read-only.
DiscoveredList pitch workspace reports for the organization. Returns all non-deleted pitches with their status and metadata.
DiscoveredList every website accessible to the calling session. Works with any API key (global or scoped) and with MCP/OAuth sessions. Call with an empty argument object `{}`. Each item includes `baseCountry`, the country market the website targets: use it to tell same-brand websites for different countries apart.
DiscoveredMerge 1-20 source pillars into a published target pillar: every fact on the sources (any review status) re-files onto the target, page links carry over keeping the stronger signal, and the source pillars are then deleted. The target must be a published pillar and must not appear among the sources. Unlike the other Knowledge Base writes, retries are strict: missing source ids are rejected rather than skipped, so re-read the pillars before retrying a failed merge.
DiscoveredFile 1-50 brand facts under a published Knowledge Base pillar — works for unfiled facts and re-files facts from other pillars. Review status never changes, and only approved facts under a published pillar feed content generation, so moving is what puts approved facts to work. Missing ids are reported in not_found_ids rather than failing the call, so retries are idempotent.
DiscoveredMove one or more content items to a different Content Hub sheet, or back to the shared pool. Sheet assignment is organizational metadata only: a move never changes an item's stage, brief, body, versions, URL, or metrics, and the item stays fully readable and revisable. targetSheetId must be a "sheet"-type tab from the Content Hub sheets list — view-type tabs (e.g. All content) are computed filters, not assignable; pass null to unassign back to the shared pool they display. Batch is all-or-nothing: if any contentIds entry does not belong to the website, nothing moves. Custom-column values follow each item when the target has a matching column (same name and type; missing columns are auto-created); values whose column conflicts by type are dropped, and multi-select selections whose option is missing on the matched target column are removed — both counts are reported. Each moved item is returned with its previous and new sheet id so no follow-up read is needed.
DiscoveredOpen the AthenaHQ AI crawler access panel. Enter a public HTTPS domain to inspect crawler responses and robots.txt permissions without an AthenaHQ account.
DiscoveredRecent measurements
| Checked | Result | Response | Tools |
|---|---|---|---|
| Connected | 938 ms | 132 |