UseGrant MCP Server
OfficialThe UseGrant MCP Server is a comprehensive tool for managing the UseGrant API resources, including:
Providers: List, create, get, and delete providers
Clients: List, create, get, and delete clients for providers
Domains: List, add, get, delete, and verify domains for providers
Access Tokens: Create tokens for clients and validate tokens for tenants
Tenants: List, create, get, and delete tenants
Tenant Providers: List, create, get, and delete providers associated with tenants
Tenant Provider Policies: List, create, get, and delete policies for tenant providers
Supports environment variable management for the UseGrant MCP server, particularly for storing and accessing the USEGRANT_API_KEY.
Supports the execution of the UseGrant MCP server, which requires Node.js 16 or higher to run the server and interact with the UseGrant API.
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., "@UseGrant MCP Serverlist all providers for tenant tnt_123"
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.
UseGrant MCP Server
This is a Model Context Protocol (MCP) server for interacting with the UseGrant API. It provides a set of tools for managing providers, clients, tenants, and access tokens through the UseGrant platform.
Tools
The tools are generated from the UseGrant OpenAPI spec when the server starts, one tool per API operation, so new API operations are available without updating the server.
Tools are named after the operation, for example:
providers_list: List Providers
providers_clients_create: Create Client
providers_domains_verify: Verify Domain
tenants_providers_policies_create: Create Tenant Provider Policy
tenants_tokens_validate: Validate Token
Read-only operations are marked with readOnlyHint and delete operations with destructiveHint, so MCP clients can ask for confirmation before changing anything.
Related MCP server: MCP Boilerplate
Requirements
Node.js 22.19 or higher
Network access to
sdk.usegrant.dev, the OpenAPI spec is loaded on startA valid UseGrant API key. Refer here for more details.
Using with Claude desktop
Add the following config to your claude_desktop_config file:
{
"mcpServers": {
"usegrant": {
"command": "npx",
"args": ["-y", "@usegrant/mcp"],
"env": {
"USEGRANT_API_KEY": "your_api_key_here"
}
}
}
}Testing
To test the MCP server, we can use mcp inspector.
Copy the .env.example file to .env and set the USEGRANT_API_KEY environment variable.
npx @modelcontextprotocol/inspector -e USEGRANT_API_KEY=$USEGRANT_API_KEY npx tsx src/index.tsTo watch and build the project:
npm run devLicense
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
27 toolsproviders_clients_createCreate ClientD
Create Client
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| audience | Yes | ||
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered. The description adds zero behavioral context — nothing about duplicate-name behavior, failure modes, or what gets created, despite idempotentHint=false hinting at non-repeatable side effects.
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?
It is short, but shortness here is under-specification rather than conciseness: two words that merely echo the title carry no informational payload. There is no front-loaded statement of purpose or scope.
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 3-required-parameter mutation tool with no output schema and partial schema descriptions, the description is completely inadequate. It gives the agent nothing to determine correct invocation or expectations.
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 only 33% (only providerId has a description), and the description supplies no meaning for the undocumented 'name' and 'audience' parameters. With low coverage the description should compensate, but it does not — no explanation of what 'audience' represents or the purpose of the name constraints.
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?
Tautological: description restates name/title.
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, what prerequisites exist (the required providerId, name, audience are only visible in the schema), or how it relates to alternatives. Nothing tells the agent when this is the right call versus a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_clients_deleteDelete ClientCDestructiveIdempotent
Delete Client
| Name | Required | Description | Default |
|---|---|---|---|
| clientId | Yes | Client ID | |
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and closed-world scope, so the safety profile is covered structurally. The description adds nothing beyond that — it doesn't state irreversibility, cascade effects (e.g., whether tokens tied to the client are revoked), or required permissions.
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 text is short, but this is under-specification rather than conciseness — two words that convey no information beyond the tool name. There is nothing front-loaded because there is nothing substantive to front-load.
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 destructive, irreversible mutation tool with no output schema, the description leaves critical gaps: no confirmation of what gets deleted, no confirmation of return behavior, and no warning about cascading effects on related resources. Annotations alone do not cover these.
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 100%, with both clientId and providerId documented and marked as path parameters, so the schema carries the parameter burden. The description adds no meaning beyond the schema, which is the baseline expectation at full coverage.
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?
Tautological: description restates name/title.
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, no preconditions, and no warnings despite it being a destructive operation. With 25+ siblings including providers_delete and tenants_providers_delete, routing guidance is essential and entirely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_clients_getGet ClientCRead-onlyIdempotent
Get Client
| Name | Required | Description | Default |
|---|---|---|---|
| clientId | Yes | Client ID | |
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — no mention of what is returned, whether a missing client errors or returns empty, or any auth scoping requirements.
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?
At two words it is trivially short but not concise in the useful sense — it is under-specified rather than efficient. There is no front-loaded scope statement or qualifier to anchor the agent.
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 two-parameter read, the schema and annotations cover most of the mechanics. However, with no output schema, the description should at least hint at what a 'Client' object contains or how a not-found case behaves, and it says nothing.
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 100%, so both providerId and clientId are documented in the schema, and the description need not repeat them. Baseline 3 applies since the description neither adds nor undermines parameter meaning.
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?
Tautological: description restates name/title.
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 at all about when to use this tool versus providers_clients_list, providers_get, or the tenant-scoped variants. The agent must infer the use case entirely from the tool name and sibling naming convention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_clients_listList ClientsCRead-onlyIdempotent
List Clients
| Name | Required | Description | Default |
|---|---|---|---|
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-destructive, idempotent, non-open-world read, so safety is covered. The description adds nothing about what is returned, whether results are paginated, or whether the list is scoped to the given provider – all non-redundant details it could have supplied.
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?
Two words are technically waste-free, but this is under-specification rather than conciseness. There is no sentence that earns its place by conveying scope, cost, or result shape.
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 read tool with full schema coverage and read-only annotations, the bar is low, but the description still omits the result shape and any hint that results belong to the specified provider. It leaves the agent with only the tool name to work from.
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 is only one parameter (providerId) and schema description coverage is 100%, so the schema already carries the semantics. The description contributes no additional meaning such as whether the provider must exist or how the ID is formatted, so baseline 3 applies.
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?
Tautological: description restates name/title.
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 indication of when to use this over providers_clients_get (single client) or how it relates to provider scoping. The agent must infer the difference between listing and fetching from sibling names, since the description offers no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_clients_tokens_createCreate Access TokenD
Create Access Token
| Name | Required | Description | Default |
|---|---|---|---|
| clientId | Yes | Client ID | |
| expiresIn | No | ||
| providerId | Yes | Provider ID | |
| useJwtType | No | ||
| audienceAsArray | No | ||
| forceDefaultDomain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, non-idempotent, closed-world operation, so the baseline burden is lower, but the description adds nothing: it does not say whether a new token secret is minted each call, whether previously issued tokens are affected, or what the token's lifetime semantics are.
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?
Three words with zero waste but also zero information — this is under-specification rather than conciseness. It is front-loaded only because there is nothing else.
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 6-parameter credential-minting mutation with no output schema and three undocumented boolean switches, the description omits everything an agent needs: token format, return payload, expiration defaults, and required permissions.
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 coverage is only 33% and the two documented fields ('Client ID', 'Provider ID') are tautological. The description provides no meaning for expiresIn, useJwtType, audienceAsArray, or forceDefaultDomain, which are behaviorally significant flags an agent cannot safely set.
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?
Tautological: description restates name/title.
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 indication of when to use this tool versus providers_clients_create, providers_create, or tenants_tokens_validate. No prerequisites (credentials, provider/client existence) or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_createCreate ProviderD
Create Provider
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond that, notably omitting any statement about whether retries could duplicate a provider (relevant given non-idempotent), uniqueness constraints on name, or what is returned on success.
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?
Three words, but this is under-specification rather than conciseness; there is no front-loaded useful content because there is no content at all beyond the title.
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?
A mutable create operation with two required, undocumented, pattern-constrained parameters and no output schema. An agent gets no information about creation semantics, constraints, ordering relative to sibling tools, or failure modes; the annotation block is the only substantive signal.
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% for both required parameters, so the description carries the full burden and does none of it. It says nothing about 'name' (3-50 chars, restricted character set) or 'description' (10-200 chars), nor about format implications despite the strict patterns.
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?
Tautological: description restates name/title.
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 provider-scoped creation siblings, or on prerequisites such as whether a provider must be created before clients/domains/tokens. Nothing tells an agent when NOT to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_deleteDelete ProviderCDestructiveIdempotent
Delete Provider
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered by structured data. The description contributes nothing beyond that — it does not say whether the delete cascades to clients, domains, or tokens, whether it is soft or hard, or what happens on a nonexistent id.
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?
It is technically brief, but the brevity comes from under-specification rather than economy of expression. There is no front-loaded scope statement or consequence warning that would earn a higher score for tightness.
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 destructive, irreversible-in-practice mutation with an undocumented required parameter and no output schema, the description should explain consequences and prerequisites. It omits deletion side effects, dependent-resource impact, and error behavior, leaving the agent to guess.
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 is one parameter (id) with 0% schema description coverage, so the description must carry its meaning and does not. It never states that the id identifies the provider, nor the expected format or whether it is the provider's own id versus a tenant/provider composite.
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?
Tautological: description restates name/title.
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 versus providers_get/providers_list to confirm existence first, or versus the tenant-scoped variants. The only cue that this is a removal operation comes from the name itself, not from any stated condition or alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_domains_addAdd Domain to ProviderC
Add Domain to Provider
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false. The description adds nothing on top of that — it does not say what happens on duplicate domains, whether the domain lands in an unverified state, whether an ownership/DNS record is issued, or what the returned payload looks like.
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?
It is short, but that brevity is under-specification rather than conciseness — the single phrase is a restatement of the title and carries no content an agent could act on. There is no structure to front-load because there is effectively nothing beyond the name.
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 non-idempotent write operation with two required parameters and no output schema, the description omits the essentials: duplicate-handling behavior, post-add verification state, and the relationship to providers_domains_verify. The annotations carry the safety profile, but the operational picture remains incomplete.
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 only 50%: providerId carries a description, but the domain parameter has no prose description at all, only a regex pattern and length bounds. With low coverage the description is supposed to compensate, and it says nothing about accepted domain forms (no scheme, no 'www.' prefix) or where the providerId comes from.
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?
Tautological: description restates name/title.
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 about when to use this versus the verify or list siblings, no stated prerequisites (for example, that the provider must already exist), and no note on whether a newly added domain still needs verification. The agent is left to infer the entire workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_domains_deleteDelete DomainCDestructiveIdempotent
Delete Domain
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Domain ID | |
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, giving the agent the safety profile. The description adds no additional behavioral context, such as what happens to associated records, whether verification state matters, or permission requirements for deletion.
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?
Two words are maximally concise but border on under-specification rather than efficiency. There is no wasted text, but there is also no front-loaded useful information.
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 destructive mutation tool with no output schema and heavy sibling competition, the description is inadequate. It should clarify irreversible effects, dependent resources, or prerequisites to be complete enough for 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?
Schema description coverage is 100%, so both path parameters (domainId, providerId) are documented in the schema. The description adds nothing beyond this, which is the baseline expectation when the schema is fully covered.
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?
Tautological: description restates name/title.
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. The sibling set includes verify, add, get, and list operations, and the description does nothing to indicate the conditions that select delete over those options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_domains_getGet DomainDRead-onlyIdempotent
Get Domain
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Domain ID | |
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description adds nothing beyond them. It says nothing about error behavior for unknown IDs, whether verification status is included, or any other behavioral trait an agent would want.
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?
Two words, but this is under-specification rather than conciseness; there is nothing to be front-loaded because nothing is said. No structural information is conveyed.
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?
With no output schema, the description should at minimum indicate what a 'domain' record contains and what a successful retrieval looks like. Instead it leaves the agent to infer everything from the tool name and the sibling list.
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 100% and both required path parameters (domainId, providerId) are documented in the schema, so baseline 3 applies. The description itself contributes no additional parameter meaning.
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?
Tautological: description restates name/title.
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 the many sibling domain tools (list, add, delete, verify). No prerequisites, no conditions, no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_domains_listList DomainsCRead-onlyIdempotent
List Domains
| Name | Required | Description | Default |
|---|---|---|---|
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety and idempotency are fully covered. The description contributes nothing beyond them—no pagination behavior, ordering, or what a domain record 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 text is extremely short and front-loaded, but here brevity reflects under-specification rather than efficient communication. There is zero waste but also zero useful content.
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 list tool in a family that includes domains_add, domains_verify, and domains_delete—implying domains carry verification state—the description says nothing about scope, return contents, pagination, or relationship to verification. With no output schema, this leaves meaningful gaps.
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 is one parameter (providerId) with 100% schema description coverage, so the schema carries the semantics. The description adds no meaning beyond it, which matches the baseline 3 when schema coverage is high.
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?
Tautological: description restates name/title.
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 on when this tool should be used versus providers_domains_get, providers_list, or tenants_providers_list. The listing nature is only implied by the word "List," with no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_domains_verifyVerify DomainC
Verify Domain
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Domain ID | |
| providerId | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is partly covered. But the description adds nothing about what verification does — whether it triggers an async DNS/ownership check, requires prior domain configuration, consumes a quota, or returns only an acknowledgement. That is a significant omission for a non-idempotent write 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?
Two words, so nothing is wasted, but this is under-specification rather than conciseness. There is no front-loaded context an agent could act on.
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?
With no output schema and a non-idempotent, non-read-only action, the description should explain the outcome or side effect of verification. It says nothing, so the agent must invoke blind — annotations and the fully documented parameters only partly compensate.
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 100% and both required parameters (providerId, domainId) are documented in the schema, so the baseline of 3 applies. The description adds no extra meaning about how these identifiers scope or constrain the verification.
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?
Tautological: description restates name/title.
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 when-to-use guidance is given, no prerequisites, and no mention of any sibling tool. With providers_domains_get and providers_domains_add in the same family, the agent has no basis for choosing this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_getGet ProviderCRead-onlyIdempotent
Get Provider
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered without the description. The description adds nothing beyond that — no mention of error behavior for an unknown id, no visibility into what a provider record contains, and no authorization 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?
At two words there is no waste, but this is under-specification rather than conciseness. Nothing is front-loaded because there is no content to front-load.
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?
With no output schema, the description was the only place to convey what a fetched provider record looks like or what happens on a missing id, and it does neither. The annotations cover safety, but an agent still lacks enough to call this confidently in a crowded provider/tenant tool family.
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?
Only one parameter (id) exists and schema description coverage is 100%, so the schema already carries the semantics and the baseline of 3 applies. The description contributes nothing extra such as accepted id formats or whether tenant scope is 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?
Tautological: description restates name/title.
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 statement of when to use this tool versus its many siblings. The distinction between fetching a provider directly versus via tenants_providers_get, or listing via providers_list, is left entirely to inference from naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
providers_listList ProvidersCRead-onlyIdempotent
List Providers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds nothing beyond that — no mention of pagination, return shape, or scope (global vs tenant-scoped).
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?
It is short, but this is under-specification rather than true conciseness: a single title-repeat sentence does no work for the agent.
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?
No output schema exists, so the description should hint at what is returned (provider records and their fields) and how it relates to tenant-scoped provider lists. It provides none of this, leaving the agent to guess scope and result shape.
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 takes zero parameters and the schema is an empty object, so there is nothing for the description to clarify. Baseline 4 applies.
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?
Tautological: description restates name/title.
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 indication of when to use this list versus providers_get, tenants_providers_list, or other listing tools. The agent must infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_createCreate TenantD
Create Tenant
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the basic safety profile is known. However, the description adds nothing beyond that: no mention of required permissions, what happens when a tenant with the same name already exists, whether creation is idempotent (annotations say it is not), or what the response returns.
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?
Two words carry no waste but also no information; this is under-specification rather than conciseness. Nothing is front-loaded because there is nothing to front-load.
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?
A mutation tool with two required body parameters, no parameter descriptions, no output schema, and no annotations explaining side effects. An agent cannot tell from the definition what a tenant is, what valid input looks like, or what a successful call produces — far short of 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?
Schema description coverage is 0% — neither 'name' nor 'description' has any description in the schema — and the tool description provides zero compensating information. The constraints (3-50 chars, 10-200 chars, allowed character pattern) exist in the schema but the semantics of what a 'tenant name' means or how 'description' is used are completely undocumented.
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?
Tautological: description restates name/title.
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 create a tenant versus listing or getting one, no prerequisites (e.g., whether a provider must exist first, given tenants_providers_create exists), and no mention of name-uniqueness or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_deleteDelete TenantDDestructiveIdempotent
Delete Tenant
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tenant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is at least machine-readable. The description adds no behavioral context of its own: it does not say whether deletion is permanent, whether it cascades to providers/clients/tokens/domains, or whether it fails when dependent resources exist. It does not contradict the annotations, but it contributes nothing beyond them.
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 certainly short and front-loaded, but this is under-specification rather than conciseness. It consists of four words that duplicate the title, so no sentence earns a place by conveying new information.
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 destructive, non-reversible-sounding operation on a top-level tenant object with no output schema and a rich sibling set, the description is completely inadequate. An agent gets no warning about cascade deletion, no recovery information, and no confirmation guidance.
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 is a single required parameter (id) and schema description coverage is 100%, so the schema fully documents it. Per the rubric baseline, high coverage with no compensating detail in the description yields a 3; the description adds no meaning about id format or sourcing (e.g., from tenants_list).
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?
Tautological: description restates name/title.
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 versus tenants_get, tenants_list, or tenants_providers_delete, and no mention of confirming intent before an irreversible tenant-wide removal. Nothing in the description indicates prerequisites or consequences that would inform tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_getGet TenantCRead-onlyIdempotent
Get Tenant
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tenant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false, so safety behavior is fully covered structurally. The description adds nothing beyond that — no mention of what happens on a missing/invalid ID (error vs empty) or what the returned tenant object looks like.
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 text is two words and thus trivially concise, but that brevity comes from under-specification rather than economy. Nothing is front-loaded because there is nothing to front-load.
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?
With a single required path parameter and rich annotations, the structured fields carry most of the load, but with no output schema the description should at least indicate what is returned or how failures surface. It contributes none of that, leaving the definition adequate only in the most minimal sense.
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 100% and there is only one parameter, whose schema text ("Tenant ID", path location) already documents it. The description does not add format hints or sourcing guidance, so baseline 3 applies for a fully-documented single-param schema.
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?
Tautological: description restates name/title.
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 versus tenants_list (list all tenants) or the tenants_* sub-resource tools. The agent must infer the fetch-by-ID pattern entirely from the tool name and the required id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_listList TenantsCRead-onlyIdempotent
List Tenants
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description contributes nothing beyond that — no note on pagination, result scope, or whether all tenants or only the caller's are returned.
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?
Two words is not conciseness here but under-specification — the text is identical to the title and carries zero informational payload. There is nothing to be front-loaded because nothing is said.
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 structurally simple (no params, no output schema) and annotations cover safety, so a short description could suffice — but this one omits even the basic listing scope (all tenants vs. accessible tenants) and any pagination or ordering behavior, leaving real ambiguity for an agent choosing among 27 sibling tools.
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 takes zero parameters, so there are no parameter semantics for the description to explain; the baseline of 4 applies. Nothing in the description misrepresents the (empty) input schema.
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?
Tautological: description restates name/title.
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 call this versus tenants_get or tenants_providers_list, and no stated preconditions. An agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_createCreate Tenant ProviderD
Create Tenant Provider
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| audience | Yes | ||
| tenantId | Yes | Tenant ID | |
| fingerprints | Yes | ||
| earliestIssuanceTimeAllowed | Yes | Earliest issuance time allowed in hours |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the basic safety profile is covered. The description adds nothing further — no mention of what is created, whether duplicates are rejected, or what permissions/tenant state are required.
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?
It is one short sentence, but brevity here reflects under-specification rather than economy. There is essentially nothing to front-load because no information is provided.
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?
A mutation tool with five required parameters, 40% schema coverage, no output schema, and a non-obvious domain concept has no supporting explanatory content. An agent could not confidently call this without guessing at the meaning of the required fields.
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 only 40%, and the description compensates for none of it. Five required parameters (url, audience, fingerprints, earliestIssuanceTimeAllowed, tenantId) have their semantics left almost entirely to the schema, leaving terms like "fingerprints" and "audience" unexplained.
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?
Tautological: description restates name/title.
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 when-to-use guidance, no prerequisites, and no mention of the closely related siblings (providers_create, tenants_providers_get, tenants_providers_delete). An agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_deleteDelete Tenant ProviderCDestructiveIdempotent
Delete Tenant Provider
| Name | Required | Description | Default |
|---|---|---|---|
| tenantId | Yes | Tenant ID | |
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is fully covered elsewhere. The description adds nothing: it does not state whether deleting a tenant provider revokes access, cascades to policies, or is reversible, which are the exact behavioral facts an agent would need beyond the annotations.
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 tautological fragment that duplicates the title. Brevity here reflects under-specification rather than efficiency — the one sentence earns no 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 destructive, non-read-only mutation with no output schema, the description should at minimum explain what is removed and any side effects. With annotations only covering the generic destructive flag, critical context about cascading effects on policies/domains is missing.
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 100% with only two clearly named path parameters (tenantId, tenantProviderId). Per the baseline rule, the schema does the heavy lifting, so a 3 is appropriate even though the description contributes no parameter meaning.
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?
Tautological: description restates name/title.
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, no prerequisites, and no mention of alternatives like tenants_providers_get or tenants_delete. An agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_getGet Tenant ProviderCRead-onlyIdempotent
Get Tenant Provider
| Name | Required | Description | Default |
|---|---|---|---|
| tenantId | Yes | Tenant ID | |
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond those annotations – no note on what fields are returned, whether a 404 is possible for a non-associated provider, or scope/tenant isolation 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?
Four words with zero waste but also zero information; brevity here is under-specification rather than concision. There is a valid minimal sentence available ("Fetch a provider associated with a tenant by tenantId and tenantProviderId") that would fit in the same space.
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?
No output schema exists, so the description is the only place to signal what a Tenant Provider object looks like or what happens if the provider is not attached to the tenant. Given a lookup tool in a dense sibling namespace, the definition leaves the agent to guess key distinctions.
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 100% with both tenantId and tenantProviderId documented and required, so the schema carries the burden. The description adds no extra semantics, which is the baseline-3 case for high-coverage schemas.
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?
Tautological: description restates name/title.
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 when-to-use, when-not-to-use, or alternative routing is stated. The agent must infer from the 25 sibling names that this fetches a provider that belongs to a specific tenant, versus the global providers_get. Nothing in the description resolves that ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_listList Tenant ProvidersCRead-onlyIdempotent
List Tenant Providers
| Name | Required | Description | Default |
|---|---|---|---|
| tenantId | Yes | Tenant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that — no note on result shape, pagination, or what happens when a tenant has no providers.
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?
It is a single short phrase with zero waste, but the brevity reflects under-specification rather than disciplined editing. Nothing is front-loaded because nothing is said.
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 read-only list tool the annotations and schema cover most needs, but among 26 siblings with overlapping names (`providers_list`, `tenants_providers_get`, `tenants_providers_create`) the description leaves the critical scoping question unanswered. A single sentence clarifying tenant-scoped versus global listing 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?
Only one parameter (`tenantId`), and the schema already describes it at 100% coverage. The description adds no extra meaning about the identifier's format or where it comes from, which is acceptable given the schema does the work — baseline 3 applies.
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?
Tautological: description restates name/title.
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 on when to use this versus `providers_list` or `tenants_providers_get`, and no mention of prerequisites such as a valid tenant or permission scope. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_policies_createCreate Tenant Provider PolicyD
Create Tenant Provider Policy
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| audience | Yes | ||
| tenantId | Yes | Tenant ID | |
| conditions | No | ||
| description | Yes | ||
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-readonly, non-destructive, non-idempotent mutation, so the safety bar is lower, but the description adds nothing beyond them: no note on prerequisites, uniqueness of name/audience, or what happens on repeat calls. Given zero added context for a write tool, it lands at 2.
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?
There is nothing to trim because there is nothing there; the single sentence is a title echo, so brevity reflects under-specification rather than efficiency.
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?
A 6-parameter mutation with a nested conditions array, five required fields, and no output schema demands far more than a repeated title. An agent cannot correctly call this tool without opening and reasoning through the raw schema.
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 only 33%, yet the description explains none of the 6 parameters. The nested 'conditions' array with key/operator/value and the required audience/description constraints are the most consequential inputs and are entirely undocumented in prose.
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?
Tautological: description restates name/title.
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 on when to use this versus siblings like tenants_providers_create or tenants_providers_policies_list. The agent must infer the entire create-a-policy-under-a-provider workflow from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_policies_deleteDelete Tenant Provider PolicyCDestructiveIdempotent
Delete Tenant Provider Policy
| Name | Required | Description | Default |
|---|---|---|---|
| policyId | Yes | Policy ID | |
| tenantId | Yes | Tenant ID | |
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered by structured metadata. However, the description adds no behavioral context beyond those annotations—it does not mention irreversibility, required permissions, cascading effects, or whether the policy must be detached first. It does not contradict the annotations.
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 one short phrase that merely repeats the title, so it is concise only because it is under-specified. There is no front-loaded useful information, and the single sentence does not earn its place as agent guidance.
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?
This is a destructive delete operation with three hierarchical identifiers and no output schema. Annotations cover the safety hints, but the description does not explain the hierarchy, what happens on deletion, whether dependent data is affected, or what a successful response means.
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 100%, so the three required path parameters (tenantId, tenantProviderId, policyId) are documented in the schema. The description adds no meaning beyond those schema descriptions, which is acceptable but not helpful.
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?
Tautological: description restates name/title.
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 such as tenants_providers_policies_get or tenants_providers_policies_list. The description provides no prerequisites, no context about the tenant/provider/policy hierarchy, and no warning about when deletion should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_policies_getGet Tenant Provider PolicyCRead-onlyIdempotent
Get Tenant Provider Policy
| Name | Required | Description | Default |
|---|---|---|---|
| policyId | Yes | Policy ID | |
| tenantId | Yes | Tenant ID | |
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on hierarchy requirements, not-found behavior, or what a policy record 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?
There is nothing to trim, but that is because the description is under-specified rather than efficient. A single restated phrase provides no front-loaded value an agent can act on.
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?
No output schema exists, so the description should at least indicate what a policy object represents or the tenant/provider/policy nesting requirement. With annotations rich but the description empty of substance, an agent lacks the context to distinguish this call from adjacent reads.
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 100% and all three path parameters (tenantId, tenantProviderId, policyId) are documented in the schema itself. The description adds no meaning beyond the schema, so the baseline 3 applies.
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?
Tautological: description restates name/title.
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 when-to-use guidance, no alternatives, no prerequisites. The agent must infer from the naming convention that this requires a policy under a tenant provider, and that tenants_providers_policies_list is the alternative for enumeration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_providers_policies_listList Tenant Provider PoliciesCRead-onlyIdempotent
List Tenant Provider Policies
| Name | Required | Description | Default |
|---|---|---|---|
| tenantId | Yes | Tenant ID | |
| tenantProviderId | Yes | Tenant Provider ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description carries a lower burden. However, it adds nothing beyond the title — no mention of what policies are returned, ordering, or whether results are scoped to the given provider.
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 single sentence is front-loaded and has no filler, but it is pure tautology of the title, so it does not earn its place as a distinct description.
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 list operation with no output schema, the description should indicate what is returned (e.g., a collection of policy objects) and any pagination or ordering behavior. None of that is present, leaving the agent to infer the response shape.
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 100%, so both path parameters (tenantId, tenantProviderId) are documented in the schema. The description contributes no additional meaning, which matches the baseline of 3 when the schema does the work.
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?
Tautological: description restates name/title.
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, when to use a sibling such as tenants_providers_get or tenants_providers_list, or what prerequisites (the required tenantId and tenantProviderId) mean semantically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenants_tokens_validateValidate TokenD
Validate Token
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| tenantId | Yes | Tenant ID | |
| tenantProviderPolicyId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=false, idempotentHint=false, yet the description adds no explanation of why a "validate" would be non-read-only or non-idempotent. It also omits error/failure semantics (e.g., is an invalid token a 200 with a false flag or an error?), which is critical for a validation tool.
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?
It is short, but brevity here reflects under-specification rather than efficiency — two words that carry no information beyond the tool's own name.
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 3-parameter required-input validation endpoint with no output schema, the description should explain inputs, expected result shape, and failure behavior. None of that is present.
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 coverage is only 33% — token and tenantProviderPolicyId have no descriptions. The description supplies no meaning for any of the three required parameters, leaving the agent unable to know what to pass for tenantProviderPolicyId.
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?
Tautological: description restates name/title.
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 indication of when to use this tool, what preconditions exist, or how it relates to the many sibling tenant/provider tools. The agent must guess entirely from the name.
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.
53 tool updates
v2.0.0- Removed
add_domain - Removed
create_access_token - Removed
create_client - Removed
create_provider - Removed
create_tenant - Removed
create_tenant_provider - Removed
create_tenant_provider_policy - Removed
delete_client - Removed
delete_domain - Removed
delete_provider - Removed
delete_tenant - Removed
delete_tenant_provider - Removed
delete_tenant_provider_policy - Removed
get_client - Removed
get_domain - Removed
get_provider - Removed
get_tenant - Removed
get_tenant_provider - Removed
get_tenant_provider_policy - Removed
list_clients - Removed
list_domains - Removed
list_providers - Removed
list_tenant_provider_policies - Removed
list_tenant_providers - Removed
list_tenants - Added
providers_clients_create - Added
providers_clients_delete - Added
providers_clients_get - Added
providers_clients_list - Added
providers_clients_tokens_create - Added
providers_create - Added
providers_delete - Added
providers_domains_add - Added
providers_domains_delete - Added
providers_domains_get - Added
providers_domains_list - Added
providers_domains_verify - Added
providers_get - Added
providers_list - Added
tenants_create - Added
tenants_delete - Added
tenants_get - Added
tenants_list - Added
tenants_providers_create - Added
tenants_providers_delete - Added
tenants_providers_get - Added
tenants_providers_list - Added
tenants_providers_policies_create - Added
tenants_providers_policies_delete - Added
tenants_providers_policies_get - Added
tenants_providers_policies_list - Added
tenants_tokens_validate - Removed
verify_domain
26 tool updates
v1.0.0- First observed
add_domain - First observed
create_access_token - First observed
create_client - First observed
create_provider - First observed
create_tenant - First observed
create_tenant_provider - First observed
create_tenant_provider_policy - First observed
delete_client - First observed
delete_domain - First observed
delete_provider - First observed
delete_tenant - First observed
delete_tenant_provider - First observed
delete_tenant_provider_policy - First observed
get_client - First observed
get_domain - First observed
get_provider - First observed
get_tenant - First observed
get_tenant_provider - First observed
get_tenant_provider_policy - First observed
list_clients - First observed
list_domains - First observed
list_providers - First observed
list_tenant_provider_policies - First observed
list_tenant_providers - First observed
list_tenants - First observed
verify_domain
TDQS
Scored across 27 tools
The hierarchical resource paths make most tools clearly distinct, especially across providers, clients, domains, tenants, tenant providers, and policies. Some boundaries are still easy to confuse, such as provider clients' token creation versus tenant token validation, but descriptions provide enough context.
Tool names consistently use snake_case with a hierarchical resource path followed by a verb, such as providers_clients_list and tenants_providers_policies_create. Domain-specific verbs like add and verify are used appropriately without breaking the overall pattern.
The 27-tool surface is heavy for a single MCP server, but it is structured around CRUD operations for several nested resource types rather than arbitrary one-off tools. It is borderline appropriate for a multi-tenant provider/client/domain/policy domain, though still larger than ideal.
The server covers many core list/get/create/delete operations across providers, clients, domains, tenants, tenant providers, and policies. However, update operations are largely absent, and token lifecycle coverage is incomplete because there is token creation and validation but no token listing, revocation, or deletion.
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
- StytchOAuthdev.stytch.mcp
The Stytch MCP server is a reference implementation that demonstrates remote MCP server authentication and authorization using Stytch Connected Apps. It provides OAuth 2.1-compliant authorization (including PKCE), Dynamic Client Registration, and validates Stytch-issued access tokens to enable AI agents to securely interact with external services through permissioned access, supporting scopes like openid, email, profile, and manage:project_data.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseBqualityAmaintenanceA Model Context Protocol server that provides tools to manage Keycloak users and realms, allowing you to create and delete users, list available realms, and view users in specific realms.448 npm46MIT
- AlicenseNot gradedqualityDmaintenanceA server that implements the Model Context Protocol, providing a standardized way to connect AI models to different data sources and tools.7 npm12MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that supports remote connections and authenticates users via GitHub OAuth, allowing them to access tools based on their GitHub identity.-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables management of Keycloak users and realms through a standardized interface, providing tools for user creation, deletion, role assignment, and group management.978 npm13MIT