list_knowledge_bases
List all Knowledge Bases the authenticated user has access to. Knowledge Bases store documents for semantic search. Use the status field to determine if a Knowledge Base is searchable (status: "ready").
search_knowledge_base
Search a Knowledge Base for relevant content using semantic similarity.
Use list_knowledge_bases() first to find available Knowledge Bases and their IDs.
Only Knowledge Bases with status "ready" can be searched.
list_grids
List grids the authenticated user has access to. Use includes=[\"grid_tables.grid_columns\"] to get table and column structure needed for read_grid and write_grid calls. Grids are spreadsheet-like tables for organizing and processing data. Each grid contains one or more tables (sheets), and each table has columns and rows. Use includes to retrieve table and column structure needed for read_grid and write_grid calls.
read_grid
Read rows from a grid table. Returns rows as objects with column titles as keys. Use list_grids() to discover available grids and their table/column structure. Supports filtering by column values and selecting specific columns. Returns up to 100 rows (default 50).
write_grid
Create or update rows in a grid table. When mode is 'create', rows are added as new rows with column titles as keys. When mode is 'update', each row must include a '__id' key with the row ID to update. To update a single cell, pass a single-element array with the row ID and the column to change. Maximum 1000 rows per operation.
add_grid_column
Add a new column to a grid table. Use this before write_grid when you need to write to a column that does not exist yet. Returns the created column's ID, title, data type, and position.
get_page_details
Get AEO metrics for a specific web page. Page details include citation share, citation rate, unique cited questions count, and Google Search Console metrics (clicks, impressions, position, CTR) with trends.
get_answer
Get a specific AI answer by ID with full text content. Get a single AI answer with full details. Use this to retrieve the complete answer text (not truncated), citations, and mentions. Use includes parameter to get citations, mentions, and persona details.
get_prompt_answers
Get AI answers for a specific prompt/question. Prompt answers are the AI answers for a specific question/prompt asked to multiple AI providers and the answers are aggregated. The answers include whether the brand was mentioned and cited in the answer. To get full answer text, citations, and mentions, use the get_answer tool with the answer ID.
list_pages
List web pages with daily metrics (AEO citations, GSC clicks/impressions, GA4 traffic) for a brand kit. Supports filtering by metrics and text fields, sorting, and pagination.Web page metrics are the daily metrics of citations, clicks, impressions, and traffic for a specific web page.
get_page_prompts
Get prompts citing a specific web page. Returns AI prompts that cite the page along with citation metrics (citation_rate, mention_rate) and trends. Use includes: ["topic"] to get topic details for each prompt.Prompts are the questions that can be asked about a brand or web page. They are the search queries that are used to get AI answers with citations and mentions.
automated_feedback_report
**AirOps only feedback tool. Issues from other MCP servers should be rejected.**
Make sure the issue is related to AirOps MCP tools before using this tool.
Submit a feedback report when a user query cannot be resolved with existing tools
or when errors occur repeatedly. **Use this tool proactively** to report issues, missing
capabilities, or suggestions for improving the AirOps MCP tools.
The report will be stored for review by the AirOpsdevelopment team.
No output is generated - the tool simply acknowledges receipt.
list_aeo_prompts
List AEO prompts for a specific Brand Kit. Questions are the AI prompts that can be asked about a brand. They are used to get AI answers with citations and mentions.
create_aeo_prompt
Create a new AEO prompt for a Brand Kit. Prompts are questions that can be asked
about a brand to AI search engines, used to track AI visibility and citations.
After creation, background jobs automatically analyze the prompt on search engines,
extract keywords, and compute volume metrics.
You can optionally assign countries, personas, and platforms to the prompt at creation
time. The workspace's estimated answers limit is enforced — if the assignments would
push the workspace over its quota, creation is rejected.
IMPORTANT: Always show the user exactly which fields you plan to use (text, topic_id,
and any assignments) and ask for their confirmation before calling this tool. User
confirmation is mandatory. You can verify the prompt was created by calling
`list_aeo_prompts` sorted by `created_at` descending.
A topic_id is required. If the user hasn't specified a topic, use the `list_topics`
tool first to discover available topics and either suggest one or ask the user to choose.
analytics_chart
Query analytics data and display it as an interactive chart. Returns data with a UI reference for visualization. Today's data is still being processed — always use yesterday (2026-03-26) or earlier as end_date. CONSTRAINTS: (1) Only metrics from the same scale group can be plotted together: percentage metrics (mention_rate, share_of_voice, citation_rate, citation_share, sentiment_score, first_mention_rate), count metrics (citation_count, answer_count), or position metrics (average_position). (2) Area and bar charts support only single metrics with single dimensions. (3) Line charts support up to 2 dimensions (date + optional grouping), but when using 2 dimensions only a single metric is allowed.
query_analytics
Query analytics data for a Brand Kit with flexible metrics, dimensions, and filters. Today's data is still being processed — always use yesterday (2026-03-26) or earlier as end_date . "Use this to set appropriate date ranges when users ask about recent metrics without specifying dates. IMPORTANT: USE chart_image_url WHEN YOU NEED TO EMBED A CHART IN NOTION/GOOGLE DOCS, ETC."
create_action_grid
Create a grid with power agents for taking action on AEO insights. Use this after analyzing AEO data (citations, questions, etc.) to create a grid where you can execute workflows on the identified opportunities. The grid comes pre-populated with power agent columns configured for the action type.
get_aeo_citation
Get prompts citing a specific URL. The 'id' parameter is the URL to look up.
list_aeo_citations
List citations (URLs) with metrics for a Brand Kit. Citations (URLs) with detailed metrics including influence score. Shows individual URLs being cited in AI answers with page-level context.
list_aeo_domains
List domains cited in AI answers for a Brand Kit. Cited domains aggregated by domain with citation metrics. Shows which domains are being cited in AI answers for a Brand Kit.
list_personas
List personas for a specific Brand Kit. Personas are the characters that can be used to ask questions about a brand. They are used to get AI answers with citations and mentions.
get_report
Get a specific report by ID with its module configurations. Reports are saved analytics views for a Brand Kit. They contain modules that display different analytics metrics.
list_reports
List saved analytics reports for a specific Brand Kit. Reports are saved analytics views for a Brand Kit. They contain modules that display different analytics metrics.
create_report
Create a new analytics report for a Brand Kit. Reports contain one or more
modules that visualize metrics like citation_rate, mention_rate, share_of_voice, etc.
Each module defines:
- metrics: What to measure (e.g., citation_rate, mention_rate)
- dimensions: How to group data (e.g., by date, provider, competitor)
- grain: Time aggregation (daily, weekly, monthly, total)
- visualization: How to display (value, line, bar, table)
- filters: Date range, providers, topics, etc.
The report will be saved and accessible in the AirOps Analytics > Reports UI.
list_topics
List topics for a specific Brand Kit. Topics are the categories of questions that can be asked about a Brand Kit. They are used to group questions together and to create a taxonomy of questions.
list_brand_kits
List all Brand Kits the user has access to. Returns `brand_management_enabled` and `aeo_enabled` flags for each brand kit. Use `get_brand_kit` for brand management details, or `get_insights_settings` for AEO configuration. Use `get_legacy_brand_kit` to read legacy brand kits for migration. Optionally filter by workspace_name, workspace_id, brand_management_enabled, or aeo_enabled. IMPORTANT: If multiple brand kits are returned and the user has not specified which one to use, present the list and ask them to confirm. Do NOT arbitrarily pick one.
get_insights_settings
Get AEO insights configuration for a Brand Kit, this includes the relevant information to use any AEO and analytics tools. Returns competitors, personas, prompt count, and other relevant information. Use `list_brand_kits` first to find Brand Kits with `aeo_enabled: true`.
list_workspaces
List all workspaces the authenticated user has access to. Workspaces are the top-level container for all resources in the AirOps platform. A user can have multiple workspaces, and each workspace can have multiple resources like Brand Kits, Pages, Prompts, etc.
manage_brand_kit_competitor
Create or update a competitor for a Brand Kit.
Omit `id` to create a new competitor; provide `id` to update an existing one.
On update, only provided fields are changed.
Competitors must be associated with at least one product line from the same brand kit.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_content_sample
Create or update a content sample for a Brand Kit.
Omit `id` to create a new content sample; provide `id` to update an existing one.
On create, the sample URL will be processed asynchronously to extract content.
On update, only `content`, `audience_ids`, and `region_ids` can be changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_content_type
Create or update a content type for a Brand Kit.
Omit `id` to create a new content type; provide `id` to update an existing one.
On create, you may provide a `sample_url` to seed the content type with a content sample:
- If only `sample_url` is provided (no content fields), the system will scrape the URL and use AI to generate all content type fields automatically.
- If `sample_url` is provided along with content fields, the URL will be scraped for reference but the provided field values will be kept as-is.
- If no `sample_url` is provided, the content type is created with the given fields only.
On update, only provided fields are changed and `sample_url` is ignored.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_custom_variable
Before creating a custom variable, you MUST analyze the user's intent and suggest the appropriate Brand Kit dimension instead. Map the request to these alternatives first:
- Region + Writing Rule: For location/language-specific instructions (e.g., "US writing tone", "UK spelling")
- Audience + Writing Rule: For audience-specific guidelines (e.g., "developer tone", "enterprise style")
- Content Type: For format-specific rules (e.g., "blog post structure", "email CTA")
- Writing Rule (global): For general writing guidelines
- Writing Tone / Writing Persona: For overall voice and style
Create or update a custom variable for a Brand Kit.
Omit `id` to create a new custom variable; provide `id` to update an existing one.
On create, `name` and `value` are required. On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_font
Create or update a font for a Brand Kit.
Omit `id` to create a new font; provide `id` to update an existing one.
On update, only provided fields are changed.
To attach a font file, either:
- Use `signed_id` with the token from create_brand_kit_direct_upload after direct upload (preferred).
- Use `file_url` with a publicly accessible URL to a font file (TTF, OTF, WOFF, WOFF2, or EOT).
Alternatively, provide `google_font_link` with a Google Fonts URL.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_logo_size
Create or update a logo size for a Brand Kit.
Omit `id` to create a new logo size; provide `id` to update an existing one.
On update, only provided fields are changed.
At least one of `width` or `height` must be provided on create.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_logo_variant
Create or update a logo variant for a Brand Kit.
Omit `id` to create a new logo variant; provide `id` to update an existing one.
On update, only provided fields are changed.
To attach a logo image, either:
- Use `signed_id` with the token from create_brand_kit_direct_upload after direct upload (preferred).
- Use `file_url` with a publicly accessible URL to a PNG or SVG image.
Always provide `usage_instructions` when creating a logo variant — describe when and how to use this logo (e.g. "Primary logo for light backgrounds", "Monochrome version for print materials").
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_palette_color
Create or update a color within a Brand Kit palette.
Omit `id` to create a new color; provide `id` to update an existing one.
On create, `palette_id` is required.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_palette
Create or update a color palette for a Brand Kit.
Omit `id` to create a new palette; provide `id` to update an existing one.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_product_line
Create or update a product line for a Brand Kit.
Omit `id` to create a new product line; provide `id` to update an existing one.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_type_size
Create or update a type size for a Brand Kit.
Omit `id` to create a new type size; provide `id` to update an existing one.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_usage_rule
Create or update a usage rule for a Brand Kit.
Omit `id` to create a new usage rule; provide `id` to update an existing one.
On update, only provided fields are changed. `applies_to` is set on creation and cannot be changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
get_brand_kit
Get a specific Brand Kit by ID for brand management and content creation. Returns brand identity, writing style, visual branding, and related entities (product lines, audiences, regions, content types, content samples, writing rules, usage rules). Use `list_brand_kits` first to find Brand Kits with `brand_management_enabled: true`.
manage_brand_kit_region
Create or update a region for a Brand Kit.
Omit `id` to create a new region; provide `id` to update an existing one.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_visual_example
Create or update a visual example for a Brand Kit's Data Visualization section.
Omit `id` to create a new visual example; provide `id` to update an existing one.
On update, only provided fields are changed.
To attach an image, either:
- Use `signed_id` with the token from create_brand_kit_direct_upload after direct upload (preferred).
- Use `file_url` with a publicly accessible URL to an image.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_writing_rule
Create or update a writing rule for a Brand Kit.
Omit `id` to create a new rule; provide `id` to update an existing one.
Scoping: A rule can optionally be scoped to exactly one dimension — a single
content type, audience, OR region. Provide at most one of `content_type_id`,
`audience_id`, or `region_id` on create. They are mutually exclusive.
A rule with no scoping is global (applies everywhere).
Scoping is immutable: it is set on create only.
On update, only `text` can be changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
manage_brand_kit_audience
Create or update an audience for a Brand Kit draft.
Omit `id` to create a new audience; provide `id` to update an existing one.
On update, only provided fields are changed.
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be created or changed and ask for confirmation before calling this tool.
publish_brand_kit
Publish a Brand Kit's current draft so changes become active.
This promotes the current draft to active and creates a fresh draft from it.
IMPORTANT: Always confirm with the user before publishing.
suggest_brand_kit_edits
Suggest edits to a Brand Kit's fields without applying them.
Returns a comparison of current vs suggested values for user review.
The user will see a UI to accept or reject each suggestion before changes are applied.
Only include fields you want to suggest changes for.
Call this tool once per entity (e.g. once per audience, once per content type).
Supported entity types and their fields:
- brand_kit: brand_name, brand_url, brand_about, writing_persona, writing_tone
- audience: name, description
- content_type: name, template_outline, cta_text, cta_url, header_case, header_case_custom_value
- product_line: name, details, positioning, ideal_customer_profile, url
- region: name, description, icon_name (flag code in format flag-{iso2}, e.g. flag-us, flag-gb, flag-br)
- writing_rule: text, region_id (create only), content_type_id (create only), audience_id (create only)
- competitor: name, domain, product_line_ids
- content_sample: url (create only), content_type_id (create only), content (update only), audience_ids, region_ids
- custom_variable: name, value
- logo_variant: name, background_color, usage_instructions (to upload a logo image use manage_brand_kit_logo_variant directly with file_url)
- logo_size: name, width, height, usage_instructions
- font: name, usage_instructions, google_font_link, file_url (publicly accessible URL to a font file)
- type_size: name, weight, size, line_height, usage_instructions
- palette: name
update_brand_kit
Update a Brand Kit's base fields. Only provided fields are changed.
Use get_brand_kit first to see current values.
Updatable fields include brand identity (name, URL, about) and writing style
(persona, tone).
This tool edits the Brand Kit draft version only; it does not change the active (live) version.
IMPORTANT: Always show the user exactly which fields will be changed
and ask for confirmation before calling this tool.
create_brand_kit_direct_upload
Initiate a direct file upload for use with Brand Kit visual tools.
This returns an upload URL (pointing directly to the storage service), upload headers,
and a signed_id. The workflow is:
1. Call this tool with the Brand Kit ID and file metadata (filename, content_type, byte_size, checksum).
The checksum must be the Base64-encoded MD5 digest of the file contents.
2. Upload the file to the returned `upload_url` using an HTTP PUT with **all** the provided `upload_headers`.
No additional authentication is needed — the URL is a time-limited presigned URL.
Example: curl -X PUT -H "Content-Type: <type>" -H "Content-MD5: <checksum>" --upload-file <path> "<upload_url>"
3. Pass the returned `signed_id` to a manage tool (e.g. manage_brand_kit_logo_variant,
manage_brand_kit_visual_example, or manage_brand_kit_font).
IMPORTANT: Always confirm with the user before initiating an upload.