AthenaHQ
Track how AI assistants mention, cite, and rank your brand and competitors in AI search.
Connect it
Settings → Connectors → Add custom connector
URL: https://api.athenahq.ai/api/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://api.athenahq.ai/api/mcp{
"mcpServers": {
"mcp": {
"url": "https://api.athenahq.ai/api/mcp"
}
}
}claude mcp add --transport http mcp https://api.athenahq.ai/api/mcp{
"servers": {
"mcp": {
"type": "http",
"url": "https://api.athenahq.ai/api/mcp"
}
}
}103 tools, verified live
open_ai_accessread-onlyOpen the AthenaHQ AI crawler access panel. Enter a public HTTPS domain to inspect crawler responses and robots.txt permissions without an AthenaHQ account.
check_public_ai_accessread-onlyCheck 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.
get_prompt_schedulesread-onlyList 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 sched
get_ai_search_valueread-onlyAI 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.
get_promptsread-onlyList prompts (search queries) tracked for a website
get_prompt_tagsread-onlyList prompt tags for a website with per-tag prompt counts. Tag IDs can be used with the prompt_tags filter on the prompts endpoint.
get_personasread-onlyList 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.
get_topicsread-onlyList topics (groupings of prompts) for a website, with the count of prompts in each
get_competitorsread-onlyList competitors tracked for a website
get_content_hub_sheetsread-onlyList 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).
get_tracked_contentread-onlyList 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. In-flight pipeline items (drafts, briefs, running generations) never appear here; enumerate those with list_content. A return
list_contentread-onlyEnumerate 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_
get_content_detailread-onlyFetch 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
get_content_citation_promptsread-onlyFor 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 win
list_websitesread-onlyList 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.
get_locationsread-onlyList geo-locations configured for a website
get_date_rangeread-onlyGet the earliest and latest response dates for a website
get_responsesread-onlyGet 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
get_response_streaming_statusread-onlyRead the latest (or a specific) response-streaming run's whole-run state and response-queue progress. Only completed means downstream analysis has finished
get_response_detailread-onlyFetch a single LLM response by id with full sources, mentions, and rank details.
get_saved_viewsread-onlyList saved views (filter presets) for a website
get_group_saved_viewsread-onlyList group-level saved views (filter presets) shared across the websites in a group
get_credits_organizationread-onlyGet credit balance for the organization
get_credits_websiteread-onlyGet credit balance for a specific website
get_groupsread-onlyList all groups in the organization (global API key only)
get_group_detailread-onlyFetch a single group by id with its member websites.
get_share_of_voice_cumulativeread-onlyGet 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.
get_share_of_voice_time_seriesread-onlyGet 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.
get_citation_rate_cumulativeread-onlyGet cumulative citation rate â average citation rate for each competitor across the date range.
get_citation_rate_time_seriesread-onlyGet citation rate over time â how often AI models cite (link to) the website, grouped by day.
get_mention_rate_cumulativeread-onlyGet 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.
get_mention_rate_time_seriesread-onlyGet 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.
get_position_cumulativeread-onlyGet cumulative position â average ranking position for each competitor across the date range.
get_position_time_seriesread-onlyGet ranking position over time â average position of the website in AI model responses, grouped by day.
get_position_distributionread-onlyGet position distribution: share of responses where the brand ranks top/middle/bottom across the date range.
query_metricsread-onlyQuery aggregated metrics for brand performance, competitors, sources, citations, and response trends. Use query_rows for individual records. Mentions: from "response_mentions". Citations: from "citations". On either, where { is_website: true } selects the brand; { is_competitor: true } selects competitors; { entity_id: { eq: "<uuid>" } } selects one entity. Filter/group models by model_category (
query_rowsread-onlyQuery individual analytics rows. Use for qualitative data like response text, specific identifiers, or individual mentions. Schedule selection: pass schedule: "default" or a custom/archived UUID from the schedule catalog, or an array of them to combine schedules. Omit to use the caller default (Ask Athena uses the current page selection). Explicit selection overrides that default. Existing top-le
list_pitchesread-onlyList pitch workspace reports for the organization. Returns all non-deleted pitches with their status and metadata.
get_pitchread-onlyGet a pitch report by ID including competitors, prompts, attributes, top citing sources, and aggregate metrics (brand mentions, sentiment, response rate).
get_sourcesread-onlyList 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.
get_source_pagesread-onlyList 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.
get_attributesread-onlyList 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_metricsread-onlyGet 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 o
get_competitor_attribute_metricsread-onlyGet 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 attr
get_attribute_time_seriesread-onlyGet 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
get_attribute_observationsread-onlyGet 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 (ext
get_user_by_emailread-onlyLook 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.
get_oracle_findingsread-onlyWhen 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
get_oracle_findingread-onlyWhen 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
add_brand_factsAdd 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 unfil
add_contentAdd 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 a
approve_briefApprove 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.
create_contentGenerate 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. Sli
create_locationCreate a location for a website
create_pillarCreate 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.
create_prompt_tagCreate 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.
create_promptsCreate one or more prompts on a website
create_saved_viewCreate 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", "p
create_source_tagCreate a custom source tag with a name and URL patterns. Research existing tags and cited sources first when recommending changes. Obtain user confirmation before calling. MCP executes immediately after authorization; Athena AI chat presents an approval card. Patterns support hosts (example.com), subdomains (*.example.com), path sections (example.com/blog), exact pages (example.com/blog$), and que
create_topicCreate a topic on a website (returns the existing topic when the name is already taken)
delete_brand_factscan modifyPermanently 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.
delete_contentcan modifyDelete a content row. Destructive: physical row delete, no undo. Powers delete-and-retry. Bulk delete is out of scope.
delete_locationcan modifyDelete a location from a website
delete_pillarscan modifyPermanently 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.
delete_promptcan modifyDelete a prompt (soft when responses exist, hard otherwise)
delete_source_tagcan modifyPermanently delete a custom source tag and all its pattern assignments; retain source records. Read the source-tag listing tool first and supply the tag's current revision in the expected-revision input. Built-in source categories cannot be deleted. Obtain explicit user confirmation identifying the tag and its assignments before calling. MCP executes immediately after authorization; Athena AI chat
delete_topiccan modifyDelete a topic (soft delete; optionally also delete its prompts)
edit_contentApply 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
get_brand_factsread-onlyList 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).
get_content_draftread-onlyRead 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 p
get_content_statusread-onlyGet 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 alway
get_content_versionread-onlyRead 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.
get_content_versionsread-onlyList 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.
get_credit_usageread-onlyRead 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 origi
get_credit_usage_eventsread-onlyRead 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
get_identifiersread-onlyRead 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_identifi
get_pillar_documentread-onlyFetch a pillar's synthesized markdown document from the Knowledge Base. Returns document: null when the pillar exists but has no synthesized document yet.
get_pillarsread-onlyList 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.
get_prompt_discovery_runsread-onlyRead 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
get_seo_rankingsread-onlyRead 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.
get_shopping_metricsread-onlyGet 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
list_source_tagsread-onlyRead custom source tags, URL patterns, and revision tokens. These are not prompt tags or built-in categories (Owned, Competitor, Partner, Third party). Read before creating, editing, or deleting. Filter by name substring or tag ID. Use the tag offset to page tags; use a tag ID and pattern offset to page its patterns. Research cited sources with existing source analytics tools before recommending c
merge_pillarscan modifyMerge 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 th
move_brand_factsFile 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.
move_contentcan modifyMove 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 filte
publish_contentRecord an already-published article's URL in AthenaHQ for citation and mention tracking. Does not upload or publish content to a website or CMS. Call only after the article is live. Sets the first publication time and moves the pipeline stage to done. A first publish requires a finished article (stage generated), with one exception: an optimize draft is created from a page that is already live and
rename_contentRename a content row's title. URL editing is not supported â URL is the content asset's stable identity and cannot be changed here.
restore_content_versionBring an earlier version's text back as the current draft â use it when a later pass came out worse than an earlier one. Nothing is deleted: the restored text is appended as a new version on top of the history, so the passes in between remain readable and restorable.
revise_briefRewrite a content brief from a natural-language instruction (for example: 'add a section on pricing objections', 'cut the competitor comparison'). An AI model performs the rewrite server-side, so the result is generated text, not your literal wording. Records each pass as a version; iterate by calling it again, since each call starts from the current brief. Most useful while a piece waits at statu
revise_contentRewrite an existing content draft from a natural-language instruction (for example: 'tighten the intro', 'add a section on pricing', 'remove the second half'). An AI model performs the rewrite server-side, so the result is generated text, not your literal wording; when you already have the exact replacement text, use edit_content instead. Applies the change to the whole article and records it as a
search_brand_factsread-onlySemantic search over a website's approved brand facts in the Knowledge Base. Reaches facts not filed under any pillar. Returns fact text with confidence, source URL and quote, and the published pillar it belongs to (null when unfiled).
set_prompt_tagscan modifyReplace all tag assignments on an existing prompt. For additions or removals, read the prompt's current tags with get_prompts, resolve tag IDs with get_prompt_tags, and pass the full resulting set. Existing assignments omitted from tag_ids are removed; an empty array clears all assignments. Tag definitions and the prompt itself are preserved.
set_prompts_statusPause or unpause multiple prompts in one transaction
start_prompt_discoveryStart a Discover study to find evidence-grounded, untracked prompt opportunities for a website. Invoke after explicit user intent to start research and review the sources, country, language, requested prompt count and custom instructions with the user. This launches asynchronous external research and model calls; the prompt count is a target, not a guaranteed yield. Sources: website_analysis (webs
start_response_streamingRun tracked prompts against external AI providers to collect new responses for a website. Sends prompt text to the selected providers, stores their responses in AthenaHQ, and consumes response credits. Starts immediately; use only for a user-requested run. Returns a workflow_id; poll get_response_streaming_status over MCP or GET /api/v1/response-streaming/status over the API for progress.
track_content_urlsRegister existing pages or third-party URLs as tracked Content Hub items so Athena attributes citations and mentions to them. Creates external content rows from bare URLs with no generation and no credit cost. Tracking starts immediately: the normalized URL becomes the citation/metric join key, so pages cited in the website's monitored AI responses accrue metrics with no publish step (use it for g
update_brand_factUpdate one brand fact's text, source URL, or confidence in the Knowledge Base. Only provided fields change; pass source_url: "" to clear the source. Changing the text creates a new fact (new id) and archives the current one; the new fact keeps the current review status and the response carries it. Source URL and confidence edits update the fact in place. Duplicates across other facts are not rejec
update_identifierscan modifyAdd or remove identifiers on the website's brand, or on one competitor, under the same rules as the Competitors page. Call get_identifiers first. The name and domain cannot be removed. An identifier that is already listed, or that another tracked brand or competitor on this website already uses, is refused, and nothing is saved. New AI responses use the change right away. Past responses are reanal
update_locationUpdate a location for a website
update_pillarUpdate a Knowledge Base pillar's name, description, or status. At least one of name, description, or status must be provided; only provided fields change, and description: "" clears the stored description. Renaming fails with a conflict when another pillar already uses the name. Status accepts published or archived: archiving hides the pillar from get_pillars and stops its facts feeding content ge
update_promptUpdate a prompt's metadata (text, type, topic, geography)
update_source_tagcan modifyEdit a custom source tag: rename it, add URL patterns, or remove exact patterns returned by the source-tag listing tool. Other patterns and color stay unchanged. Read the source-tag listing tool first and supply the tag's current revision in the expected-revision input. Obtain explicit user confirmation of the name and pattern changes before calling; do not apply a recommendation without permissio
update_topicUpdate a topic's name or description
Change history
Alternatives in Search & Research
Compare →
runxA
The governed runtime for agent skills. Search the catalog and inspect a skill before running it.
DODocsA
Search and read Empryo's documentation. Read-only, no auth, no local access.
MUMuA
News, web search, mail, markets, weather, places, files, calendar, contacts. 67 tools, one endpoint.
FRFerritin — Rust documentationA
Search and read Rust documentation for the standard library and any crate on crates.io
RTRef Tools MCPA
Token-efficient search for coding agents over public and private documentation.
FBfojin — Buddhist Canon ToolsA
Buddhist canon tools: search, passages, cross-canon parallels, dictionaries — all URN-cited.