Server does not advertise the Skills over MCP extension
All tools have OpenAI behavior hints
42 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: For Claude directory submission, declare the applicable annotations.readOnlyHint or annotations.destructiveHint value as a boolean on every tool.
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.
Description75/100
List the lifecycle phases this server serves (setup, modify) and what each is for.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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_phases",
"description": "List the lifecycle phases this server serves (setup, modify) and what each is for.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
List the guidance Skills available on this server, with the phase each serves. Read a skill via its resource (skill://alter/<name>).
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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_skills",
"description": "List the guidance Skills available on this server, with the phase each serves. Read a skill via its resource (skill://alter/<name>).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description88/100
Begin or change an Alter integration. Without args: lists the phases. With `phase`: returns that phase's flows + a heuristic hint — classify the use case YOURSELF and call again with `goal` for the plan. If the use case spans multiple flows, run them sequentially.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
phase
setup (integrate from scratch) or modify (change an existing integration).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
use_case
Plain-English description of what the developer wants.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
goal
The flow id YOU classified. Returns that flow's full plan.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "get_started",
"description": "Begin or change an Alter integration. Without args: lists the phases. With `phase`: returns that phase's flows + a heuristic hint — classify the use case YOURSELF and call again with `goal` for the plan. If the use case spans multiple flows, run them sequentially.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"goal": {
"enum": [
"user-data",
"backend-secret",
"agent",
"add-provider",
"add-secret",
"add-agent",
"rotate-key",
"manage-grant",
"set-policy"
],
"type": "string",
"description": "The flow id YOU classified. Returns that flow's full plan."
},
"phase": {
"enum": [
"setup",
"modify"
],
"type": "string",
"description": "setup (integrate from scratch) or modify (change an existing integration)."
},
"use_case": {
"type": "string",
"maxLength": 2000,
"description": "Plain-English description of what the developer wants."
}
}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description81/100
Return the next step for a flow. Pass the goal (flow id) and the id of the last completed step (omit `after` for the first step). Run each step's detect command FIRST and skip the run command when detection passes. The design step also returns that flow's complete starter ALTER_INTEGRATION.md.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
goal
The flow id (setup goal or modify operation).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
after
Id of the last completed step (e.g. "2", "3a").
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "next_step",
"description": "Return the next step for a flow. Pass the goal (flow id) and the id of the last completed step (omit `after` for the first step). Run each step's detect command FIRST and skip the run command when detection passes. The design step also returns that flow's complete starter ALTER_INTEGRATION.md.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"goal"
],
"properties": {
"goal": {
"enum": [
"user-data",
"backend-secret",
"agent",
"add-provider",
"add-secret",
"add-agent",
"rotate-key",
"manage-grant",
"set-policy"
],
"type": "string",
"description": "The flow id (setup goal or modify operation)."
},
"after": {
"type": "string",
"maxLength": 10,
"description": "Id of the last completed step (e.g. \"2\", \"3a\")."
}
}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description81/100
Return a runnable Alter SDK call pattern for a language: `proxy-call` (zero-egress proxy_request + HITL), `resolve-grant-by-user` (call as an end user via their delegated grant), `delegate-managed-secret` (the operator-side delegation step), or `resolve-ambiguous-grant` (an identity-mode call matched several of one user's grants: choose deliberately, never the first, and persist it; ask the developer at design time whether users can hold several accounts per provider). Use AFTER `sdk_integration` has wired the client.
Describe the returned information so the agent knows whether it will answer the request.
Inputs58/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
language
Target language.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "sdk_pattern",
"description": "Return a runnable Alter SDK call pattern for a language: `proxy-call` (zero-egress proxy_request + HITL), `resolve-grant-by-user` (call as an end user via their delegated grant), `delegate-managed-secret` (the operator-side delegation step), or `resolve-ambiguous-grant` (an identity-mode call matched several of one user's grants: choose deliberately, never the first, and persist it; ask the developer at design time whether users can hold several accounts per provider). Use AFTER `sdk_integration` has wired the client.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"language",
"pattern"
],
"properties": {
"pattern": {
"enum": [
"proxy-call",
"resolve-grant-by-user",
"delegate-managed-secret",
"resolve-ambiguous-grant"
],
"type": "string",
"description": "proxy-call | resolve-grant-by-user | delegate-managed-secret | resolve-ambiguous-grant."
},
"language": {
"enum": [
"python",
"typescript"
],
"type": "string",
"description": "Target language."
}
}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description85/100
Return a copy-pasteable recipe to VERIFY an integration works: `first-call` (code↔design, an audit row, correct attribution) or `per-user-isolation` (a multi-user/broker server runs two users under different credentials and rejects cross-user access). Guidance only — you run the commands.
The description explains the capability, when to use it, and what to expect.
Inputs58/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
scenario
first-call | per-user-isolation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "verify_integration",
"description": "Return a copy-pasteable recipe to VERIFY an integration works: `first-call` (code↔design, an audit row, correct attribution) or `per-user-isolation` (a multi-user/broker server runs two users under different credentials and rejects cross-user access). Guidance only — you run the commands.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"scenario"
],
"properties": {
"scenario": {
"enum": [
"first-call",
"per-user-isolation"
],
"type": "string",
"description": "first-call | per-user-isolation."
}
}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description85/100
Fetch Alter documentation by slug (e.g. "quickstart"). Guides, indexes and skills are served in-band; generated provider operation and model pages link to the full public reference. Accepts any spelling the docs use: a bare slug, a leading slash, a #section anchor, a full docs.alterauth.com URL, or an older path that now redirects. Omit the slug to list every page.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slug
Doc slug, e.g. "guides/call-apis-on-behalf-of-users".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "fetch_doc",
"description": "Fetch Alter documentation by slug (e.g. \"quickstart\"). Guides, indexes and skills are served in-band; generated provider operation and model pages link to the full public reference. Accepts any spelling the docs use: a bare slug, a leading slash, a #section anchor, a full docs.alterauth.com URL, or an older path that now redirects. Omit the slug to list every page.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"description": "Doc slug, e.g. \"guides/call-apis-on-behalf-of-users\"."
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Search every bundled page of the Alter documentation (docs and skill pages) by keywords: returns the best-matching pages with the section and a snippet that matched. Use it when a flow step or doc did not point you at the page you need, instead of guessing slugs or listing every page; then read one with fetch_doc and its slug.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Keywords or a short phrase, e.g. "connect widget popup" or "PAT scopes login".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum results (default 8, at most 20).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "search_docs",
"description": "Search every bundled page of the Alter documentation (docs and skill pages) by keywords: returns the best-matching pages with the section and a snippet that matched. Use it when a flow step or doc did not point you at the page you need, instead of guessing slugs or listing every page; then read one with fetch_doc and its slug.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum results (default 8, at most 20)."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Keywords or a short phrase, e.g. \"connect widget popup\" or \"PAT scopes login\"."
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List every provider with an ingested API spec in Alter's provider-spec catalog, with each spec's source and freshness. Optionally filter by `kind`. Start here, then call list_operations for a provider's operations.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
kind
Provider family: oauth (user-authorized) or managed (API-key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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_providers",
"description": "List every provider with an ingested API spec in Alter's provider-spec catalog, with each spec's source and freshness. Optionally filter by `kind`. Start here, then call list_operations for a provider's operations.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"enum": [
"oauth",
"managed"
],
"type": "string",
"description": "Provider family: oauth (user-authorized) or managed (API-key)."
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List the API operations a provider exposes, live from Alter's provider-spec catalog (e.g. "what can I call on google?"). Returns operation ids + methods/paths, plus the spec's source and freshness. Omit `kind` to auto-detect the provider family; when the id exists in both oauth and managed you'll be asked to pass `kind`. Machine-readable rows ride in `structuredContent` (see this tool's outputSchema) — read those rather than parsing the prose.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
provider_id
Provider id, e.g. "google" or "github".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
kind
Provider family: oauth (user-authorized) or managed (API-key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
search
Case-insensitive filter over operation ids/paths/summaries.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Max operations to return (backend default 100, max 500).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Zero-based offset for paging through large operation lists.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
Output schema88/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"provider_id",
"provider_kind",
"spec_version",
"total",
"offset",
"operations"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Total operations matching the query (before limit/offset)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based offset of the first row."
},
"operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"operation_id",
"method",
"path_template",
"summary"
],
"properties": {
"method": {
"type": "string",
"description": "HTTP method, e.g. GET."
},
"summary": {
"type": [
"string",
"null"
],
"description": "One-line description, or null when the spec omits it."
},
"operation_id": {
"type": "string",
"description": "Pass to get_operation_schema for the full contract."
},
"path_template": {
"type": "string",
"description": "Path with {placeholders}, e.g. /repos/{owner}/{repo}."
}
},
"additionalProperties": false
},
"description": "This page of operations, in the catalog's serving order."
},
"provider_id": {
"type": "string",
"description": "Resolved provider id the rows belong to."
},
"spec_version": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Alter's ingested spec version these rows came from."
},
"provider_kind": {
"enum": [
"oauth",
"managed"
],
"type": "string",
"description": "Resolved provider family: oauth or managed."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "list_operations",
"description": "List the API operations a provider exposes, live from Alter's provider-spec catalog (e.g. \"what can I call on google?\"). Returns operation ids + methods/paths, plus the spec's source and freshness. Omit `kind` to auto-detect the provider family; when the id exists in both oauth and managed you'll be asked to pass `kind`. Machine-readable rows ride in `structuredContent` (see this tool's outputSchema) — read those rather than parsing the prose.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"provider_id"
],
"properties": {
"kind": {
"enum": [
"oauth",
"managed"
],
"type": "string",
"description": "Provider family: oauth (user-authorized) or managed (API-key)."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max operations to return (backend default 100, max 500)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset for paging through large operation lists."
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Case-insensitive filter over operation ids/paths/summaries."
},
"provider_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Provider id, e.g. \"google\" or \"github\"."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"provider_id",
"provider_kind",
"spec_version",
"total",
"offset",
"operations"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Total operations matching the query (before limit/offset)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based offset of the first row."
},
"operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"operation_id",
"method",
"path_template",
"summary"
],
"properties": {
"method": {
"type": "string",
"description": "HTTP method, e.g. GET."
},
"summary": {
"type": [
"string",
"null"
],
"description": "One-line description, or null when the spec omits it."
},
"operation_id": {
"type": "string",
"description": "Pass to get_operation_schema for the full contract."
},
"path_template": {
"type": "string",
"description": "Path with {placeholders}, e.g. /repos/{owner}/{repo}."
}
},
"additionalProperties": false
},
"description": "This page of operations, in the catalog's serving order."
},
"provider_id": {
"type": "string",
"description": "Resolved provider id the rows belong to."
},
"spec_version": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Alter's ingested spec version these rows came from."
},
"provider_kind": {
"enum": [
"oauth",
"managed"
],
"type": "string",
"description": "Resolved provider family: oauth or managed."
}
},
"additionalProperties": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Fetch one provider API operation's full contract — method, path, parameters, request/response schemas — live from Alter's provider-spec catalog, plus the spec's source and freshness. Get operation ids from list_operations first.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
provider_id
Provider id, e.g. "google" or "github".
Clear enough to supply this argument.
operation_id
Operation id from list_operations, e.g. "gmail.users.messages.list".
Clear enough to supply this argument.
kind
Provider family: oauth (user-authorized) or managed (API-key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "get_operation_schema",
"description": "Fetch one provider API operation's full contract — method, path, parameters, request/response schemas — live from Alter's provider-spec catalog, plus the spec's source and freshness. Get operation ids from list_operations first.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"provider_id",
"operation_id"
],
"properties": {
"kind": {
"enum": [
"oauth",
"managed"
],
"type": "string",
"description": "Provider family: oauth (user-authorized) or managed (API-key)."
},
"provider_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Provider id, e.g. \"google\" or \"github\"."
},
"operation_id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Operation id from list_operations, e.g. \"gmail.users.messages.list\"."
}
}
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description93/100
The authoritative grammar of Alter's runtime-policy language, live from the deployed backend: every authorable rule type with its JSON body schema, caps, authorable levels, worked examples, and fail-closed semantics. Call with no arguments for the overview; pass `rule_type` (e.g. "content_match") for one type's full grammar. Use it before authoring rules with `alter policy rules create` — never guess a body shape. Vocabulary: the dashboard's "Runtime policies" surface, the docs' "policy", and `alter policy` are one feature, and the dashboard's "Require human approval" type is the `require_approval` rule type (its grant-editor block is the grant-level baseline of the same gate). The same grammar is what policy files carry: `alter policy validate|test|plan|apply` review rules in Git and CI, and a rule with a `code_owner` is changed through its file, never with `rules update`. Workflow prose: the `set-policy` modify flow (`get_started` with phase=modify), fetch_doc("guides/set-policies"), fetch_doc("guides/add-human-in-the-loop-approvals"), fetch_doc("guides/policy-as-code"), and fetch_doc("reference/cli/commands/policy").
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
rule_type
One rule type's full grammar, e.g. "content_match" or "quota".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "policy_language",
"description": "The authoritative grammar of Alter's runtime-policy language, live from the deployed backend: every authorable rule type with its JSON body schema, caps, authorable levels, worked examples, and fail-closed semantics. Call with no arguments for the overview; pass `rule_type` (e.g. \"content_match\") for one type's full grammar. Use it before authoring rules with `alter policy rules create` — never guess a body shape. Vocabulary: the dashboard's \"Runtime policies\" surface, the docs' \"policy\", and `alter policy` are one feature, and the dashboard's \"Require human approval\" type is the `require_approval` rule type (its grant-editor block is the grant-level baseline of the same gate). The same grammar is what policy files carry: `alter policy validate|test|plan|apply` review rules in Git and CI, and a rule with a `code_owner` is changed through its file, never with `rules update`. Workflow prose: the `set-policy` modify flow (`get_started` with phase=modify), fetch_doc(\"guides/set-policies\"), fetch_doc(\"guides/add-human-in-the-loop-approvals\"), fetch_doc(\"guides/policy-as-code\"), and fetch_doc(\"reference/cli/commands/policy\").",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"rule_type": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "One rule type's full grammar, e.g. \"content_match\" or \"quota\"."
}
}
}
}
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.
01Search docsSearch every bundled page of the Alter documentation (docs and skill pages) by keywords: returns the best-matching pages with the section and a snippet that…
02List operationsList the API operations a provider exposes, live from Alter's provider-spec catalog (e.g.
03Fetch docFetch Alter documentation by slug (e.g.
04List providersList every provider with an ingested API spec in Alter's provider-spec catalog, with each spec's source and freshness.
05Policy languageThe authoritative grammar of Alter's runtime-policy language, live from the deployed backend: every authorable rule type with its JSON body schema, caps, aut…
Want to run these tasks against your MCP server with us?
alter-onboarding setup, tools, quality score, publishing readiness, and alternatives.
How do I add alter-onboarding to Claude, ChatGPT, or Cursor?
Add alter-onboarding 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.alterauth.com/mcp.
Is alter-onboarding MCP ready for ChatGPT and Claude?
As of November 7, 2026, alter-onboarding scores 82/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 alter-onboarding's MCP tool documentation?
As of November 7, 2026, alter-onboarding scores 57/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 14 of 14 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to alter-onboarding?
As of November 8, 2026, alternatives to alter-onboarding in developer-tools on the Manufact MCP leaderboard include Speko, Manufact, Context, AgentMail, and TPC Benchmarks.
How can alter-onboarding improve its MCP documentation?
sdk_integration is the lowest-scoring reviewed tool at 45/100. Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.