CorroborateMe
Stores encrypted integration secrets for Apple services, allowing management of Apple integration credentials for end-user proof flows.
Stores encrypted integration secrets for Google services, allowing management of Google integration credentials for end-user proof flows.
Provides Stripe billing integrations including creating checkout sessions, managing the customer portal, and processing agent prepaid payments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CorroborateMeVerify the identity of user jane@acme.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CorroborateMe
Prove end users to agents and apps.
CorroborateMe gives agents and apps company API keys and human login-links with multi-channel notify so they can prove who the end user is - plus OIDC client registration, integration secrets, and budget-aware billing. REST is first-class; MCP is optional.
Live endpoint: https://corroborateme.com/mcp
This repository is the public catalog and schema stub for directory crawlers. It is not the hosted server. Point MCP clients at the live URL above with a CorroborateMe API key (
aa_...) or use MCP OAuth (PRM at /.well-known/oauth-protected-resource). Running the TypeScript in this repo does not authenticate users or store secrets.
Agent guide: see AGENTS.md for discovery URLs, auth, and MCP connect snippets.
Get an API key
Zero-human (agents)
POST https://corroborateme.com/api/agents/bootstrapwith optional{ "company_name": "...", "contact_email": "agent@example.com" }-> bootstrap token (no outbound mail).POST https://corroborateme.com/api/billing/machine-paywithAuthorization: Bearer <bootstrapToken>and optional{ "sku": "pro_prepaid_30d" }.Settle Stripe MPP when enabled (see live
GET /api/configfor amounts) -> response includessecret(aa_...) when unlock succeeds.
See llms.txt and llms-full.txt. Legal: Terms · Privacy.
Human path
Open corroborateme.com and create an account.
Subscribe on Pricing, then mint an API key in the console. Secrets start with
aa_.Use the company key for REST and MCP.
Never commit a real key. Use the aa_... placeholder in configs.
Related MCP server: AgentPay MCP Server
Connect a client
Transport is Streamable HTTP. Authenticate with either:
Authorization: Bearer aa_...(API key from console or bootstrap + machine-pay), orMCP OAuth - host discovers PRM at /.well-known/oauth-protected-resource, registers via DCR, and obtains an access token for
https://corroborateme.com/mcp
Cursor
Install via Cursor Marketplace (plugin)
This repo includes a Cursor plugin manifest and root mcp.json for one-click install from the Cursor Marketplace.
Install the CorroborateMe plugin from the marketplace (or clone this repo for local plugin testing).
Open Cursor Settings -> Customize -> CorroborateMe and set CorroborateMe API key (
aa_...from bootstrap + machine-pay or the console).Reload the window. MCP tools should appear under the CorroborateMe server.
The plugin points at https://corroborateme.com/mcp with Authorization: Bearer ${CORROBORATE_ME_API_KEY}. Never commit a real key.
Submit the public repo at cursor.com/marketplace/publish when ready.
Manual MCP config
User or project MCP config:
{
"mcpServers": {
"corroborate-me": {
"url": "https://corroborateme.com/mcp",
"headers": {
"Authorization": "Bearer aa_..."
}
}
}
}Claude Desktop / Claude Code
{
"mcpServers": {
"corroborate-me": {
"command": "npx",
"args": ["mcp-remote", "https://corroborateme.com/mcp", "--header", "Authorization: Bearer aa_..."]
}
}
}Generic remote MCP
{
"url": "https://corroborateme.com/mcp",
"headers": {
"Authorization": "Bearer aa_..."
}
}Discovery manifests on the product host:
Tools
Schemas in src/server.ts match the hosted server.
Tool | What it does |
| Start humanless company onboarding (bootstrap token flow) |
| Remaining quotas for the authenticated company |
| Create Stripe Checkout URL for human Pro |
| Agent prepaid unlock via Stripe MPP ( |
| Stripe Customer Portal URL |
| Mint a new |
| Register an OIDC relying-party client (RP logout enabled; optional post-logout URIs) |
| Store encrypted integration secret (Google/Apple/etc.) |
| List integrations (prefixes only, no secrets) |
| Mint one-time human login URL with notify methods |
| Poll login-link session status |
| Retry signed webhook delivery after a failed notify |
| Allowlist a callback URL prefix |
Typical agent loop
Bootstrap a company (
agent_bootstrap) and unlock prepaid Pro (billing_machine_pay) when needed.Mint a key with
keys_createif you need a durableaa_...secret.Allowlist callback prefixes (
webhook_allowlist_add), thencreate_login_linkfor human proof.Poll with
get_login_status(or wait for webhook / redirect / postMessage).Use REST or MCP for keys, OIDC clients, and integrations as needed.
Prefer live docs and llms-full.txt for recipes that may change.
Auth and errors
401 - missing or invalid Authorization (API key
aa_...or MCP OAuth access token)402 / 429 - plan or quota; follow machine-readable actions from the live API
Pricing amounts: read live
GET /api/config- do not hardcode dollars as eternal truth (at time of writing: Pro $5.99/mo, agent prepaid Pro $5.99 per 30 days)
Product docs
App: corroborateme.com
Docs: corroborateme.com/docs
OpenAPI: corroborateme.com/openapi.json
Swagger: corroborateme.com/swagger
The CorroborateMe product (Worker, billing, IdP) is closed source. This catalog is MIT-licensed so directories can list tools and install snippets.
Directory listing
Registry name: com.cnrcode/corroborateme (domain namespace via cnrcode.com).
Ensure
https://cnrcode.com/.well-known/mcp-registry-authis deployed.Set GitHub repo secret
MCP_PRIVATE_KEY(the existing cnrcode.com Ed25519 private key hex; never commit it).Push a version tag so GitHub Actions publishes
server.jsonto the official MCP Registry:git tag v0.1.0 git push origin v0.1.0
Directories that ingest the official registry (PulseMCP, MCPCentral, MCPFind, Glama connectors) pick the entry up from there. Other directories (Glama server listing, Smithery, mcpservers.org, mcp.directory, MCP Market, McpMux) are submitted by maintainers only. See docs/directory-listings.md.
Stdio stub (directory introspection)
This repo includes a stdio catalog stub (src/main.ts) so directories can build a container, start the process, and introspect the 13 tool definitions. It does not implement auth or billing - clients still connect to the hosted endpoint above.
Local verify:
npm ci && npm run build && npm start # hangs on stdio - expected
docker build -t corroborate-me-stub . && docker run -i corroborate-me-stubLicense
MIT - catalog, documentation, and schema stub only.
Available Tools
13 toolsagent_bootstrapCInspect
Start humanless company onboarding (returns bootstrap token flow info)
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | No | ||
| contact_email | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says the tool 'starts' onboarding and returns flow information, but it does not state whether this creates records, sends emails, requires prior setup, or has side effects. This is a significant gap for a mutating bootstrap operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence and includes a useful parenthetical about the return value. It avoids padding, though the phrase 'bootstrap token flow info' is somewhat jargon-heavy and could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating action with no annotations and no output schema, the description leaves out side effects, prerequisites, the return shape, and how this relates to the sibling onboarding/auth tools. An agent would have to guess several important details before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain company_name or contact_email beyond their names. It also does not clarify whether they are required, what formats are expected, or how they are used in the onboarding flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Start humanless company onboarding' and notes the return is 'bootstrap token flow info.' It is reasonably distinct from the billing, integration, and auth-related siblings, though it does not explicitly differentiate itself from create_login_link or get_login_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like create_login_link or get_login_status, and no prerequisites or exclusions are mentioned. The intended usage context is only implied by the tool name and the word 'Start.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_checkoutBInspect
Create Stripe Checkout URL (or local bypass grant)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'creates' a URL, implying a side effect, but does not mention auth requirements, idempotency, side effects, or what the returned URL is for. The term 'local bypass grant' is unexplained, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. It states the action and a parenthetical alternative in a compact form. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and no annotations, the description is too terse to be complete. It does not explain what the returned URL is for, what 'local bypass grant' means, or whether authentication is needed. The ambiguity is especially problematic for a billing-related action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is empty (100% coverage by default). The description adds no parameter information, but per the rubric, 0 parameters warrants a baseline of 4. Nothing is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Create Stripe Checkout URL'. This differentiates it from siblings like billing_portal (customer portal) and billing_machine_pay (payment action). However, the parenthetical '(or local bypass grant)' introduces ambiguity without further explanation, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given for when to use this tool versus alternatives. The description does not mention conditions, prerequisites, or situations where billing_portal or billing_machine_pay would be more appropriate. Usage must be inferred from the name and context, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_machine_payDInspect
Agent prepaid unlock when MPP enabled / local bypass
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior, but it only offers cryptic hints: it says 'unlock' and 'bypass' without explaining side effects, prerequisites, idempotency, or what actually happens when invoked. This is not enough for an agent to anticipate the tool's real-world impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but the brevity is the result of under-specification rather than effective conciseness. It is a fragment with a slash-separated condition and no sentence structure, making it harder to parse rather than easier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is inadequate for a tool with no annotations and no output schema. Key terms ('MPP', 'local bypass'), the role of sku, the meaning of 'prepaid unlock', and the relationship to the sibling tools are all left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, sku, has no schema description and is never mentioned in the tool description. With schema description coverage at 0%, the description was expected to clarify how to populate sku, but it provides nothing whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description hints at an unlock action for an 'agent prepaid' state, but it is phrased as a fragment ('Agent prepaid unlock when MPP enabled / local bypass') rather than a clear statement of what the tool does. The terms 'MPP' and 'local bypass' are undefined, and the description does not distinguish this tool from the billing-related siblings like billing_checkout or billing_portal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'when MPP enabled / local bypass' suggests some conditional context, but it is not explained and no alternatives are mentioned. There is no guidance about when to choose this tool over the sibling billing tools or how to handle the two listed conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_portalDInspect
Stripe Customer Portal URL
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It does not state whether this is a read-only operation, whether it requires authentication, or whether it has side effects such as generating a session. The terse phrase offers no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than efficient conciseness. It is front-loaded but lacks the substance needed for a tool whose purpose is not self-evident from the name alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no parameter details, and the description provides no information about return values, expected inputs, or preconditions. Given the ambiguity and lack of annotations, this is completely inadequate for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers parameter semantics (coverage 100%). Baseline for 0 params is 4, and the description does not need to explain parameters that do not exist. No value is added, but none is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase, 'Stripe Customer Portal URL', with no verb or action stated. It does not clarify whether this tool creates, retrieves, or generates a portal URL. Sibling tools like create_login_link and billing_checkout suggest related functionality, but without a verb the purpose remains ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Among siblings such as billing_checkout, billing_machine_pay, and create_login_link, there is no indication of which scenario this tool addresses, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_getBInspect
Remaining quotas for the authenticated company
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the behavioral disclosure burden. It conveys that the result reflects remaining quota state but says nothing about whether the call is read-only, whether values are cached or live, what authentication is needed, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is six words with no filler and the key scope is front-loaded. It is a phrase rather than a full sentence, but for a parameterless getter this brevity is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-input quota check the description is minimally usable, but it leaves ambiguity about what kind of quotas are meant (API usage, billing budget) and how they are represented. With no output schema and no annotations, a bit more context would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is trivially 100%, so there is nothing for the description to add about parameters. A score of 4 reflects the no-parameter baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase identifies the resource (remaining quotas) and the scope (authenticated company), so an agent can tell what data is returned. It omits an explicit verb and does not contrast with sibling billing/integration tools, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to call this versus siblings like billing_portal or integration_list, and no prerequisites or exclusions are stated. The implied company scope is not enough to route an agent's decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_login_linkAInspect
Mint one-time human login URL. Choose notify methods: webhook, redirect, post_message, form_post (poll+sse always on). Default reuses company cookie (Continue-as); set force_reauth for fresh login. No SMS.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| methods | No | ||
| ttl_seconds | No | ||
| webhook_url | No | ||
| force_reauth | No | ||
| redirect_uri | No | ||
| form_post_uri | No | ||
| reuse_session | No | ||
| post_message_origin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses non-obvious behavior: default cookie reuse (Continue-as), force_reauth as an opt-out, poll+sse always being on, and the absence of SMS. It does not fully cover side effects, expiration/link lifecycle, or return payload, which prevents a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, information-dense sentences with no filler. Purpose leads, then options, then defaults and exclusions. Every clause earns its place and the structure is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no annotations, no parameter descriptions, and no output schema, some important context is missing: return value shape, the meaning of state, how ttl_seconds relates to 'one-time', and any prerequisites or error cases. Still, the core invocation intent is reasonably covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does map to many parameters: methods enum values, force_reauth, reuse_session via default cookie behavior, and webhook/redirect/form_post/post_message params. But state and ttl_seconds are not explained, and URI formats are only implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific, vivid verb ('Mint') and a concrete object ('one-time human login URL'). It also enumerates notify methods and an explicit exclusion ('No SMS'), making the tool's function distinctive among siblings without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to call the tool and what it produces, plus an exclusion ('No SMS'). However, it gives no guidance about alternatives such as get_login_status, retry_login_webhook, or webhook_allowlist_add, and no when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_login_statusAInspect
Poll login-link session status (includes notify errors)
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool polls and that notify errors are included, but it does not clarify whether polling is side-effect-free, whether it consumes the session, or what 'notify errors' actually means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with the core action front-loaded and no filler. The parenthetical adds one meaningful detail without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should explain what statuses are returned and how to interpret them. It only mentions notify errors, leaving the caller without enough information to fully understand the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain session_id. The parameter name and the 'login-link session' context give some implicit meaning, but the description adds no format, provenance, or usage detail for the required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Poll') and resource ('login-link session status'), and adds a distinguishing detail ('includes notify errors'). This separates it clearly from siblings like create_login_link and retry_login_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Polling is an implied usage context (checking status after a login link is created), but the description does not explicitly state when to use it versus retry_login_webhook or create_login_link, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integration_listAInspect
List integrations (prefixes only, no secrets)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden. It does disclose a meaningful behavioral trait — only prefixes are returned and secrets are never exposed — which is valuable. However, it says nothing about read-only guarantees, authentication needs, pagination, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tightly-worded sentence with no filler. The parenthetical adds critical scoping information without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, simple list operation with no output schema, the description covers the most important missing context: the result is a list of prefixes, not full integration data or secrets. It omits minor details such as response format and pagination, but these are unlikely to block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema has nothing to document. The description correctly focuses on the output shape instead, which is the only semantically relevant information for calling this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('integrations'), and the parenthetical 'prefixes only, no secrets' clarifies exactly what kind of data is returned. This makes it easy to distinguish from sibling tools like integration_upsert, which imply mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor are any exclusions or preconditions stated. An agent is left to infer that listing is the right first step before upserting or creating integrations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integration_upsertCInspect
Store encrypted integration secret (Google/Apple/etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| secret | Yes | ||
| provider | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits itself. It states the secret is encrypted, but it does not explain whether the operation is idempotent, whether existing secrets are overwritten, what happens if the provider already exists, or if any authentication is required. For a mutation tool with no annotation coverage, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, highly concise and front-loaded with the core action. There is no wasted wording. However, its brevity sacrifices necessary detail, so it is efficient but not fully structured for utility. It earns a high score for conciseness alone, but not for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (2 required), no annotations, no output schema, and no parameter coverage in the description, the description is far from complete. It lacks critical information about parameter semantics, upsert behavior, potential side effects, and expected outcomes. An agent would not have enough context to safely and correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining the parameters. It does not mention 'provider', 'secret', or 'label' at all. It gives examples of provider values (Google/Apple) but does not clarify the meaning of 'label' or the expected format of 'secret'. The description adds no semantic value beyond the raw schema, which is inadequate given the complete lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's core action: storing an encrypted integration secret, with examples of providers (Google/Apple). It distinguishes from siblings like integration_list (which lists integrations) and others. However, it does not explicitly mention the 'upsert' semantics (create-or-update), which is implied by the tool name but not stated in the description, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., whether an OAuth client must exist), nor does it indicate any conditions for calling it. There is no mention of when to use integration_upsert vs. integration_list or other integration-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keys_createBInspect
Mint a new aa_ API key (shown once)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It notably discloses that the key is shown only once, a crucial behavioral trait that the agent must know. However, it does not mention authorization requirements, side effects on existing keys, or any rate limits, so it only partially covers the behavioral spectrum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence of 8 words. The core purpose is front-loaded, and every word contributes meaning. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description is incomplete. It lacks any explanation of the 'name' parameter, so the agent cannot confidently decide whether or how to populate it. Without an output schema, the agent also does not know what the tool returns. The 'shown once' note is helpful but not enough for full operational clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional 'name' parameter with zero description coverage. The tool description does not mention this parameter at all, so it adds no meaning beyond the schema. An agent has no idea what 'name' represents, how to format it, or whether to include it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mint a new aa_ API key') with a specific verb and resource. The 'shown once' detail adds a distinct characteristic that separates it from sibling tools like oauth_client_create or create_login_link. An agent would immediately understand this tool creates an API key with a specific prefix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling tools, when not to use it, or any prerequisites. The description only states what the tool does, leaving the agent to infer the appropriate context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oauth_client_createAInspect
Register an OIDC relying-party client (enableEndSession on; post-logout URIs default from redirect origins)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| public_client | No | ||
| redirect_uris | Yes | ||
| post_logout_redirect_uris | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly discloses two behavior defaults: enableEndSession is on, and post-logout URIs derive from redirect origins. This adds value beyond the schema. However, it does not mention authentication requirements, idempotency, or error behavior, so it's not fully transparent, but for a registration tool the key defaults are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the core purpose ('Register an OIDC relying-party client') and then adds two concise behavioral notes. Every word contributes to understanding, achieving high density without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must fully equip the agent to call the tool correctly. It lacks information about return values, error handling, idempotency, or what happens on duplicate names. It also doesn't mention required permissions. For a tool with 4 parameters and no other structured metadata, this is a significant gap, leaving the agent with many unanswered questions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description compensates for parameter explanation. It only refers to post_logout_redirect_uris (default from redirect origins) and implicitly to redirect_uris, but it does not explain 'name' or 'public_client' at all. The agent would have to infer their meaning solely from the schema, which is insufficient for a low-coverage case. The description adds minimal semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Register' and a specific resource 'OIDC relying-party client', which clearly distinguishes it from sibling tools like create_login_link or keys_create. It also mentions two specific behaviors (enableEndSession on, post-logout URIs default from redirect origins) that add precision, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for registering an OIDC client, which is a distinct purpose among the siblings, but it does not explicitly state when to use this over alternatives or any exclusions. For example, it doesn't say 'use this when you need a new OAuth client' or mention webhook_allowlist_add or integration_upsert as alternatives. The context is clear but not directly tied to decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_login_webhookCInspect
Retry signed webhook delivery after a failed notify
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'signed webhook delivery' and 'retry', but doesn't explain what happens on retry—does it re-send only failed events or all? Are there rate limits or idempotency concerns? It doesn't state what happens to the session or whether it requires authentication. The description is too minimal to cover the safety profile for a retry action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—a single phrase—and front-loaded with the core action. However, it's so brief that it borders on under-specification; while it earns points for brevity, the ambiguity of 'notify' and missing details prevent a perfect score. It's not bloated, but it lacks clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and no output schema, the description is incomplete. It doesn't explain the parameter's meaning, the exact conditions for retry (what constitutes a 'failed notify'), or any side effects. This is a relatively simple tool, but the description leaves too much to inference. Given the siblings (e.g., webhook_allowlist_add), the description doesn't distinguish the retry mechanism.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning of the single parameter 'session_id'. The schema only indicates it's a string, but the description adds no context about what the session represents (e.g., a login session identifier) or how it relates to the retry. This is a significant gap because the parameter is required and the description offers no guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retry') and resource ('signed webhook delivery'), clarifying what it does. However, 'after a failed notify' introduces ambiguity—what is a 'notify'? It doesn't clearly distinguish this tool from siblings like webhook_allowlist_add, but the action is clear enough. The tautology risk is low because the description conveys the purpose, but it's not specific about the notification context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: retry after a failed notify. However, it provides no explicit guidance on when to use this tool versus alternatives, or when not to use it. There's no mention of prerequisites, such as whether the webhook is signed or if a session exists. The context of 'failed notify' is vague, leaving the agent to infer the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_allowlist_addAInspect
Allowlist a callback URL prefix (https webhooks/redirects or cursor:// deep links)
| Name | Required | Description | Default |
|---|---|---|---|
| url_prefix | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it only states the verb 'allowlist'. It does not mention whether the operation is idempotent, reversible, requires special permissions, or has side effects like modifying persistent configuration. The description is too minimal to give the agent confidence in the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no unnecessary words. The action and resource are front-loaded, and the parenthetical example adds clarity without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides the core purpose and parameter format. However, it lacks information about the effect of the operation, whether it can be safely repeated, or any error conditions. Given the simplicity, it is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'url_prefix' as a string with no description, so the description is essential. It adds meaning by specifying that the value is a URL prefix and gives acceptable schemes (https webhooks/redirects or cursor:// deep links). This goes beyond the schema and clarifies the expected format and scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Allowlist') and the resource ('a callback URL prefix'), and it provides concrete examples of valid URL schemes (https webhooks/redirects or cursor:// deep links). This makes the tool's purpose immediately understandable and distinct from sibling tools that handle login, billing, or integration management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or other tools to consider. The only context is the action itself, which implies usage for allowlisting URL prefixes, but there is no explicit routing or conditional guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
agent_bootstrap - First observed
billing_checkout - First observed
billing_machine_pay - First observed
billing_portal - First observed
budget_get - First observed
create_login_link - First observed
get_login_status - First observed
integration_list - First observed
integration_upsert - First observed
keys_create - First observed
oauth_client_create - First observed
retry_login_webhook - First observed
webhook_allowlist_add
TDQS
Scored across 13 tools
Each tool targets a distinct resource and action: login lifecycle, webhook management, integrations, billing, keys, and OAuth. Even related tools like get_login_status and retry_login_webhook serve clearly different purposes (status check vs. retry), so there is no realistic ambiguity.
All names are snake_case, but the verb/noun order is inconsistent—some are verb-first (create_login_link, get_login_status) while others are noun-first (budget_get, keys_create, integration_list). This mixed convention reduces predictability, though the names remain readable and self-explanatory.
13 tools is well within the ideal 3-15 range for a server with this breadth (authentication, billing, integrations, key management, OAuth). Each tool appears justified and none feel redundant or superfluous for the scope.
The tool surface covers core creation and retrieval workflows (create/login status, keys_create, billing_checkout), but lacks lifecycle operations such as revoking keys, deleting OAuth clients, or removing webhook allowlist entries. These gaps could force agents to hit dead ends in real-world scenarios.
Maintenance
Related MCP Connectors
One API, all things verified — control, delegation, human approval, anti-impersonation.
Signup sessions, browser continuity, email, SMS, and OTP/TOTP infrastructure for AI agents.
Verified, pay-per-use API tools for AI agents through one authenticated connection.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides identity infrastructure for AI agents to manage email communications, including sending, replying, and organizing messages. It also includes a secure vault for managing credentials and generating TOTP codes.4 npmMIT
- FlicenseNot gradedqualityAmaintenanceProvides a trust and governance layer for AI agents, enabling secure API access, credential vaulting, paid execution with human approval, and automatic call resume.6 npm2-

AgentValetofficial
AlicenseAqualityBmaintenanceIdentity and credential governance for AI agents. Every agent gets its own cryptographic identity, scoped short-lived credentials per platform, human approval on sensitive actions, and an immutable audit log.72MIT- AlicenseNot gradedqualityDmaintenanceProvides AI agents with a DID-based identity, secure wallet, and cloud KMS-backed signing keys, enabling trusted interactions with persons, companies, and other agents via standards like OIDC4VCI, OIDC4VP, and SD-JWT.Apache 2.0