Tools
The AirOps MCP server tools reference: give Claude, Cursor, and other AI assistants programmatic access to AEO analytics, Brand Kits, Grids, and Knowledge Bases in your AirOps workspace.
The AirOps MCP server gives AI assistants like Claude and Cursor programmatic, AI-native access to your AirOps workspace. This page lists the tools it exposes for accessing and managing your data, organized into several areas: AEO (Answer Engine Optimization) for AI visibility analytics, prompt setup, and reports, Brand Management for managing brand identity, writing style, and visual assets, Grids for reading, writing, and creating Grid data programmatically, and Knowledge Bases for semantic search and document ingestion.
List and get tools support filtering, field selection, sorting, and pagination where applicable. Write tools document their required fields in each section.
Workspace & Brand Kit
list_workspaces
List all workspaces you have access to.
Returns: Workspace ID, name, slug, and subscription tier.
Filters
name, tier
Sort
name, created_at
list_brand_kits
List all Brand Kits you have access to. Returns brand_management_enabled and aeo_enabled flags for each Brand Kit, so you know which capabilities are available.
Use
get_brand_kitfor Brand Kits withbrand_management_enabled: trueUse
get_insights_settingsfor Brand Kits withaeo_enabled: true
Returns: Brand Kit ID, name, about, URL, workspace name, brand_management_enabled, and aeo_enabled.
Filters
workspace_name, brand_name, brand_url, brand_management_enabled, aeo_enabled
Sort
brand_name, created_at
get_brand_kit
Get a specific Brand Kit by ID for brand management and content creation. Returns brand identity, writing style, and related entities.
Requires: id
Returns: Brand name, URL, about, writing persona, writing tone, status, and timestamps. Optionally includes related entities with nested data.
Includes
product_lines, product_lines.competitors, audiences, audiences.writing_rules, content_types, content_types.content_samples, content_types.writing_rules, regions, regions.writing_rules, writing_rules, custom_variables
get_insights_settings
Get AEO insights configuration for a Brand Kit. Returns the information needed to use any AEO and analytics tools.
Requires: id
Returns: Brand Kit ID, name, URL, countries, AEO status, prompt count, customer description, competitors with domain URLs, and personas.
update_brand_kit
Update a Brand Kit's base fields. Only provided fields are changed.
Requires: brand_kit_id
Updatable fields: brand_name, brand_url, brand_about, writing_persona, writing_tone
list_topics
List topics configured for a Brand Kit.
Requires: brand_kit_id
Returns: Topic ID, name, and color.
Filters
name
Sort
name, created_at
create_topic
Create a new topic for a Brand Kit. Topics group tracked prompts and analytics views by theme.
Requires: brand_kit_id, name
Optional fields: color
update_topic
Update a topic's name or color. Existing prompt assignments stay attached to the topic.
Requires: brand_kit_id, topic_id
Fields: name, color
delete_topic
Delete a topic from a Brand Kit.
Requires: brand_kit_id, topic_id
Deleting a topic can affect prompt organization and reporting views. Confirm the topic and downstream impact before calling this tool.
list_personas
List personas configured for a Brand Kit.
Requires: brand_kit_id
Returns: Persona ID, title, and description.
Filters
title
Sort
title, created_at
publish_brand_kit
Publish a Brand Kit's current draft so changes become active. All changes made via update_brand_kit, manage_brand_kit_*, and suggest_brand_kit_edits are applied to a draft. Publishing promotes the draft to active and creates a fresh draft from it.
Requires: brand_kit_id
Always confirm with the user before publishing. This makes all pending changes live.
create_brand_kit_recap_entry
Record a recap entry summarizing Brand Kit changes made during an MCP session. Use this once near the end of a session that changed the Brand Kit, with evidence such as source URLs, page names, or short quotes in body_markdown.
Requires: brand_kit_id, title
Optional fields: body_markdown
Returns: Recap entry ID, title, source, and success message.
Brand Kit Management
Tools for creating and updating Brand Kit entities. Each tool supports both create (omit id) and update (provide id) operations. On update, only provided fields are changed.
Changes are saved to a draft. Use publish_brand_kit to make them active.
manage_brand_kit_product_line
Create or update a product line for a Brand Kit.
Requires: brand_kit_id
Fields: name (required on create), url, details, positioning, ideal_customer_profile
manage_brand_kit_competitor
Create or update a competitor for a Brand Kit. Competitors must be associated with at least one product line.
Requires: brand_kit_id
Fields: name (required on create), domain, product_line_ids (at least one required)
manage_brand_kit_audience
Create or update an audience for a Brand Kit.
Requires: brand_kit_id
Fields: name (required on create), description
manage_brand_kit_region
Create or update a region for a Brand Kit.
Requires: brand_kit_id
Fields: name (required on create), description, icon_name (flag icon, e.g., flag-us)
manage_brand_kit_content_type
Create or update a content type for a Brand Kit. On create, you can provide a sample_url to seed the content type. The system will scrape the URL and use AI to generate fields automatically.
Requires: brand_kit_id
Fields: name (required on create), template_outline, cta_text, cta_url, header_case (title_case, sentence_case, custom), header_case_custom_value, sample_url (create only)
manage_brand_kit_content_sample
Create or update a content sample for a Brand Kit. On create, the sample URL is processed asynchronously to extract content.
Requires: brand_kit_id
Fields: url (required on create), content_type_id (required on create), content (update only), audience_ids, region_ids
manage_brand_kit_writing_rule
Create or update a writing rule for a Brand Kit. Rules can be global or scoped to a single content type, audience, or region (mutually exclusive). Scoping is set on create only.
Requires: brand_kit_id
Fields: text (required on create), content_type_id (create only), audience_id (create only), region_id (create only)
manage_brand_kit_custom_variable
Create or update a custom variable for a Brand Kit. Custom variables are discouraged for most use cases. Prefer using regions, audiences, content types, or writing rules instead.
Requires: brand_kit_id
Fields: name (required on create), value (required on create)
create_brand_kit_direct_upload
Initiate a direct upload for Brand Kit visual assets such as logos, visual examples, and font files. The tool returns a presigned upload URL, upload headers, and a signed_id to pass to the relevant visual asset manage tool.
Requires: brand_kit_id, filename, content_type, byte_size, checksum
Returns: signed_id, upload_url, and upload_headers.
manage_brand_kit_palette
Create or update a color palette for a Brand Kit draft.
Requires: brand_kit_id
Fields: name (required on create)
manage_brand_kit_palette_color
Create or update a color inside a Brand Kit palette.
Requires: brand_kit_id
Fields: palette_id (required on create), name (required on create), value (required on create), usage_instructions
manage_brand_kit_logo_variant
Create or update a logo variant for a Brand Kit draft. Attach a file with signed_id from create_brand_kit_direct_upload or with a public file_url.
Requires: brand_kit_id
Fields: name (required on create), background_color, usage_instructions, signed_id, file_url
manage_brand_kit_logo_size
Create or update recommended logo dimensions and usage instructions.
Requires: brand_kit_id
Fields: name (required on create), width, height, usage_instructions
manage_brand_kit_font
Create or update a Brand Kit font. Attach a font file with signed_id from create_brand_kit_direct_upload or with a public file_url.
Requires: brand_kit_id
Fields: name (required on create), usage_instructions, google_font_link, signed_id, file_url
manage_brand_kit_type_size
Create or update a typography size associated with a Brand Kit font.
Requires: brand_kit_id
Fields: font_id, name (required on create), weight, size, line_height, usage_instructions
manage_brand_kit_usage_rule
Create or update a Brand Kit usage rule. applies_to is set on create and cannot be changed later.
Requires: brand_kit_id
Fields: name (required on create), applies_to (required on create)
manage_brand_kit_visual_use_case
Create or update a visual use case, a named group of visual examples with shared instructions.
Requires: brand_kit_id
Fields: name (required on create), instructions
manage_brand_kit_visual_example
Create or update a visual example for a Brand Kit. Visual examples must be grouped under a visual use case. Attach an image with signed_id from create_brand_kit_direct_upload or with a public file_url.
Requires: brand_kit_id
Fields: visual_use_case_id (required on create), title (required on create), sample_url, usage_instructions, signed_id, file_url
suggest_brand_kit_edits
Interactive App: This tool renders a review UI in the conversation. Available on Claude Web and Desktop only.
Suggest edits to a Brand Kit's fields without applying them directly. Returns a side-by-side comparison of current vs suggested values, and the user can accept or reject each suggestion through an interactive UI before changes are applied.
Call this tool once per entity (e.g., once per audience, once per content type).
Requires: brand_kit_id, suggestions
Parameters:
entity_type
Which entity to edit: brand_kit, audience, content_type, product_line, region, writing_rule, competitor, content_sample, custom_variable
id
Record ID for existing records (omit to suggest creating a new record)
suggestions
Field name to suggested value pairs (valid fields depend on entity type)
title
Optional heading for the review UI
Supported fields by entity type:
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
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
AEO Prompts & Answers
list_aeo_prompts
List tracked AI prompts for a Brand Kit.
Requires: brand_kit_id
Returns: Prompt ID, text, keyword, whether brand is mentioned, volume, topic ID, timestamps, mention_rate, citation_rate, and trends.
Filters
text, strategy, brand_mentioned, topic_id, prompt_volume, mention_rate, citation_rate
Sort
text, created_at, prompt_volume, mention_rate, citation_rate
Includes
topic, tags
Date filters
start_date, end_date, providers, countries, personas
create_aeo_prompt
Create a new tracked AEO prompt for a Brand Kit. Background jobs analyze the prompt, extract keywords, and compute volume metrics after creation.
Requires: brand_kit_id, text, topic_id
Optional fields: countries, persona_ids, platforms
Creating prompts can affect answer volume. Confirm the prompt text, topic, and assignments with the user before calling this tool.
get_prompt_answers
Get AI answers for a specific prompt.
Requires: prompt_id
Returns: Answer ID, text (truncated), provider, country, brand_mentioned, brand_cited, timestamps.
Filters
countries, personas
Sort
created_at
Includes
persona
get_answer
Get a specific AI answer by ID with full text content.
Requires: id
Returns: Full answer text (not truncated), provider, country, brand_mentioned, brand_cited, and optionally citations, mentions, and persona details.
Includes
citations, mentions, persona
Use this after get_prompt_answers to retrieve complete answer text with citation URLs and positions.
list_answers
List AI answers across a Brand Kit with filters for date range, providers, countries, personas, and other AEO dimensions. Use this when you need answers across many prompts instead of answers for one prompt.
Requires: brand_kit_id
AEO Setup and Prompt Management
create_aeo_persona
Create a new AEO persona for a Brand Kit. Personas represent the user perspectives used to simulate AI search queries.
Requires: brand_kit_id, title, description
Optional fields: add_to_all_prompts
add_aeo_region
Add an ISO alpha-2 country code to a Brand Kit's configured AEO regions.
Requires: brand_kit_id, country_code
Optional fields: add_to_all_prompts
list_tags
List AEO tags configured for a Brand Kit.
Requires: brand_kit_id
Filters
name
Sort
name, created_at
create_aeo_tag
Create a new AEO tag on a Brand Kit. Tags are user-defined labels that can be applied to prompts.
Requires: brand_kit_id, name
Optional fields: color
update_aeo_tag
Update an AEO tag's name or color. Existing prompt taggings are preserved.
Requires: brand_kit_id, tag_id
Fields: name, color
delete_aeo_tag
Delete an AEO tag from a Brand Kit and remove it from every prompt that uses it.
Requires: brand_kit_id, tag_id
This action permanently deletes the tag and removes its prompt taggings. Confirm the tag and impact before calling it.
bulk_update_aeo_prompt_tags
Add or remove one or more tags across a batch of AEO prompts in one transaction.
Requires: brand_kit_id, prompt_ids, operation, tag_ids
Operations: add, remove
update_aeo_prompt_assignments
Stage draft assignment changes for one or more AEO prompts. Assignments include countries, personas, and platforms. Changes do not become live until commit_aeo_prompt_assignments runs.
Requires: brand_kit_id, prompts
Prompt fields: prompt_id, countries, persona_ids, platforms
get_aeo_prompt_assignments_status
Inspect the current prompt-assignment draft state for a Brand Kit. Use this to check whether a draft exists, whether it has changes, and whether committing it would exceed the workspace answer limit.
Requires: brand_kit_id
commit_aeo_prompt_assignments
Commit the current prompt-assignment draft to live. This replaces live country, persona, and platform assignments with the draft state.
Requires: brand_kit_id
This affects live AEO tracking assignments. Confirm with the user before committing.
discard_aeo_prompt_assignments
Discard the current prompt-assignment draft and create a fresh draft from live assignments.
Requires: brand_kit_id
This discards all pending assignment edits in the shared draft, including unsaved UI edits. Confirm with the user before calling it.
Citations & Domains
list_aeo_citations
List citations (URLs) with metrics for a Brand Kit. Shows individual URLs being cited in AI answers.
Requires: brand_kit_id
Returns: URL, domain name, domain category, citation count, citation share, citation rate, influence score, page type, brand sentiment, and trends.
Filters
domain_category, domain_id, topic_id, brand_mentioned, page_type, brand_referenced, brand_sentiment, mentioned_competitor_domains
Sort
citation_count, citation_share, citation_rate, influence_score
Date filters
start_date, end_date, providers, countries, personas
Domain categories: Owned, Competitors, Social, Communities, Reviews, Media, Educational, Marketplaces, Products, Affiliates, Other
get_aeo_citation
Get details and prompts citing a specific URL.
Requires: brand_kit_id, id (the citation/URL ID)
Returns: URL details, citation metrics, influence score breakdown, page type, brand sentiment, and mentioned competitors.
list_aeo_domains
List domains cited in AI answers for a Brand Kit. Aggregated by domain with citation metrics.
Requires: brand_kit_id
Returns: Domain ID, name, category, logo URL, citation count, URL count, citation share, citation rate, and trends.
Filters
domain_category, topic_id, brand_mentioned, page_type, brand_referenced, brand_sentiment
Sort
citation_count, citation_share, citation_rate
Date filters
start_date, end_date, providers, countries, personas
Page Analytics
list_pages
List pages with AEO, Google Search Console, and GA4 metrics.
Requires: brand_kit_id
Returns: For each page: URL, folder path, primary keyword, and metrics:
AEO: citations_count, citation_rate, prompts_count, and trends
GSC: clicks, impressions, ctr, position, and trends
GA4: traffic, sessions, engagement, average_session_engagement, and trends
Filters
Any metric field, url, folder_name, primary_keyword, session_source, session_medium
Sort
All metric fields, url, folder_name
Smart filters
almost_page_one, losing_clicks, rankings_slipping, losing_ai_visibility, citation_rate_decline
Smart filters (use instead of manual filtering):
almost_page_one
Pages ranking #11-20 (quick wins for page 1)
losing_clicks
Declining clicks with stable position
rankings_slipping
Position declining over time
losing_ai_visibility
Losing AEO citations
citation_rate_decline
Losing AI authority with stable SEO
get_page_details
Get detailed metrics for a specific page.
Requires: id
Returns: URL, folder, primary keyword, citation share, citation rate, unique cited questions count, GSC metrics (clicks, impressions, position, CTR), and all trends.
Date range
start_date, end_date
get_page_prompts
Get AI prompts that cite a specific page.
Requires: brand_kit_id, web_page_id
Returns: Prompt ID, text, keyword, topic_id, volume, total_answers, answers_with_citations, citation_rate, mention_rate, and trends.
Filters
providers, countries, personas, topic_ids
Includes
topic
Date range
start_date, end_date
Analytics
query_analytics
Query analytics with flexible metrics, dimensions, and filters. BI-style interface for custom analysis.
Requires: brand_kit_id, metrics
Returns: Query results with requested metrics grouped by dimensions, plus metadata.
Metrics:
mention_rate
% of answers mentioning brand (0-100)
share_of_voice
Brand mentions vs competitors (0-100)
citation_rate
% of answers citing brand domain (0-100)
citation_share
Brand citations vs all citations (0-100)
citation_count
Absolute citation count
sentiment_score
Average sentiment (0-100)
average_position
Mean rank in answer lists
answer_count
Total answers analyzed
first_mention_rate
% where brand is mentioned first (0-100)
Dimensions (max 3):
date
Group by time period
provider
Group by AI provider
topic
Group by tracked topic
competitor
Group by competitor
country
Group by region/country
persona
Group by customer persona
domain
Group by cited domain
domain_category
Group by citation source type
grain
daily, weekly, monthly, total (default: total)
Date range
start_date, end_date (default: last 7 days)
Filters
providers, topics, countries, personas, brand_mentioned
Limit
max rows (default 100, max 1000)
order_by
custom sort (e.g., "citation_count DESC")
get_sentiment_theme_answers
Get the answers behind a sentiment theme so you can inspect source answer text and examples for that theme.
Requires: brand_kit_id, sentiment_theme_id
Optional fields: start_date, end_date, providers, countries, topic_ids, persona_ids, page, per_page
analytics_chart
Interactive App: This tool renders a chart in the conversation. Available on Claude Web and Desktop only.
Query analytics and display as an interactive chart. Returns data with a UI reference for visualization.
Requires: brand_kit_id, metrics
Returns: Chart data with interactive visualization rendered in the conversation.
chart_type
line, bar, pie, area (default: line)
metrics
Same as query_analytics
dimensions
Same as query_analytics (max 2 for line charts with grouping)
grain
daily, weekly, monthly, total
Date range
start_date, end_date
Filters
providers, topics, countries, personas, brand_mentioned
title
Optional chart title
Constraints:
Only metrics from the same scale can be plotted together (percentage, count, or position)
Area and bar charts support single metrics with single dimensions
Line charts support up to 2 dimensions but only single metric when using 2
Reports
list_reports
List saved analytics reports.
Requires: brand_kit_id
Returns: Report ID, name, created_at, updated_at.
Filters
name
Sort
name, created_at, updated_at
Includes
modules
get_report
Get a specific report by ID.
Requires: brand_kit_id, id
Returns: Report ID, name, timestamps. With includes: ['modules'], returns full module configurations.
Grids
Tools for reading, writing, and creating AirOps Grids programmatically. Use these to populate data, manage columns, and retrieve results.
create_grid
Create a new empty, general-purpose Grid with one empty sheet. Use add_grid_column to add columns and write_grid to add rows.
Requires: name
Optional fields: workspace_id
create_grid_sheet
Create a new sheet within an existing Grid.
Requires: grid_id, name
list_grids
List grids the authenticated user has access to. Use includes: ["grid_tables.grid_columns"] to get the table and column structure needed for other grid tools.
Returns: Grid ID, name, workspace ID, and optionally table and column details (ID, title, data type, position).
Filters
name, workspace_id
Sort
name, updated_at, created_at
Includes
grid_tables.grid_columns
read_grid
Read rows from a grid table. Returns rows as objects with column titles as keys.
Requires: grid_id, grid_table_id
Returns: Grid metadata, columns (with writable flag), and row data with pagination info.
filters
array
none
Filter by column values
filters[].column_id
integer
none
Column ID to filter on
filters[].operator
string
none
CONTAINS, NOT_CONTAINS, EMPTY, NOT_EMPTY, =, !=, >=, <=, >, <
filters[].value
string
none
Filter value (not required for EMPTY/NOT_EMPTY)
column_ids
array
all
Column IDs to include in results
limit
integer
50
Rows per page (1–100)
offset
integer
0
Row offset for pagination
truncate
integer
0
Max characters per cell (0 = no truncation)
read_grid_cell
Read the full value of a single Grid cell. Use this when read_grid truncates a long cell, such as a full article, brief, JSON payload, or HTML field.
Requires: grid_id, grid_table_id, row_id, column_id
Returns: Column title, full value, and value type.
write_grid
Create or update rows in a grid table. Maximum 1000 rows per call.
Requires: grid_id, grid_table_id, mode, rows
mode
string
create to add new rows, update to modify existing rows
rows
array
Row objects with column titles as keys. For update mode, include __id with the row ID
Returns: rows_created (create mode) or rows_updated and cells_updated (update mode).
Values can be strings, numbers, booleans, arrays, or objects. Arrays and objects are stored as JSON. Column titles must exactly match existing grid columns. Use add_grid_column to create new columns first.
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 doesn't exist yet.
Requires: grid_id, grid_table_id, title, data_type
title
string
Column title
data_type
string
text, number, datetime, markdown, url, html, image_from_url, json, single_select
position
integer
Optional column position (appended at end if omitted)
Returns: Created column's ID, title, data type, and position.
Example: Grid Data Workflow
A typical programmatic workflow using Grid tools:
Discover: Call
list_gridswith includes to find the grid and its column structurePrepare: Call
add_grid_columnto create any missing columnsPopulate: Call
write_gridwith modecreateto add rowsRetrieve: Call
read_gridto pull the resultsUpdate: Optionally call
write_gridwith modeupdateto write data back
Knowledge Bases
list_knowledge_bases
List all Knowledge Bases you have access to. Knowledge Bases store documents for semantic search.
Returns: Knowledge Base ID, name, workspace ID, status, and document count. Only Knowledge Bases with status ready can be searched.
Filters
workspace_name, name, workspace_id
Sort
name, created_at
knowledge_base_manage
Create or update a Knowledge Base. Omit knowledge_base_id to create a new Knowledge Base; provide it to update an existing one.
Fields: knowledge_base_id, name, workspace_id
Required on create: name, plus workspace_id when the user has access to multiple workspaces.
Returns: Knowledge Base ID, name, workspace ID, status, document count, and whether it was created.
search_knowledge_base
Search a Knowledge Base for relevant content using semantic similarity.
Requires: knowledge_base_id, query
Parameters: top_k (number of results, 1-20, default 5)
Returns: Matching content ranked by relevance.
knowledge_base_create_direct_upload
Start the two-step file upload flow for Knowledge Base ingestion. The tool returns a presigned upload URL, required headers, and a signed_id.
Requires: knowledge_base_id, filename, content_type, byte_size, checksum
Returns: signed_id, upload_url, and upload_headers.
knowledge_base_add_file
Register an uploaded file with a Knowledge Base after knowledge_base_create_direct_upload. The document is queued for indexing.
Requires: knowledge_base_id, signed_id, name, document_type
Optional fields: metadata
Returns: Created document IDs and pending status.
knowledge_base_add_urls
Bulk-ingest one or more web pages into a Knowledge Base. Each URL becomes a separate document and indexes asynchronously.
Requires: knowledge_base_id, urls
Optional fields: metadata
Returns: Created document IDs and pending status.
knowledge_base_get_status
Get Knowledge Base indexing status and per-document statuses. Use this after adding files or URLs.
Requires: knowledge_base_id
Optional fields: document_ids, cursor, items
knowledge_base_get_document
Get a Knowledge Base document by ID, including document metadata and extracted content when available.
Requires: knowledge_base_id, document_id
knowledge_base_update_document_metadata
Replace a document's user-facing metadata. Metadata is a single-level key/value object and can be used in Knowledge Base search filters.
Requires: knowledge_base_id, document_id, metadata
knowledge_base_delete_document
Permanently delete a single document from a Knowledge Base.
Requires: knowledge_base_id, document_id
This action cannot be undone. Confirm with the user before deleting a document.
knowledge_base_delete
Permanently delete a Knowledge Base and all of its documents.
Requires: knowledge_base_id
This deletes the Knowledge Base, all documents, and underlying vectors. Confirm with the user before calling it.
Query Options
All list tools support:
Filters
Narrow by field values (EQUALS, CONTAINS, EQ, NEQ, GT, LT, GEQ, LEQ, IN)
Includes
Request related data in one call
Fields
Select specific fields to return
Sort
Order by supported fields (prefix - for descending)
Pagination
Control results with page and per_page (max 100)
AI Providers
Available provider values for filtering:
chat_gptgeminiperplexitygoogle_ai_modegoogle_ai_overview
Last updated
Was this helpful?