Avo is the data governance platform that keeps every analytics event defined consistently, implemented reliably, and trusted across every team. The Avo MCP connects Claude to your tracking plan, so it can search your events, properties, and metrics, and design tracking from a PRD or Figma onto an Avo branch based on existing patterns and rules. Developers and their coding agents can then implement correctly without leaving Claude, using the code snippets and implementation instructions the Avo MCP generates. Because Avo knows your metric definitions, Claude can query your product data accurately in tools like Amplitude, Mixpanel, Snowflake or BigQuery.
Protocol
MCP 2025-11-25
Server version
95.0.0
Supports
Tools
Resources
Prompts
Overall score
B
Overall quality score: 80 out of 10080/100
Server metadata
4 of 8 fields50/1005 / 10 pts
Identity, discovery, and usage metadata advertised during the MCP handshake.
Avo MCP — read and edit your Avo tracking plan on a branch. Start: call list_workspaces, then set the active workspaceId.
Tools (call describe_tool(tool:"<name>") for the full shape):
- list_workspaces — list workspaces; pick one and set workspaceId.
- describe_tool — this index: describe_tool() for the map, describe_tool(tool:"save_items", type:"<type>", op:"<op>") for a field contract.
- search — find items by meaning (query) or structural filters. itemType: event, property, metric, event_variant, category, property_bundle, source, destination, group_type, gateway, journey.
- get — fetch ONE item by id/name (event, property, metric, event_variant, category, property_bundle, source, destination, group_type, gateway); workspace_config takes no id; journey by id; get(type:"branch") by branchId/branchName.
- save_items — create/update/archive/unarchive on a branch. types: event, property, event_variant, property_bundle, metric, destination, source, group_type, category, gateway. Call describe_tool(tool:"save_items", type:"<type>") before your first write of a type.
- workflow — branch ops: create_branch, update_branch_description, pull_main, set_source_language, import.
- give_feedback — send product feedback.
- list_branches — list branches.
Writing rules: writes are always on a branch (open one with workflow create_branch), never on main; the MCP never merges — that is a human step in the Avo web app. Resolve names to ids with get/search before writing; never invent ids.
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
Server does not advertise the Skills over MCP extension
All tools have OpenAI behavior hints
13 behavior annotation issue(s) found
How to fix: On each tool, declare annotations.readOnlyHint, annotations.destructiveHint, and annotations.openWorldHint as booleans. The policy review separately assesses whether their values match the tool's actual behavior.
How to fix: Set the top-level tool.title to a short human-readable label (for example, "Search catalog"). Claude directory submission requires tool titles; annotations.title remains accepted only as a legacy fallback.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
List the Avo workspaces you have access to. Returns name + workspaceId for each. This is usually the first call in a session — every other tool (`search`, `get`, `save_items`, `workflow`) takes a `workspaceId`.
Use cases:
- Starting a fresh session.
- Switching context between client workspaces.
- Confirming auth scope before a write.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations25/100
Declare destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_workspaces",
"description": "List the Avo workspaces you have access to. Returns name + workspaceId for each. This is usually the first call in a session — every other tool (`search`, `get`, `save_items`, `workflow`) takes a `workspaceId`.\n\nUse cases:\n- Starting a fresh session.\n- Switching context between client workspaces.\n- Confirming auth scope before a write.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List Workspaces",
"readOnlyHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
The on-demand schema/contract index for the Avo MCP — call it to get the exact shape of the call you are about to make.
- describe_tool() — capability map: every tool, its types/actions, what to call next.
- describe_tool(tool:"save_items", type:"<type>", op:"<op>") — the field contract for that item type + op (name, jsonType, required, doc). Call before your first write of a type.
- describe_tool(tool:"workflow", action:"import") — the import payload schema.
- For save_items, format:"concise" returns the fields table only.
Read-only and local: no workspace data, no branch, no side effects.
The description explains the capability, when to use it, and what to expect.
Inputs70/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tool
Tool to describe. Omit for the capability map.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
type
save_items/search/get: the item type.
Explain the meaning of this value, not just its name.
action
workflow: the action (e.g. import).
Explain the meaning of this value, not just its name.
op
save_items: filter the fields table to one op.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
format
concise = fields table only. Default full.
Clear enough to supply this argument.
Annotations75/100
Declare openWorldHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "describe_tool",
"description": "The on-demand schema/contract index for the Avo MCP — call it to get the exact shape of the call you are about to make.\n\n- describe_tool() — capability map: every tool, its types/actions, what to call next.\n- describe_tool(tool:\"save_items\", type:\"<type>\", op:\"<op>\") — the field contract for that item type + op (name, jsonType, required, doc). Call before your first write of a type.\n- describe_tool(tool:\"workflow\", action:\"import\") — the import payload schema.\n- For save_items, format:\"concise\" returns the fields table only.\n\nRead-only and local: no workspace data, no branch, no side effects.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"op": {
"enum": [
"create",
"update",
"archive",
"unarchive"
],
"type": "string",
"description": "save_items: filter the fields table to one op."
},
"tool": {
"enum": [
"list_workspaces",
"describe_tool",
"search",
"get",
"save_items",
"workflow",
"give_feedback",
"list_branches"
],
"type": "string",
"description": "Tool to describe. Omit for the capability map."
},
"type": {
"type": "string",
"description": "save_items/search/get: the item type."
},
"action": {
"type": "string",
"description": "workflow: the action (e.g. import)."
},
"format": {
"enum": [
"full",
"concise"
],
"type": "string",
"description": "concise = fields table only. Default full."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Describe Avo MCP Tools",
"readOnlyHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Find tracking-plan items in two modes, auto-selected by params.
(1) Semantic search — pass query for similarity. Cap 20, default 10; index may lag recent changes.
(2) Structured listing — pass filters (e.g. tags, includeVariants) for exact matches across events, properties, metrics, event variants; or itemType with no query to enumerate source/destination/group_type/gateway/journey. event/property accept a checkpoint lens (see field). Branch + keyset pagination; filter listings cap 500, default 10; enumerations unpaged, journey 25/100.
Query with filters is rejected; use get for id lookups.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Look up a SINGLE item by id or exact name (defaults to main); for discovery use search. Types: see the type field.
- event/property/event_variant add owner + stakeholders; event/property also accept a checkpoint lens.
- Enumerate metadata (source, destination, group_type, gateway) via search.
- branch takes branchId/branchName + include + sourceId.
The description explains the capability, when to use it, and what to expect.
Inputs77/100
13 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
type
Item type (snake_case; camelCase aliases accepted): event, property, metric, category, property_bundle (id or name); event_variant (base-event id + variantId); source, destination, group_type, gateway; workspace_config; journey (id); branch.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
The item's id (id or name, not both).
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
name
Exact name (id or name, not both). Ambiguous names may return several; use search for fuzzy.
Clear enough to supply this argument.
variantId
event_variant only: variant id (with id = base event id).
Clear enough to supply this argument.
branchId
Branch to look up on (defaults to main; takes precedence over branchName).
Clear enough to supply this argument.
branchName
Alternative to branchId (resolved via list_branches; defaults to main).
true (default) includes archived items; false returns active only.
Clear enough to supply this argument.
include
type=branch only: values union, default ["overview"]. overview (metadata/baseline/reviewer/stats); all_changes (full diff vs main); event_changes (events+variants); property_changes (properties+bundles+categories); code_snippets (per-source code); implementation_guide (steps+per-event codegen). event_changes+property_changes=all_changes. "changes"=deprecated alias for all_changes; unknown values dropped with a warning.
Clear enough to supply this argument.
sourceId
type=branch only: source scope. REQUIRED on code_snippets; optional on all_changes/event_changes/property_changes/implementation_guide (filters event-shaped diffs to one source; property/bundle/category diffs stay workspace-wide). Enumerate via search(itemType:"source"). Scopes what include returns, not which content.
Clear enough to supply this argument.
workspaceId
The workspace ID. Get workspace IDs from list_workspaces.
Clear enough to supply this argument.
checkpoint
Checkpoint (event/property): does the item reach a pipeline location? Never errors. `kind`: source{sourceId} | gatewayInput{gatewayId,inputId} | gateway{gatewayId} | gatewayOutput{gatewayId,outputId} | destination{destinationId}.
Clear enough to supply this argument.
includeCheckpointPaths
Needs `checkpoint`. Events only. true = every path's full schema. checkpointPathThrough{Source,Input,Output}Id narrow it (AND-combined; a filter applies even when this is false; unknown id = none). Under Union read paths/union.
Clear enough to supply this argument.
checkpointPathThroughSourceId
Not provided
Missing description. Explain what this value means and how to supply it.
checkpointPathThroughInputId
Not provided
Missing description. Explain what this value means and how to supply it.
checkpointPathThroughOutputId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations25/100
Declare destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Create, update, archive, or unarchive tracking-plan items in one branch-scoped batch (max 50). Each item is an envelope {op, type, id?, name?, tempId?, fields?}; op defaults to "create". type: event, property, event_variant, property_bundle, metric, destination, source, group_type, category, gateway (camelCase aliases ok).
Call describe_tool(tool:"save_items", type:"<type>", op:"<op>") for a type's exact fields — served on demand, not advertised here.
Contract:
- Writes need an open draft branch (open one via workflow create_branch; rejected on main). The MCP never merges to main.
- Identify: create takes name (event_variant: nameSuffix + a caller-supplied variantId + baseEventId); update/archive/unarchive take the identity id via id or fields (event→eventId, event_variant→baseEventId+variantId). Resolve names to ids with get/search first; never invent ids.
- $tmp: set tempId on a create, then reference it as "$tmp:<tempId>" in another same-batch item's id/ref fields; the server resolves them before saving.
- Placement: scalar renames go in fields.set; collection deltas (add*/remove*/clear*) at fields top level.
- Owner/stakeholder changes are branch-independent — they take effect immediately workspace-wide, not undone by discarding the branch.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
8 of 9 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
branchId
Id of an open draft branch to stage these changes on (writes rejected on main/master). Get one from search/get, or open one via workflow create_branch.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › type
Item type (snake_case; camelCase aliases accepted). Call describe_tool(tool:"save_items", type:<type>) for its fields.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › id
Identity id for update/archive/unarchive on single-id types (event→eventId, …). event_variant passes its ids in fields.
Clear enough to supply this argument.
items › items › name
Name (required for create event/property).
Clear enough to supply this argument.
items › items › tempId
Create only: same-batch cross-reference id; reference it as "$tmp:<tempId>".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › fields
Fields for (type, op). Call describe_tool(tool:"save_items", type:<type>, op:<op>) for the contract. Optional; archive needs only id (event_variant: both ids).
Explain the meaning of this value, not just its name.
workspaceId
The workspace ID. If not provided, uses the active workspace set via save_workspace.
Clear enough to supply this argument.
onReviewedBranch › kind
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare openWorldHint based on the tool’s actual behavior.
{
"title": "Create, Update or Archive Tracking Plan Items",
"readOnlyHint": false,
"idempotentHint": false,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "save_items",
"description": "Create, update, archive, or unarchive tracking-plan items in one branch-scoped batch (max 50). Each item is an envelope {op, type, id?, name?, tempId?, fields?}; op defaults to \"create\". type: event, property, event_variant, property_bundle, metric, destination, source, group_type, category, gateway (camelCase aliases ok).\n\nCall describe_tool(tool:\"save_items\", type:\"<type>\", op:\"<op>\") for a type's exact fields — served on demand, not advertised here.\n\nContract:\n- Writes need an open draft branch (open one via workflow create_branch; rejected on main). The MCP never merges to main.\n- Identify: create takes name (event_variant: nameSuffix + a caller-supplied variantId + baseEventId); update/archive/unarchive take the identity id via id or fields (event→eventId, event_variant→baseEventId+variantId). Resolve names to ids with get/search first; never invent ids.\n- $tmp: set tempId on a create, then reference it as \"$tmp:<tempId>\" in another same-batch item's id/ref fields; the server resolves them before saving.\n- Placement: scalar renames go in fields.set; collection deltas (add*/remove*/clear*) at fields top level.\n- Owner/stakeholder changes are branch-independent — they take effect immediately workspace-wide, not undone by discarding the branch.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"branchId",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string",
"description": "Identity id for update/archive/unarchive on single-id types (event→eventId, …). event_variant passes its ids in fields."
},
"op": {
"enum": [
"create",
"update",
"archive",
"unarchive"
],
"type": "string",
"description": "Operation: create (default), update, archive, unarchive."
},
"name": {
"type": "string",
"description": "Name (required for create event/property)."
},
"type": {
"enum": [
"event",
"property",
"event_variant",
"eventVariant",
"property_bundle",
"propertyBundle",
"metric",
"destination",
"source",
"group_type",
"groupType",
"category",
"gateway"
],
"type": "string",
"description": "Item type (snake_case; camelCase aliases accepted). Call describe_tool(tool:\"save_items\", type:<type>) for its fields."
},
"fields": {
"description": "Fields for (type, op). Call describe_tool(tool:\"save_items\", type:<type>, op:<op>) for the contract. Optional; archive needs only id (event_variant: both ids)."
},
"tempId": {
"type": "string",
"pattern": "^[\\w-]+$",
"maxLength": 64,
"description": "Create only: same-batch cross-reference id; reference it as \"$tmp:<tempId>\"."
}
},
"additionalProperties": false
},
"description": "Items to create, update, archive, or unarchive. Each item is an envelope {op, type, id?, name?, tempId?, fields?}; op defaults to \"create\"."
},
"branchId": {
"type": "string",
"description": "Id of an open draft branch to stage these changes on (writes rejected on main/master). Get one from search/get, or open one via workflow create_branch."
},
"workspaceId": {
"type": "string",
"description": "The workspace ID. If not provided, uses the active workspace set via save_workspace."
},
"onReviewedBranch": {
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"revertToDraft",
"reject"
],
"type": "string"
}
},
"description": "Ack for writing to a branch in review (protected main). Omitted → the write is REJECTED so approvals aren't silently invalidated. {kind:\"revertToDraft\"} reverts the branch to Draft and applies edits; {kind:\"reject\"} is the default.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create, Update or Archive Tracking Plan Items",
"readOnlyHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Share feedback about the Avo MCP tools — call proactively, especially when the MCP could NOT do what you set out to do (a gap, a dead-end, a workaround). Say what you tried, expected, and got; name the tool(s); no secrets or private customer data.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
feedback
Feedback about the Avo MCP — be specific: (1) what you tried, (2) expected, (3) happened, (4) why it matters. Name the tool(s); no secrets or private customer data.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
intent
Encouraged: the broader goal behind the call (the real task, not just the symptom) so the team can close the gap.
Clear enough to supply this argument.
Annotations25/100
Declare destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "give_feedback",
"description": "Share feedback about the Avo MCP tools — call proactively, especially when the MCP could NOT do what you set out to do (a gap, a dead-end, a workaround). Say what you tried, expected, and got; name the tool(s); no secrets or private customer data.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"feedback"
],
"properties": {
"intent": {
"type": "string",
"maxLength": 1000,
"description": "Encouraged: the broader goal behind the call (the real task, not just the symptom) so the team can close the gap."
},
"feedback": {
"type": "string",
"maxLength": 5000,
"description": "Feedback about the Avo MCP — be specific: (1) what you tried, (2) expected, (3) happened, (4) why it matters. Name the tool(s); no secrets or private customer data."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Give Feedback",
"readOnlyHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List branches in a workspace with optional filtering, paginated newest-first (pageSize 1–50, default 25; use nextPageToken for more). Filter by creator/reviewer/collaborator (email or userId), date range (createdAfter/createdBefore), impactedSourceId, branchName substring, and branchStatuses. Returns a compact summary per branch — use get(type:"branch", branchId:"...") for full reviewer/collaborator arrays. For the current user's branches, pass their email as creatorEmail/reviewerEmail (no auto-inject).
The description explains the capability, when to use it, and what to expect.
Inputs84/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
workspaceId
The workspace ID. Get workspace IDs from list_workspaces.
Clear enough to supply this argument.
creatorUserId
Filter by creator user ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
creatorEmail
Filter by creator email
Clear enough to supply this argument.
reviewerUserId
Filter by reviewer user ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
reviewerEmail
Filter by reviewer email
Clear enough to supply this argument.
collaboratorUserId
Filter by collaborator user ID
Clear enough to supply this argument.
collaboratorEmail
Filter by collaborator email
Clear enough to supply this argument.
createdAfter
ISO 8601 date filter
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
createdBefore
ISO 8601 date filter
Clear enough to supply this argument.
impactedSourceId
Filter by impacted source ID
Explain the meaning of this value, not just its name.
branchStatuses
Filter by branch statuses. Default: open branches (Draft, ReadyForReview, ChangesRequested, Approved, Open).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
branchName
Filter by branch name substring (case-insensitive)
Clear enough to supply this argument.
pageSize
Page size 1-50, default 25
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
Pagination token from a previous response
Clear enough to supply this argument.
Annotations25/100
Declare destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
{
"readOnlyHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_branches",
"description": "List branches in a workspace with optional filtering, paginated newest-first (pageSize 1–50, default 25; use nextPageToken for more). Filter by creator/reviewer/collaborator (email or userId), date range (createdAfter/createdBefore), impactedSourceId, branchName substring, and branchStatuses. Returns a compact summary per branch — use get(type:\"branch\", branchId:\"...\") for full reviewer/collaborator arrays. For the current user's branches, pass their email as creatorEmail/reviewerEmail (no auto-inject).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"pageSize": {
"type": "number",
"description": "Page size 1-50, default 25"
},
"pageToken": {
"type": "string",
"description": "Pagination token from a previous response"
},
"branchName": {
"type": "string",
"description": "Filter by branch name substring (case-insensitive)"
},
"workspaceId": {
"type": "string",
"description": "The workspace ID. Get workspace IDs from list_workspaces."
},
"createdAfter": {
"type": "string",
"description": "ISO 8601 date filter"
},
"creatorEmail": {
"type": "string",
"description": "Filter by creator email"
},
"createdBefore": {
"type": "string",
"description": "ISO 8601 date filter"
},
"creatorUserId": {
"type": "string",
"description": "Filter by creator user ID"
},
"reviewerEmail": {
"type": "string",
"description": "Filter by reviewer email"
},
"branchStatuses": {
"type": "array",
"items": {
"enum": [
"Draft",
"ReadyForReview",
"ChangesRequested",
"Approved",
"Merged",
"Closed",
"Open"
],
"type": "string"
},
"description": "Filter by branch statuses. Default: open branches (Draft, ReadyForReview, ChangesRequested, Approved, Open)."
},
"reviewerUserId": {
"type": "string",
"description": "Filter by reviewer user ID"
},
"impactedSourceId": {
"type": "string",
"description": "Filter by impacted source ID"
},
"collaboratorEmail": {
"type": "string",
"description": "Filter by collaborator email"
},
"collaboratorUserId": {
"type": "string",
"description": "Filter by collaborator user ID"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01List WorkspacesList the Avo workspaces you have access to.
02Get Item DetailsLook up a SINGLE item by id or exact name (defaults to main); for discovery use search.
03Describe toolThe on-demand schema/contract index for the Avo MCP — call it to get the exact shape of the call you are about to make.
04Search Tracking PlanFind tracking-plan items in two modes, auto-selected by params.
05List branchesList branches in a workspace with optional filtering, paginated newest-first (pageSize 1–50, default 25; use nextPageToken for more).
Want to run these tasks against your MCP server with us?
avo-mcp-server setup, tools, quality score, publishing readiness, and alternatives.
How do I add avo-mcp-server to Claude, ChatGPT, or Cursor?
Add avo-mcp-server to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.avo.app/mcp. This server requires OAuth, so complete the login prompt after you connect.
Is avo-mcp-server MCP ready for ChatGPT and Claude?
As of October 6, 2026, avo-mcp-server scores 88/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and does not yet meet Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is avo-mcp-server's MCP tool documentation?
As of October 6, 2026, avo-mcp-server scores 74/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 8 of 8 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What tools does the avo-mcp-server MCP server provide?
avo-mcp-server provides these MCP tools: describe_tool, get, give_feedback, list_branches, list_workspaces, save_items, search, and workflow.
What are the best alternatives to avo-mcp-server?
As of October 20, 2026, alternatives to avo-mcp-server in data-analytics on the Manufact MCP leaderboard include Epicure, Newsflash, Point Topic, Pricing Optimizer AI, and StatCite.
Does avo-mcp-server MCP require authentication?
avo-mcp-server requires authentication. Connect it in Claude, ChatGPT, or Cursor and complete the OAuth login prompt.
How can avo-mcp-server improve its MCP documentation?
list_branches is the lowest-scoring reviewed tool at 64/100. No output schema is declared. Add one for structured results so clients can interpret returned fields. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Who develops avo-mcp-server?
avo-mcp-server is developed by Avo Software Inc.. It is listed as community on the Claude connector directory.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.