Skip to main content
Glama

Server Details

Register, renew, transfer, and manage domains, DNS, VPS, and email with 102 tools. By OSIR.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Osir-Inc/mcp-a2a
GitHub Stars
0
Server Listing
Domain Name OSIR MCP

Available Tools

105 tools
addPrefixToDomainA
Read-onlyIdempotent
Inspect

addPrefixToDomain: Generate domain suggestions by adding prefixes to a base name.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code; default "eng".
nameYesBase name to prefix, e.g. "mycompany".
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
maxResultsNoMaximum suggestions to return; default 20.
vocabularyNoPrefix vocabulary: "@prefixes" or a custom comma-separated list.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context beyond that, such as the output concept of suggestions, but does not disclose ordering, pagination, or vocabulary behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear, front-loaded sentence with no fluff beyond the redundant 'addPrefixToDomain:' heading that repeats the tool name. It is appropriately short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only suggestion tool, the description conveys the core output (domain suggestions) and all parameters are fully documented. The absence of an output schema is mitigated by the intuitive result type, though no details about response structure are given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all five parameters already documented in the input schema. The description contributes no additional parameter semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate') with a specific resource ('domain suggestions') and a precise method ('adding prefixes to a base name'). This clearly differentiates it from the sibling addSuffixToDomain and other suggestion tools by identifying its distinct mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 close alternatives like addSuffixToDomain, generateDomainSuggestions, or bulkDomainSuggestions. There are no explicit conditions, exclusions, or pointers to a more appropriate sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addSshKeyA
Idempotent
Inspect

addSshKey: Store an SSH public key on your account so it can be injected into VPS installs. Idempotent: storing a key you already have returns the existing one instead of creating a duplicate, so it is safe to call before every order. Returns the key id to pass to orderVps or buildVpsInstance. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA label for the key, e.g. 'laptop'.
publicKeyYesThe full single-line OpenSSH public key, e.g. 'ssh-ed25519 AAAA... user@host'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the idempotentHint annotation by explaining that duplicate storage returns the existing key, and by noting that authentication is required and the return value is a key id. This adds meaningful context for how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and purpose, followed by idempotency and downstream integration details. Every sentence contributes value without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter tool with complete schema descriptions and idempotency annotations, the description covers the workflow, authentication requirement, and return value. Nothing essential for selecting or invoking the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for name, publicKey, and sessionKey, so the baseline of 3 applies. The description adds context about the returned key id but does not need to restate parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Store an SSH public key on your account' for injection into VPS installs. This clearly separates it from siblings like listMySshKeys and deleteSshKey.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use guidance: it is safe to call before every order and it returns a key id to feed into orderVps or buildVpsInstance. It does not explicitly mention alternatives or when not to use it, but the intended workflow is well specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addSuffixToDomainB
Read-onlyIdempotent
Inspect

addSuffixToDomain: Generate domain suggestions by adding suffixes to a base name.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code; default "eng".
nameYesBase name to suffix, e.g. "mycompany".
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
maxResultsNoMaximum suggestions to return; default 20.
vocabularyNoSuffix vocabulary: "@suffixes" or a custom comma-separated list.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description is not responsible for safety disclosure. It adds the core behavior of suffix appending, but does not disclose whether suggestions are checked for availability, how suffixes are selected, or what the result contains. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence and front-loads the essential mechanism. However, the leading 'addSuffixToDomain:' label redundantly re-states the tool name and adds no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and annotations cover parameters and safety, but there is no indication of return format and no guidance for choosing among the many suggestion-related siblings such as addPrefixToDomain, bulkDomainSuggestions, spinDomainWords, or suggestAlternatives. For a tool with no output schema and a crowded sibling group, this leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; every parameter is individually described, so the description need not repeat parameter details. The description only restates the general 'base name + suffix' relationship, adding no new parameter semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Generate'), resource ('domain suggestions'), and mechanism ('adding suffixes to a base name'). It distinguishes from the prefix-based sibling implicitly, but does not name any alternative such as addPrefixToDomain or generateDomainSuggestions, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'adding suffixes to a base name' implies this tool is for suffix-based suggestion generation, but there is no explicit when-to-use/when-not-to-use guidance and no reference to the many sibling suggestion tools such as addPrefixToDomain, bulkDomainSuggestions, or generateDomainSuggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buildVpsInstanceA
Destructive
Inspect

buildVpsInstance: Stage an operating system install (or reinstall) on a VPS instance. DESTRUCTIVE: ERASES ALL DATA on the server, including any deployed application, and cannot be undone. The install is asynchronous; afterwards poll getVpsInstanceDetails until buildState is COMPLETE. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
swapNoSwap size: 256, 512, or 768 (MB), or 1, 1.5, 2, 3, 4, 5, 6, or 8 (GB).
hostnameNoHostname for the rebuilt server; defaults to the instance's current hostname.
sshKeyIdsNoInteger SSH key ids from listMySshKeys, injected during install; without one you may not be able to log in.
instanceIdYesVPS instance id from listMyVpsInstances.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
operatingSystemIdYesInteger OS template id from listVpsOsTemplates, resolved with this same instanceId.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the destructiveHint annotation by stating that it ERASES ALL DATA, is irreversible, is asynchronous, requires authentication, and returns an actionId requiring confirmation. This gives the agent a clear picture of consequences and lifecycle.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, starting with the destructive warning before explaining the async flow and confirmation step. Every sentence adds necessary operational or safety information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, asynchronous tool with no output schema, the description fully covers the lifecycle: prerequisites, destructive effect, completion polling, and confirmation action. An agent can safely and correctly invoke the tool based on this text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters well. The tool description doesn't add per-parameter detail, but it doesn't need to; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Stage an operating system install (or reinstall) on a VPS instance.' It clearly identifies the action and distinguishes it from siblings like orderVps (creating a new instance) and deleteVpsInstance (removing one).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit operational guidance: the install is asynchronous, poll getVpsInstanceDetails until buildState is COMPLETE, and then use executeConfirmedAction with the returned actionId after user approval. It doesn't name explicit when-not/alternatives, but there is no direct sibling for this operation, so the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bulkDomainSuggestionsA
Read-onlyIdempotent
Inspect

bulkDomainSuggestions: Generate domain suggestions for 1-10 keywords across 1-6 TLDs (hard cap), grouped by originating keyword. Typical flow: call listCategorizedTlds first to pick 3-6 TLDs, then this tool. Per-suggestion availability may be "available", "taken", or "unknown"; confirm "unknown" or premium-TLD names with checkDomainAvailability before recommending.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code; default "eng".
tldsYes1-6 TLDs without leading dots (use "tech", not ".tech"), chosen from listCategorizedTlds.
keywordsYes1-10 keywords describing the project.
maxResultsNoMaximum suggestions per keyword; default 20.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful behavioral context beyond the annotations: results are grouped per originating keyword, each suggestion has availability that can be available/taken/unknown, and unknown or premium-TLD names should be verified before recommendation. No contradiction with the readOnly/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences covering action, constraints, workflow, and follow-up with no filler. The tool name prefix is slightly redundant, but the substantive content is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by stating output grouping, the three possible availability values, and the safe confirmation path via checkDomainAvailability. This gives an agent enough to call the tool correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description enriches keywords and tlds by restating hard caps and linking TLD selection to listCategorizedTlds. It also clarifies output grouping semantics, though lang and maxResults rely on schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action—generate domain suggestions—with precise constraints (1-10 keywords, 1-6 TLDs, hard cap) and output grouping. This clearly differentiates it from sibling tools like generateDomainSuggestions by emphasizing bulk/multi-keyword scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes a typical flow: call listCategorizedTlds first to choose TLDs, then use this tool, and follow up with checkDomainAvailability for uncertain results. It does not explicitly contrast with generateDomainSuggestions, so it is clear on workflow but not a full when-not-to-use guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancelTransferA
DestructiveIdempotent
Inspect

cancelTransfer: Stage cancellation of a pending domain transfer. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name whose pending transfer to cancel, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: the operation is destructive and irreversible once executed, requires authentication, returns an actionId, and is only a staging step rather than the final execution. This directly helps the agent understand the two-phase nature of the cancellation and what to do with the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then the safety warning, then the workflow. Every sentence contributes essential information, and the warning about destructiveness is prominent before the user proceeds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with rich annotations, the description covers all critical aspects: what it does, what it returns, the required follow-up action, the destructive nature, and authentication. Nothing an agent needs to call it correctly or handle its result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description does not add parameter-specific meaning, but it also doesn't need to; the schema carries the burden. A baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Stage cancellation') and resource ('pending domain transfer'), and clearly distinguishes this tool from the actual execution step by naming executeConfirmedAction as the follow-up. It also implies the domain must currently be pending, distinguishing it from transfer initiation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (for a pending domain transfer) and outlines the exact workflow: after calling it, present the returned summary and call executeConfirmedAction with the actionId if the user approves. This gives the agent clear routing and next-step guidance without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

changeVpsPaymentTermAInspect

changeVpsPaymentTerm: Change the payment term (billing cycle) for a VPS instance. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesVPS instance id from listMyVpsInstances.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
paymentTermYesNew billing cycle: 'MONTHLY', 'SEMI_ANNUAL', 'ANNUAL', 'BIENNIAL', or 'TRIENNIAL'.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows it's a mutating but non-destructive operation. The description adds the authentication requirement, which is not in annotations, and clarifies 'payment term (billing cycle)' semantics. However, it does not disclose side effects such as immediate effect on billing or potential proration, so context added is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence plus an auth requirement, with the action front-loaded. No filler words; the name prefix is slightly redundant but harmless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with only two required parameters, the schema covers all inputs and the description provides the operation's purpose and auth prerequisite. The lack of an output schema is acceptable for a write operation, and no critical invocation detail appears missing. It's sufficiently complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are fully described in the schema, including the allowed values for paymentTerm and the conditional use of sessionKey. The description adds no parameter-level detail beyond calling the payment term a billing cycle, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and object: 'Change the payment term (billing cycle) for a VPS instance.' This clearly identifies the verb 'change' and the resource 'payment term of a VPS instance,' distinguishing it from VPS lifecycle tools like buildVpsInstance or deleteVpsInstance. The added auth note is extra context, not purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool over alternatives, nor exclusions. The only usage-related information is 'Requires authentication,' which serves as a prerequisite rather than a selection criterion. Usage is implied from the purpose, but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkDeviceLoginStatusAInspect

checkDeviceLoginStatus: Poll for device login completion. Call this after loginWithDevice() once you have opened the verification URL and signed in. Required: deviceCode (the device_code returned by loginWithDevice). On success returns a sessionKey; pass it as the sessionKey argument on every subsequent authenticated tool call.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceCodeYesThe device_code value returned by loginWithDevice.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
messageNo
successNo
expiresInNo
tokenTypeNo
sessionKeyNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The tool is a polling operation, and the description says 'Poll for device login completion' and notes that success returns a sessionKey. This adds context beyond the annotations, which only state readOnlyHint=false, idempotentHint=false, and destructiveHint=false. It doesn't detail error behavior or what happens before completion, but for a simple poll the disclosure is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, call sequence, and required input/return handling. The most important information is front-loaded, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with a clear position in a flow, the description covers the prerequisite call, input origin, success return, and how to use the result. It doesn't mention failure modes or polling behavior details, but an output schema exists and the sibling list clarifies the flow context, so the omission is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the parameter deviceCode is already described as 'The device_code value returned by loginWithDevice.' The description repeats this ('the device_code returned by loginWithDevice') and adds 'Required,' but this is also already in the schema's required list. No new semantic information about the parameter is provided beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Poll for device login completion,' which names a specific verb and resource, clearly distinguishing this tool from its siblings like loginWithDevice (which initiates the flow) and getAuthStatus (which checks general auth state). It also states the concrete success outcome ('returns a sessionKey'), leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly gives the usage context: 'Call this after loginWithDevice() once you have opened the verification URL and signed in.' It also specifies the prerequisite input (deviceCode returned by loginWithDevice) and the downstream behavior ('pass it as the sessionKey argument on every subsequent authenticated tool call'), making the call sequence unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkDomainAvailabilityA
Read-onlyIdempotent
Inspect

checkDomainAvailability: Check if a domain name is available for registration, with price. No authentication required; anonymous callers get list pricing, authenticated callers get their account pricing. Required: domain (e.g., 'example.com')

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to check, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
priceNo
domainNo
messageNo
currencyNo
availableNo
isPremiumNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds meaningful behavior beyond that: anonymous callers receive list pricing, authenticated callers receive account pricing, and no authentication is required to use the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences convey purpose, authentication behavior, pricing, and required input with no filler. The leading 'checkDomainAvailability:' label duplicates the tool name but does not seriously hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only lookup with an output schema and rich annotations, the description covers purpose, authentication model, pricing difference, and required parameter. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the domain example in the description mirrors the schema's own description. The description does not add meaningful detail about the sessionKey parameter or any behavior beyond what the input schema already documents, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Check if a domain name is available for registration, with price.' Naming domain rather than host or keyword separates it from sibling tools, and the price mention distinguishes it from a pure availability-only check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear operational context: no authentication is required, anonymous callers get list pricing while authenticated callers get account pricing, and domain is the required input. It does not explicitly name alternatives like checkHostAvailability or getDomainPricing, but the domain-specific wording makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkHostAvailabilityA
Read-onlyIdempotent
Inspect

checkHostAvailability: Check if a host/glue record name is available for creation. Requires authentication. Returns whether the hostname is free; call before createHost.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesFully qualified host name to check, e.g. 'ns1.example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds valuable behavior beyond those: it requires authentication and 'returns whether the hostname is free', explaining the return semantics. It also clarifies the scope to host/glue records. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences cover purpose, auth, return value, and workflow position. Every clause earns its place, and the main action is front-loaded. No fluff or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only availability check with one required parameter, the description provides everything an agent needs to invoke it correctly: what it does, that auth is required, what the return represents, and when to call it relative to createHost. With no output schema, the return semantics note is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The tool description adds no new parameter meaning; it only repeats that the hostname is a host/glue record, which the schema already conveys with 'Fully qualified host name'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Check if a host/glue record name is available for creation.' It clearly distinguishes itself from sibling tools like checkDomainAvailability and checkKeywordAvailability by specifying 'host/glue record', and it ties to createHost. This is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: 'call before createHost' explicitly tells the agent when to invoke this tool. It also notes the authentication prerequisite. However, it doesn't explicitly say when not to use it or name alternatives (e.g., checkDomainAvailability), so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkKeywordAvailabilityA
Read-onlyIdempotent
Inspect

checkKeywordAvailability: Check keyword availability across all supported TLDs and registries with detailed per-domain results. Use checkKeywordAvailabilitySummary instead when you only need counts; it is faster.

ParametersJSON Schema
NameRequiredDescriptionDefault
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
keywordYesKeyword to check, without a TLD, e.g. "example".
registriesNoComma-separated registry filter, e.g. "verisign,pir,id,centralnic".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond that: the operation spans all supported TLDs and registries and returns detailed per-domain results. It doesn't mention rate limits or result structure, but the additive scope and detail-level information earn it slightly above baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the core purpose in the first sentence and a useful alternative in the second. It loses one point for the redundant 'checkKeywordAvailability:' prefix that merely repeats the tool name already known from the context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for basic selection and invocation: it states scope, result granularity, and when to use the faster alternative. However, since there is no output schema, the phrase 'detailed per-domain results' is vague about what fields the agent should expect, and it doesn't clarify default behavior when tlds or registries are omitted beyond the implicit 'all supported.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents keyword, tlds, and registries. The description adds no parameter-specific syntax or semantics beyond what the schema already provides, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: 'Check keyword availability across all supported TLDs and registries with detailed per-domain results.' It also distinguishes this tool from the summary variant by emphasizing detailed per-domain results, so an agent can identify its unique purpose without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names the alternative tool, checkKeywordAvailabilitySummary, and gives the condition for choosing it: 'when you only need counts; it is faster.' This is clear, actionable routing guidance that leaves little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkKeywordAvailabilitySummaryA
Read-onlyIdempotent
Inspect

checkKeywordAvailabilitySummary: Check keyword availability across TLDs and registries. Summary statistics only (no per-domain results), faster than checkKeywordAvailability.

ParametersJSON Schema
NameRequiredDescriptionDefault
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
keywordYesKeyword to check, without a TLD, e.g. "example".
registriesNoComma-separated registry filter, e.g. "verisign,pir".

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context beyond annotations: it returns only summary statistics, never per-domain results, and is faster than the full checkKeywordAvailability tool. This is valuable but does not detail what the summary statistics contain or any response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence that front-loads the core purpose and immediately states key behavioral distinctions. The repeated tool name prefix is slightly redundant, but the rest is compact and every clause adds meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters are fully documented in the schema and safety behavior is covered by annotations, so the description does not need to repeat those. However, there is no output schema, and the description only vaguely says 'summary statistics' without explaining what statistics are returned. An agent might still be uncertain whether the output satisfies a user's request.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear explanations for tlds, keyword, and registries. The description does not add any parameter-level guidance, which is acceptable since the schema already documents each parameter fully. No extra semantic value is needed beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool as checking keyword availability across TLDs and registries, and explicitly distinguishes it from the sibling checkKeywordAvailability by emphasizing summary-only results and faster execution. This gives an agent a precise idea of what the tool does and how it differs from similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear selection context: use this tool when only summary statistics are needed and when faster results matter, while explicitly noting that per-domain results are not included. It names the alternative tool but does not fully state 'use checkKeywordAvailability when per-domain results are required,' leaving a small gap in explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

countMyVpsInstancesA
Read-onlyIdempotent
Inspect

countMyVpsInstances: Get the total count of VPS instances owned by the authenticated user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds the authentication requirement and clarifies that the count is scoped to the authenticated user's own instances, which is useful operational context beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, followed by the key authentication requirement. No wasted words or redundant restatements of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple count operation with an optional parameter and strong annotation coverage, the description is largely complete. It states the essential authentication requirement and ownership scope; the return value is self-explanatory as a count, so no output schema is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional sessionKey parameter is fully documented in the schema (100% coverage), so the baseline of 3 applies. The description does not add any parameter-specific semantics, but it does hint that authentication is required, which is indirectly related to the sessionKey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb 'Get' and the resource 'total count of VPS instances', scoped to the authenticated user. This clearly distinguishes it from sibling tools like listMyVpsInstances, which returns a list, and getVpsInstanceDetails, which returns details for one instance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for counting instances rather than listing them, but it never explicitly names alternatives or says when to choose this tool over listMyVpsInstances. The authentication requirement is stated, but no when-to-use or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createAccountA
Idempotent
Inspect

createAccount: Create a new OSIR customer account; step 1 of onboarding, no authentication required. The contact must be the PRINCIPAL's real ICANN registrant contact (the human or business the account is for), never the AI agent itself. Sends a verification email; complete via verifyAccount with the emailed code. While PENDING_VERIFICATION the account can search, quote and fund; billable actions need ACTIVE. Calling again for a PENDING account re-sends the verification email.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesAccount login email; valid mailbox that receives the verification code.
contactYesThe principal's real ICANN registrant contact (firstName, lastName, email, phone, street1, city, country), never the AI agent itself.
passwordNoOptional account password; if omitted the account is agent-managed until a password is set.
agentNameNoName of the AI agent acting for the principal, recorded for the audit trail.
accountTypeYesAccount type: INDIVIDUAL or ORGANIZATION.
agentVendorNoVendor of the AI agent acting for the principal, recorded for the audit trail.
termsVersionYesVersion of the OSIR terms the principal accepted, e.g. '2026-09'.
acceptedTermsYesMust be true; requires the principal's actual consent to the OSIR terms of service.
principalReferenceNoPrincipal's own reference identifying who the agent acted for, recorded for the audit trail.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
accountIdNo
contactIdNo
nextStepsNo
verificationNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (mutation, idempotent, non-destructive), the description discloses that the call requires no auth, sends a verification email, leaves the account in PENDING_VERIFICATION with specific permitted actions, and re-sends the email if called again. These are behavioral traits not present in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is front-loaded with the core action, then gives the identity constraint, verification step, state implications, and repeat-call behavior in compact clauses. No filler sentences; each clause earns its place even though the description runs longer than the minimal example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation with a nested object and output schema, the description is sufficient: it covers auth requirements, step sequencing, state restrictions, and repeated call behavior. Output details are delegated to the output schema, which is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All nine inputs are documented in the schema (100% coverage), so the baseline is met. The description reinforces the contact-principal rule, but that rule largely repeats the schema's contact description and does not add new parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb and resource—'Create a new OSIR customer account'—and adds workflow context ('step 1 of onboarding, no authentication required'). It is distinguishable from siblings like createContact and verifyAccount because it defines the account-level creation step and even names verifyAccount as the follow-up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Step 1 of onboarding' plus 'complete via verifyAccount' gives a clear invocation context, and the PENDING_VERIFICATION vs ACTIVE states explain when the account is usable. It does not list exclusions or alternative tools for non-account cases, but the workflow context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createContactAInspect

createContact: Create a new contact for use with domain registrations. Requires authentication. Returns the created contact including its id for assignment to domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name.
emailYesContact's email address.
phoneYesPhone number in '+CC.number' format, e.g. '+1.5551234567'.
stateNoState, province, or region, if applicable.
countryYesCountry as a 2-letter ISO 3166-1 alpha-2 code, e.g. 'US'.
street1YesFirst street address line.
street2NoSecond street address line, if needed.
lastNameYesContact's last name.
firstNameYesContact's first name.
postalCodeYesPostal or ZIP code.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
organizationNoOrganization or company name, if any.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, etc.), the description adds that authentication is required and that the created contact is returned including its id for assignment to domains. This is useful behavioral information not otherwise conveyed by annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no fluff. The primary purpose is front-loaded, followed by auth requirement and return value. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, auth, and the key return value (the id). With no output schema, mentioning the id is valuable. Minor gap: it doesn't describe the full return structure or any side effects, but the schema handles parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add any parameter-level detail beyond what the schema already provides, and that is acceptable given the thorough schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (create), resource (contact), and purpose ('for use with domain registrations'). This clearly distinguishes it from contact-related siblings like updateContact, deleteContact, getContact, and listContacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: creating a contact for domain registrations, and it explicitly notes that authentication is required. It doesn't explicitly name alternatives or exclusions, but the create-vs-update/delete role is obvious from the verb and resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createDnsRecordAInspect

createDnsRecord: Create a new DNS record for a domain. Requires authentication. For newly registered domains the zone is initialized automatically if missing. Returns the created record including its id for later updates or deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoTime to live in seconds; defaults to 3600 when omitted.
nameYesRecord name relative to the zone, e.g. 'www', 'mail', or '@' for the apex.
typeYesRecord type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA.
domainYesFully qualified domain name the record belongs to, e.g. 'example.com'.
contentYesRecord value, e.g. an IPv4 dotted-quad or IPv6 address for A/AAAA, a hostname for CNAME/MX/NS, or text for TXT.
priorityNoPriority for MX/SRV records only; defaults to 0 when omitted.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint false, destructiveHint false), the description discloses that authentication is required, that missing zones for newly registered domains are automatically initialized, and that the created record (with id) is returned. It does not cover duplicate-name behavior or propagation timing, but the key side effects of creation and return value are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. The only redundancy is the leading 'createDnsRecord:' prefix that repeats the tool name; otherwise every sentence conveys useful information (auth, auto-initialization, return value).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with no output schema, the description covers the essential prerequisites, a notable automatic behavior, and the shape of the return value. It does not describe possible error conditions or edge cases, but the schema and sibling context fill most of what an agent needs to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all seven parameters at 100% coverage, so the baseline is 3. The description adds no additional parameter-level detail, only mentioning that the returned record contains an id. No compensation is needed, but none is provided beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create a new DNS record for a domain.' This clearly differentiates from sibling tools like updateDnsRecord, deleteDnsRecord, getDnsRecord, and listDnsRecords. The mention of 'new' and 'for a domain' leaves no ambiguity about the operation's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context by stating authentication is required and explaining that zones are auto-initialized for newly registered domains, which signals when initializeDnsZone is unnecessary. It also mentions returning the id for later updates or deletion, pointing users to the appropriate sibling tools. However, it does not explicitly state when not to use this tool versus those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createHostAInspect

createHost: Create a new host/glue record, e.g. for custom nameservers like 'ns1.example.com'. Requires authentication. Check the name first with checkHostAvailability. Returns the created host record.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesFully qualified host name to create, e.g. 'ns1.example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
ipAddressesYesIP addresses for the host, IPv4 dotted-quad or IPv6, e.g. ['192.0.2.1', '198.51.100.1'].

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as a non-read-only, non-idempotent operation, but the description adds value by explicitly requiring authentication, advising an availability pre-check, and disclosing that the created host record is returned. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences front-load the core purpose, then add the prerequisite and return behavior. Every sentence contributes useful information without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create operation with no output schema and partial annotation coverage, the description covers what the tool does, its authentication requirement, the suggested pre-check, and its return value. It could mention failure behavior, but the essentials for correct invocation are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already fully documented. The description reinforces the hostname example but does not add substantial new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a new host/glue record') with a concrete example ('ns1.example.com'). It clearly distinguishes from related siblings like createDnsRecord and deleteHost by naming the host-record concept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context and an explicit prerequisite: check the name first with checkHostAvailability. It does not enumerate alternative tools or when not to use it, but the purpose is specific enough that the guidance is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createMailboxAInspect

createMailbox: Stage creation of a paid mailbox on a mail-enabled domain. BILLABLE: deducts from account balance; get a quote with getMailboxQuote and confirm the price with the user first. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve. The result of the confirmed action contains the generated password EXACTLY ONCE; it can never be retrieved again, so show it to the user immediately (they can change it later with setMailboxPassword). Also share the client settings from the result (IMAP/SMTP/webmail).

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoPayment term: 'MONTHLY' or 'ANNUAL' (default ANNUAL).
domainYesAn ACTIVE mail-enabled domain from listMailDomains.
localPartYesThe part of the address before the @; the full mailbox address becomes 'localPart@domain', e.g. 'user@example.com'.
packageIdYesMailbox plan id from listMailPlans; there is no default.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behaviors beyond the annotations: it is BILLABLE and deducts from account balance, requires authentication, returns an actionId for confirmation, and reveals that the generated password appears exactly once and can never be retrieved again. None of this is present in the annotations, so the description carries and fulfills the full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: staging, billing, quote prerequisite, actionId handoff, one-time password disclosure, and client settings. Pricing/billing warnings are front-loaded ahead of implementation details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paid two-step action with no output schema, the description is complete: it explains the quote step, the actionId confirmation step, the one-time password behavior, the ability to reset later, and what client settings to share. An agent has the information needed to execute the flow responsibly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the overall flow but adds little parameter-specific detail beyond what the schema already provides; it does not explain term formats, sessionKey mechanics, or localPart constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Stage creation of a paid mailbox on a mail-enabled domain.' It also clarifies that this tool does not immediately create the mailbox, which distinguishes it from namesake expectations and from executeConfirmedAction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit workflow: get a quote with getMailboxQuote, confirm the price with the user, call createMailbox, then call executeConfirmedAction with the returned actionId if approved. It also references setMailboxPassword for later changes, giving clear when-to-use and next-step guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createPaymentSessionAInspect

createPaymentSession: Stage a Stripe checkout session to add funds to the account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve. The executed result includes checkoutUrl (hand it to the human to pay) and expiresAt; then poll getPaymentTransactions until the balance credit appears.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to add to the balance, in the account currency as a decimal (e.g. 25.00).
currencyNo3-letter ISO 4217 currency code, default USD.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only weak annotations (readOnlyHint=false, idempotentHint=false), the description carries the burden and excels. It discloses the two-phase confirmation model, that execution returns checkoutUrl and expiresAt, and that the balance credit is not immediate and must be polled for. This goes well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient, front-loading the purpose and then walking through the required follow-up actions in a logical order. Every clause adds necessary behavioral or workflow information, with no filler or repeated schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-phase mutation tool with no output schema, the description covers the essential flow well: actionId, confirmation, checkoutUrl, expiresAt, and polling. The only minor gap is a slight ambiguity around 'present the summary to the user'—it does not specify where that summary content comes from, but the overall workflow is still actionable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents amount, currency, and sessionKey thoroughly. The description does not add parameter-level details beyond what the schema states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Stage a Stripe checkout session to add funds to the account balance.' This clearly differentiates it from payment-related siblings like payInvoice (paying an existing invoice) and getPaymentTransactions (reading transactions). An agent can immediately tell what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear process guidance: requires authentication, returns an actionId, must be confirmed via executeConfirmedAction, and should be followed by polling getPaymentTransactions. It does not explicitly contrast with alternatives like payInvoice or previewPaymentFees, but the flow and purpose are clear enough that an agent can decide when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteContactA
DestructiveIdempotent
Inspect

deleteContact: Stage deletion of a contact. DESTRUCTIVE; fails if the contact is assigned to active domains. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesIdentifier of the contact to delete, as returned by listContacts.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already flag destructiveHint=true, the description adds meaningful behavioral context: 'Stage deletion' reveals the two-phase nature, 'fails if the contact is assigned to active domains' discloses a key failure mode, and 'Requires authentication' and 'Returns an actionId; present the summary to the user, then call executeConfirmedAction' explain the necessary follow-up behavior. This goes well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core purpose appears first, followed by a DESTRUCTIVE warning, a failure condition, and the mandatory confirmation workflow. Every sentence contributes necessary information without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-phase destructive tool with no output schema, the description covers everything an agent needs: the staging behavior, failure condition, authentication requirement, the actionId return value, and the exact next tool to call. The required next step, executeConfirmedAction, is explicitly named, making the workflow complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are individually documented in the input schema, including that contactId comes from listContacts and sessionKey is only needed for device login. The tool description does not add additional parameter-level detail, which aligns with the baseline 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Stage deletion of a contact.' It clearly distinguishes this from createContact, updateContact, and executeConfirmedAction by explaining it is the staging step, not the final deletion. The additional constraint about active domains adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool: when a contact deletion needs to be staged, and then when to proceed with executeConfirmedAction. It also gives an exclusion condition: fails if the contact is assigned to active domains. It does not explicitly contrast with sibling tools like updateContact, but the workflow guidance is strong enough to route an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteDnsRecordA
DestructiveIdempotent
Inspect

deleteDnsRecord: Stage deletion of a DNS record. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name the record belongs to, e.g. 'example.com'.
recordIdYesIdentifier of the record to delete, as returned by listDnsRecords.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses that the tool only stages deletion, is irreversible once executed, returns an actionId, and requires a follow-up confirmation call. This significantly enriches the agent's understanding of the tool's non-immediate and gated destructive behavior. No contradiction with annotations; idempotentHint is consistent with staging.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the purpose, includes critical warnings, and provides the action flow. Every clause adds value without redundancy. It is concise and well-structured for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential flow: staging, confirmation, and execution. It states the return value (actionId) and the next step. It doesn't elaborate on what the summary should contain or what happens if the user declines, but these are minor gaps given the tool's simplicity and the presence of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific meaning, but the input schema provides complete descriptions for all three parameters, including examples and context (e.g., recordId references listDnsRecords, sessionKey explains when to include). Since schema coverage is 100% and descriptions are thorough, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool stages the deletion of a DNS record, distinguishing it from create/update operations. It specifies the resource and action precisely, and the warning 'DESTRUCTIVE and irreversible once executed' adds critical purpose context. The sibling list includes createDnsRecord and updateDnsRecord, so this purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs the agent to present the summary and call executeConfirmedAction if approved, providing a clear two-step usage flow. It does not explicitly contrast with alternatives like updateDnsRecord, but the deletion intent is obvious. The 'Requires authentication' note is generic but not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteHostA
DestructiveIdempotent
Inspect

deleteHost: Stage deletion of a host/glue record. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesFully qualified host name to delete, e.g. 'ns1.example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds crucial context: 'DESTRUCTIVE and irreversible once executed', 'Requires authentication', and the two-phase flow via actionId. This is high-value behavioral disclosure beyond the structured annotations and explains the staged-deletion contract.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the destructive warning before the workflow steps. Each sentence adds a distinct, necessary fact: what is staged, the danger, the auth requirement, and the exact follow-up action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with complete schema coverage and relevant annotations, the description fully covers what an agent needs: the action is staged, destructive, requires auth, and the returned actionId feeds into executeConfirmedAction. No output schema is present, but the return value is described in prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both hostname and sessionKey already explained in the input schema. The tool description does not add parameter-specific detail, but none is needed because the schema fully covers semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Stage deletion') and resource ('host/glue record'), immediately clarifying what the tool does. It also distinguishes this from the actual execution step by naming executeConfirmedAction as the follow-up, making its role in the deletion flow explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear procedural guidance: returns an actionId, present the summary to the user, then call executeConfirmedAction with the actionId if approved. It does not explicitly contrast this with sibling deletion tools like deleteDnsRecord or deleteMailbox, but the resource scope is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteMailboxA
DestructiveIdempotent
Inspect

deleteMailbox: Stage deletion of a mailbox. The mailbox stops working immediately and its data is destroyed after a 14-day grace period. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxIdYesMailbox id from listMailboxes.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses critical behaviors: the mailbox stops working immediately, data is destroyed only after a 14-day grace period, and the operation is staged rather than executed directly. It also names the exact response payload (actionId) and the required confirmation handoff. This is exactly the kind of behavioral context an agent needs for a destructive operation, and it is not available anywhere else.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler. The core action is front-loaded ('Stage deletion of a mailbox'), followed by consequences, then the actionable workflow. Every sentence carries essential information: effect timeline, auth requirement, and the follow-up protocol. This is appropriately sized for a destructive tool with a confirmation flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description correctly takes on the burden of explaining the return value and names it precisely (actionId), along with the exact next step (call executeConfirmedAction). It also covers the operational impact (immediate disablement, 14-day grace) and auth requirement. For a two-phase destructive operation, nothing an agent needs to invoke it safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — both mailboxId and sessionKey are already fully documented in the input schema, including the osk_ prefix convention and the OAuth/device-flow distinction. The description adds no parameter-specific detail beyond what the schema provides, so the baseline of 3 applies. The mention of 'requires authentication' loosely reinforces the sessionKey role but adds no new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Stage deletion of a mailbox' — a specific verb (stage deletion) paired with a clear resource. The 'stage' framing distinguishes it from an immediate-delete tool and from sibling mailbox tools like createMailbox, setMailboxPassword, and listMailboxes. The two-phase nature is explicit and leaves no ambiguity about what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear workflow context: it explains that deletion is staged, requires authentication, and mandates a follow-up call to executeConfirmedAction with the returned actionId. This tells the agent exactly what to do after invocation — present the summary and get confirmation. It doesn't explicitly contrast with alternatives or state when not to use it, but the workflow guidance is concrete enough that no usage confusion remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteSshKeyA
DestructiveIdempotent
Inspect

deleteSshKey: Remove an SSH key from your account. This does not affect servers already built with it, and the key can simply be added again. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyIdYesInteger key id from listMySshKeys.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint and idempotentHint, and the description adds useful beyond-schema context: deletion does not affect existing servers and is reversible by adding the key again. It also notes the authentication requirement. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the operation, the critical consequence, and the authentication requirement. It is front-loaded and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter delete operation, the description plus annotations cover scope, reversibility, and prerequisite. It does not describe the response format, but no output schema exists and the behavior for success/error is fairly predictable for a delete call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and parameter descriptions are explicit, including where to obtain keyId and how to handle sessionKey. The tool description itself adds little parameter-level meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Remove an SSH key from your account.' This clearly distinguishes it from sibling operations like addSshKey and listMySshKeys, and the account-level scope prevents confusion with server-specific key management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a prerequisite ('Requires authentication') and a consequence that informs when it is appropriate to delete (servers are unaffected, key can be re-added), but it does not explicitly name alternatives or specify when not to use it. The intended use is implied rather than directly contrasted with addSshKey.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deleteVpsInstanceA
DestructiveIdempotent
Inspect

deleteVpsInstance: Stage deletion/cancellation of a VPS instance. DESTRUCTIVE and irreversible. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesVPS instance id from listMyVpsInstances.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool destructive and readOnlyHint=false, and the description reinforces this with 'DESTRUCTIVE and irreversible.' It adds valuable behavioral context beyond annotations: authentication is required, the tool returns an actionId, and the deletion is not final until executeConfirmedAction is called. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences carry all essential information: the operation, its severity, auth requirement, return value, and the follow-up action. The most critical warning is front-loaded, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a destructive two-phase operation. It covers safety, auth, the actionId return contract, and the handoff to executeConfirmedAction, which is essential because no output schema exists. Nothing critical is missing for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: instanceId and sessionKey both have clear descriptions already. The tool description does not add parameter-level detail, so it meets the baseline for relying on the schema without adding new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource—'stage deletion/cancellation of a VPS instance'—and explains that the action is destructive and irreversible. This clearly distinguishes it from the sibling executeConfirmedAction by framing deletion as a staged, two-step process.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains the required workflow: call this tool to stage deletion, present the returned summary to the user, and then invoke executeConfirmedAction for approval. It does not list exhaustive exclusions or alternatives, but the condition-based next step is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enableMailDomainA
Idempotent
Inspect

enableMailDomain: Enable email hosting on a domain you own. Free; mailboxes are what cost money. If the call fails with a DNS conflict (an existing SPF or MX record), ask the user for explicit consent, then re-call with spfMergeConfirmed=true and/or takeoverConfirmed=true. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to enable email hosting on, e.g. 'example.com'.
dnsModeNo'PDNS_AUTO' (default) publishes all mail DNS records automatically; the domain must use our nameservers. 'EXTERNAL_MANUAL' returns the DNS records for you to publish at your DNS provider, and the domain stays PENDING_DNS until verifyMailDns succeeds.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
spfMergeConfirmedNoSet true, only with the user's explicit consent, to replace a foreign SPF record.
takeoverConfirmedNoSet true, only with the user's explicit consent, to repoint a foreign MX record; this moves their live email.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already marking this as non-read-only, idempotent, and non-destructive, the description adds meaningful behavioral context: it can hit a DNS conflict, may require user consent before overwriting SPF/MX records, and requires authentication. It explains the failure path and the consent flow better than the annotations alone, though it does not describe what the successful response 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. Every sentence earns its place: purpose, cost context, failure handling with consent, and authentication requirement. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, one required, and no output schema, the description covers the key operational concerns: what it does, when it fails, how to recover, and authentication. Minor gaps are the absence of any mention of the success return value and the lack of an explicit pointer to a related verification step for external DNS mode, though the schema partially covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds value by connecting the failure scenario to spfMergeConfirmed and takeoverConfirmed, explaining when to use these flags. It also clarifies the ownership prerequisite for the 'domain' parameter. This is genuine semantic enrichment beyond the rich schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb and resource: 'Enable email hosting on a domain you own.' This clearly distinguishes the tool from siblings like createMailbox, listMailDomains, and verifyMailDns, whose roles are different enough that an agent can select this one correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: use it on a domain you own, it is free, mailboxes cost extra, and authentication is required. It also provides conditional guidance for DNS conflicts, including when to set confirmation flags. It does not explicitly name alternative tools or state when not to use this tool, so it stays just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

executeConfirmedActionA
DestructiveIdempotent
Inspect

executeConfirmedAction: Execute a previously staged destructive or financial action after user approval. The action expires after 5 minutes and can only be executed once.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionIdYesThe action UUID from the staging tool's response.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and non-read-only behavior. The description adds valuable constraints beyond annotations: the action expires after 5 minutes and can only be executed once. It doesn't mention failure modes after expiry, but with the annotation coverage this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words: the first states the purpose, the second packs two essential constraints. The repeated tool name at the start is trivial, but every sentence carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with rich schema descriptions and clear constraints, the description covers the core prerequisites: what the action is, when it can be executed, and its limits. It omits return-value or error behavior, but no output schema exists and the staging flow largely implies the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with thorough parameter explanations: actionId is the UUID from the staging tool's response, and sessionKey has clear usage rules with OAuth vs device flow. The description adds no parameter-specific detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: execute a previously staged destructive or financial action after user approval. This distinguishes it from siblings like payInvoice or deleteHost by emphasizing the staged-and-approved gating, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: only for previously staged actions, only after user approval, and subject to a 5-minute expiry and single-use rule. It doesn't name alternatives, but the staging-to-execution flow is implicitly defined, and this is clearly the confirmation step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generateDomainSuggestionsA
Read-onlyIdempotent
Inspect

generateDomainSuggestions: Generate domain name suggestions based on keywords. This is the preferred suggestion tool for a single keyword; use it over suggestAlternatives. Returns suggested names with availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code; default "eng".
nameYesKeyword or base name to build suggestions from, e.g. "mycompany".
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
maxResultsNoMaximum suggestions to return; default 20.
useNumbersNoAllow digits in generated suggestions (true/false).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, and non-destructive profile. The description adds value by stating that results include availability, which is useful since there is no output schema. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler: action, routing guidance, and return-value note are each meaningful. The most important scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only suggestion tool with five schema-documented parameters, the description plus annotations are sufficient for an agent to select and invoke it. Without an output schema, the availability note is brief but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the schema already documents each parameter. The description reinforces 'single keyword' usage but adds no parameter-specific detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Generate') and resource ('domain name suggestions') and scopes the behavior to keywords. It also explicitly distinguishes this tool from suggestAlternatives, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear selection rule: 'preferred suggestion tool for a single keyword; use it over suggestAlternatives.' This gives an explicit when-to-use condition and names the direct alternative, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getAccountBalanceB
Read-onlyIdempotent
Inspect

getAccountBalance: Get the current account balance for the authenticated user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
balanceNo
messageNo
successNo
currencyNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description only adds the authentication requirement. That is useful but does not provide deeper behavioral context such as staleness, caching, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very brief and front-loaded with the core purpose. The redundant 'getAccountBalance:' prefix mildly repeats the tool name, but the content is otherwise efficient and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and an output schema, the description is mostly sufficient. The authentication requirement is stated, and annotations cover safety, though it could note when to prefer this over similar account-related getters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the sessionKey parameter already well-documented. The description adds no extra meaning about parameters, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'current account balance,' and adds scope with 'for the authenticated user.' It does not explicitly distinguish itself from sibling tools like getAccountSummary, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is that authentication is required, which is a prerequisite rather than guidance on when to use this tool versus alternatives. No sibling tools or conditional selection criteria are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getAccountSummaryA
Read-onlyIdempotent
Inspect

getAccountSummary: Get a comprehensive summary of the user's account: profile, balance, domain count, VPS count, and pending transfers. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate read-only, idempotent, and non-destructive behavior. The description adds the authentication requirement, which is a meaningful behavioral constraint beyond the annotations. It does not elaborate on edge cases or response shape, but the added auth context is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the purpose, lists the main contents, and notes the auth requirement. Every part earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional parameter, no output schema), and the description sufficiently explains what the summary contains and that authentication is required. It stops short of describing the exact structure of the returned summary, but that is not essential for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter, sessionKey, is fully documented in the schema. The tool description does not add parameter-level detail, but with the schema already handling this, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource ('Get a comprehensive summary of the user's account') and enumerates the included areas (profile, balance, domain count, VPS count, pending transfers). This distinguishes it from overlapping sibling tools like getAccountBalance or getMyProfile by framing it as a single aggregated overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: any time a broad account overview is needed rather than a single detail. It does not explicitly name alternatives or exclusion conditions, but the enumerated summary contents make the intended use reasonably obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getAuthStatusA
Read-onlyIdempotent
Inspect

getAuthStatus: Check whether the current session is authenticated. Returns authenticated status and token expiry. Optional: sessionKey (from checkDeviceLoginStatus).

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
usernameNo
authenticatedNo
tokenExpiresInNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool returns authenticated status and token expiry, but does not disclose error behavior or authentication requirements beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. The redundant 'getAuthStatus:' prefix and the repeated sessionKey note are minor wastes, but overall it is compact and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status check with one optional parameter, full schema coverage, and an output schema, the description covers the essential purpose and return info. It does not mention the nuanced 'omit sessionKey for OAuth' rule, but that is already in the parameter schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the sessionKey parameter. The description's mention of 'sessionKey (from checkDeviceLoginStatus)' adds minimal value beyond the schema's own detailed explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('check'), a clear resource ('current session authentication'), and the return value ('authenticated status and token expiry'). It clearly distinguishes itself from sibling checkDeviceLoginStatus by referring to the current session and the session key source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: check whether the current session is authenticated, and pass an optional sessionKey from the device flow. It does not explicitly state when not to use the tool or name alternatives, but the purpose is distinct enough for an agent to infer correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getContactA
Read-onlyIdempotent
Inspect

getContact: Get detailed information about a specific contact. Requires authentication. Get the contactId from listContacts. Returns name, email, phone, organization, and address.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesIdentifier of the contact to fetch, as returned by listContacts.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations by stating that authentication is required and by disclosing the specific fields returned, which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler: purpose, auth requirement, parameter source, and return fields. The repeated tool name 'getContact:' is a minor redundancy, but each sentence earns its place and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read operation with one required parameter and a well-documented optional sessionKey, the description covers what an agent needs: what the tool does, where the identifier comes from, authentication expectations, and return contents. No output schema exists, so the explicit return-field list is especially valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both contactId and sessionKey. The description's mention of sourcing contactId from listContacts adds workflow context but does not materially extend the semantic detail already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get detailed information about a specific contact.' It also distinguishes itself from listContacts by targeting a single contact, and the included return fields (name, email, phone, organization, address) make 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives practical usage guidance by telling the agent to obtain contactId from listContacts, which establishes the correct upstream workflow. It does not explicitly exclude alternatives such as getContactsForDomain, but the single-contact framing makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getContactsForDomainA
Read-onlyIdempotent
Inspect

getContactsForDomain: Get all contacts (registrant, admin, tech, billing) assigned to a domain. Requires authentication. Returns the contact assigned to each role.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name whose contacts to fetch, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. On top of that, the description adds the authentication requirement and clarifies that the result is organized by contact role, which is useful behavioral context beyond the schema and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence with no filler. It front-loads the core purpose, names the roles, and adds the two most important operational facts: authentication is required and the result is role-based.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one required parameter and full schema coverage, the description covers the essential operational and return information. There is no output schema, so it could be more specific about the exact shape of each contact object, but the current level is adequate for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description does not add parameter-level detail, but it also does not need to; it reinforces that the domain parameter determines which contacts are returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it gets all contacts assigned to a domain and explicitly names the four roles (registrant, admin, tech, billing). This clearly distinguishes it from related tools like getContact and listContacts, which operate at a different level of granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is the tool to use when you need the set of role-based contacts for a specific domain, and it notes the authentication requirement. It does not explicitly name alternatives or exclusions, but the domain-scoped purpose is strong enough for an agent to infer when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDedicatedServerCatalogA
Read-onlyIdempotent
Inspect

getDedicatedServerCatalog: Get all available dedicated server configurations with pricing and specifications. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful context beyond annotations by stating that no authentication is required and that the tool returns all configurations with pricing and specifications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core purpose stated first and the authentication requirement as a separate brief sentence. The only minor redundancy is repeating the tool name before the verb phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only catalog retrieval tool, the description gives enough context: it names the resource, the content scope, and the authentication requirement. There is no output schema, but the expected return shape is reasonably inferable from 'configurations with pricing and specifications.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so parameter-level documentation is unnecessary. The baseline for zero-parameter tools is 4, and the description doesn't need to compensate for any undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and object: 'Get all available dedicated server configurations with pricing and specifications.' It clearly identifies the resource and scope, and the phrase 'dedicated server' distinguishes it from sibling catalog tools like getProductCatalog and listVpsPackages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 choose this tool over siblings such as getProductCatalog or listVpsPackages. 'No authentication required' is a useful prerequisite, but it does not help an agent decide between related catalog/list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDnsRecordA
Read-onlyIdempotent
Inspect

getDnsRecord: Get details of a specific DNS record by id. Requires authentication. Get the recordId from listDnsRecords. Returns the record's name, type, content, TTL, and priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name the record belongs to, e.g. 'example.com'.
recordIdYesIdentifier of the record to fetch, as returned by listDnsRecords.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the read-only/idempotent/safe profile, and the description adds beyond that by disclosing the authentication requirement and the exact return fields (name, type, content, TTL, priority). For a simple read operation with no output schema, this is solid, though it does not cover error/not-found behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

All content is front-loaded: purpose in the first clause, then prerequisite, auth, and output. Each sentence carries distinct information, and no filler words are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only getter with a complete input schema and no output schema, the description supplies the missing output fields, auth context, and ID sourcing. Nothing required to call the tool successfully is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the structured descriptions already fully explain domain, recordId, and sessionKey. The description reinforces that recordId comes from listDnsRecords, but that fact is already in the schema, so no additional parameter meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('details of a specific DNS record') scoped by 'id', which clearly separates it from list and mutation DNS tools among siblings. It also names where the ID comes from (listDnsRecords), reinforcing its role as the single-record read companion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context by instructing the agent to obtain recordId from listDnsRecords and noting that authentication is required. It does not explicitly enumerate when-not-to-use alternatives, so it misses the top-tier 'exclusions vs alternatives' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDomainAuditTrailA
Read-onlyIdempotent
Inspect

getDomainAuditTrail: Get the audit trail (history of all changes) for a specific domain. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to fetch the audit trail for (e.g. 'example.com').
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the key safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=true), and the description adds the authentication requirement and clarifies the response covers 'history of all changes.' This is useful but does not disclose details like authorization scope, pagination, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the core action and resource, then adds the authentication prerequisite. Every word contributes to understanding the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only parameterized tool with full schema coverage and robust annotations, the description is sufficient. It identifies the resource, the object returned, and the auth requirement. It does not describe output format, but no output schema exists and the return concept is clearly stated as 'audit trail (history of all changes).'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains both parameters. The description does not add semantics beyond identifying the target as 'a specific domain,' which is already captured in the domain parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the audit trail ... for a specific domain.' This clearly identifies the tool's function and implicitly differentiates it from broader account-level tools like getMyAuditLogs and getRecentActivity, though it does not explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a specific domain' implies when to use this tool, and 'Requires authentication' is a useful prerequisite. However, it does not explicitly say when to prefer this over related audit/log tools or when not to use it, leaving the usage context mostly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDomainExtensionsB
Read-onlyIdempotent
Inspect

getDomainExtensions: Get all available domain extensions (TLDs) with pricing information. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the operation's safety profile. The description adds useful context by stating that no authentication is required and that the result includes all available TLDs, but it does not describe the return shape, ordering, or pagination behavior. The description 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: the first is front-loaded with the verb, resource, and key content, and the second adds an important access condition. There is no filler or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only, idempotent tool, the description is largely self-contained. However, with no output schema and several overlapping siblings, it would be stronger if it clarified the difference between this tool, getDomainPricing, and listCategorizedTlds, or hinted at the response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter details the description needs to clarify. The description appropriately omits parameter information, and the 'with pricing information' phrase adds return-value context that is independent of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb-resource pair: get all available domain extensions (TLDs) with pricing information. It clearly states what is returned, but does not distinguish itself from closely related siblings such as getDomainPricing and listCategorizedTlds, so it lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to call this tool instead of similar sibling tools like getDomainPricing or listCategorizedTlds. It only states an access requirement ('No authentication required'), which does not help an agent choose between alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDomainInfoA
Read-onlyIdempotent
Inspect

getDomainInfo: Get registry (EPP) state plus account settings for one domain: status, nameservers, lock state, auto-renew, privacy, creation/expiry dates, premium/expired/redemption info. Dates are null while a registration is still pending at the registry; autoRenew is omitted for transferredOut domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/destructive annotations, the description discloses meaningful edge-case behavior: dates are null while registration is pending, and autoRenew is omitted for transferred-out domains. This helps the agent interpret responses correctly without contradicting 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact passage that front-loads the core purpose, enumerates the returned data categories, and adds two valuable edge-case notes. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the description enumerates the main response categories and two important null/omission behaviors. Combined with the fully documented input schema and safety annotations, an agent has enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both domain and sessionKey already clearly documented. The description only reinforces that the tool handles one domain, adding no new parameter-level semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get registry (EPP) state plus account settings for one domain', followed by a concrete list of returned information. This clearly distinguishes it from sibling tools like checkDomainAvailability or listUserDomains by focusing on detailed single-domain registry and account data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case: retrieving detailed EPP state and account settings for one specific domain. It does not explicitly name alternatives or exclusion criteria, but the intended context is evident from the scope and field list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDomainPricingA
Read-onlyIdempotent
Inspect

getDomainPricing: Get pricing for domain extensions from the product catalog. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
extensionNoDomain extension to filter by, without the leading dot (e.g. 'com', 'net', 'org').
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
pricingNo
successNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is covered. The description adds 'Requires authentication,' which is a useful operational precondition not expressed in annotations. No contradiction with 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the purpose and follow with the authentication precondition. There is minor redundancy in repeating the tool name as a prefix, but otherwise every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, fully documented optional parameters, and annotations covering the safety profile, the description is largely complete for a simple catalog lookup. It could additionally note the optional-extension behavior or differentiate from getProductCatalog, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters clearly explained: 'extension' includes the no-leading-dot format and 'sessionKey' clarifies the two auth flows. The description adds no parameter-level detail, but none is needed because the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact resource ('pricing for domain extensions') and source ('product catalog'), making clear this is a catalog lookup rather than an availability check or registration action. It does not explicitly contrast with siblings like getProductCatalog, but the specificity is sufficient to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving domain-extension pricing and states the authentication precondition. However, it gives no explicit guidance about when to prefer this over alternatives such as getProductCatalog or getDomainExtensions, nor any when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getHostingBundleA
Read-onlyIdempotent
Inspect

getHostingBundle: Get the hosting options and exact prices for a specific domain: recommended VPS packages (cheapest first), email plans, web forwarding, and app/site deployment. No authentication required. Call this ONCE after a successful availability check or registration to make a concise hosting offer; do not repeat the offer in the same conversation. Prices are display prices; the authoritative amount is computed at purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to get hosting options for (e.g. 'example.com').

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainNo
optionsNo
nextStepsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds meaningful context beyond annotations: no authentication needed, prices are display-only with the authoritative amount computed at purchase, and results are ordered cheapest first. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler: purpose and contents first, then usage timing, then price caveat. Every sentence contributes necessary operational or qualifying information, and the most important scope is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with a rich output schema and detailed annotations, the description covers auth requirements, when to call, call frequency, result ordering, and pricing semantics. Nothing an agent needs to select or invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single domain parameter, and the schema already explains it as a fully qualified domain name. The description references 'specific domain' but does not add meaningful semantic detail beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the exact resource: hosting options and exact prices for a specific domain, enumerating VPS packages, email plans, web forwarding, and app/site deployment. This scope distinguishes it from siblings like listVpsPackages or listMailPlans without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit invocation timing: call ONCE after availability check or registration, and explicitly says not to repeat the offer in the same conversation. It also clarifies no authentication is required, giving the agent clear when-to-call guidance versus alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getHostsForDomainA
Read-onlyIdempotent
Inspect

getHostsForDomain: List all host/glue records associated with a domain. Requires authentication. Returns each host name and its IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name whose host records to list, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond those annotations: it states that authentication is required and describes what the response contains (host names and IP addresses).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler, and the main action is front-loaded. The redundant 'getHostsForDomain:' prefix is minor and does not meaningfully detract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core call intent, authentication requirement, and return content. Without an output schema, it would benefit from more detail on response shape or empty-result behavior, but for a straightforward list operation it is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both 'domain' and 'sessionKey'. The description adds no parameter-specific meaning, but with complete schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and names the exact resource ('all host/glue records associated with a domain'), which clearly distinguishes this from sibling tools like getContactsForDomain or listDnsRecords. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: call this when you need host/glue records for a domain. It does not explicitly name alternatives or exclusion conditions, but the purpose is distinct enough that usage intent is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getInvoiceDetailsA
Read-onlyIdempotent
Inspect

getInvoiceDetails: Get detailed information about a specific invoice including line items. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceIdYesThe identifier of the invoice to fetch, as returned by listInvoices.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that authentication is required and that the response includes line items, providing useful behavioral context without contradicting 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. The core action and the distinctive detail (line items) come first, followed by the auth requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with rich annotations, the description plus schema covers the essentials: what it returns, the auth prerequisite, and the parameters. The only notable omission is explicit guidance distinguishing it from sibling invoice-related tools, but that is a usage-guideline gap rather than a completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents invoiceId and sessionKey. The description itself adds no parameter-level meaning; it stays at the baseline expected when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get detailed information about a specific invoice') and adds 'including line items,' which clarifies scope. It is clear enough that an agent can tell it returns a single invoice detail rather than a list, though it never explicitly names a sibling tool such as listInvoices for contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to choose this tool over alternatives like listInvoices or getInvoiceStatistics. The only usage hint is 'Requires authentication,' which is a prerequisite, not a selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getInvoiceStatisticsA
Read-onlyIdempotent
Inspect

getInvoiceStatistics: Get summary statistics of invoices: total paid, pending, overdue amounts. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds an explicit authentication requirement and names the output categories, which provides useful context beyond the annotations. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with the core operation and output categories front-loaded. The redundant tool-name prefix is minor but slightly prevents a perfect score for structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and no output schema, the description provides enough invocation context and enumerates the expected output categories. It misses no critical call-time information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself explains the sessionKey parameter and when to pass or omit it. The description only reinforces that authentication is required and does not add new parameter-level meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get summary statistics of invoices') and enumerates the exact aggregates returned: total paid, pending, and overdue amounts. This clearly distinguishes it from listInvoices (raw list) and getInvoiceDetails (single-invoice detail).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied by the phrase 'summary statistics of invoices,' but the description does not explicitly say when to use this tool over listInvoices or getInvoiceDetails, nor does it state exclusions. It is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getMailboxQuoteA
Read-onlyIdempotent
Inspect

getMailboxQuote: Get a display-only price quote for a mailbox plan. The backend re-derives the authoritative price at purchase. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoPayment term: 'MONTHLY' or 'ANNUAL' (default ANNUAL).
packageIdYesMailbox plan id from listMailPlans.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
termNo
messageNo
successNo
currencyNo
packageIdNo
priceCentsNo
quotaBytesNo
packageNameNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful context beyond that: the quote is display-only, not authoritative, and requires authentication. This gives the agent useful behavioral expectations without contradicting 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the key purpose. The additional sentences about authoritative price and authentication are relevant and non-redundant. Minor deduction for repeating the tool name at the start.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations cover safety, the description sufficiently covers purpose, auth requirements, and non-authoritative behavior. It is complete enough for an agent to call the tool correctly, though it could optionally mention that listMailPlans provides valid package IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with each parameter already documented, including term default and packageId source. The description does not add parameter-level meaning, but the schema carries the full burden, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get a display-only price quote for a mailbox plan.' It clearly distinguishes this from other tools like getTransferQuote by scoping it to mailbox plans. The display-only qualifier also clarifies the nature of the result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear context: this tool is for display-only quoting, requires authentication, and the backend re-derives the authoritative price at purchase. It implies the tool is for pre-purchase previews and not for final pricing, though it does not explicitly name alternative tools or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getMailboxUsageA
Read-onlyIdempotent
Inspect

getMailboxUsage: Get disk usage per mailbox in bytes, for quota display alongside the plan's quotaBytes. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds the authentication requirement, which is useful context not present in annotations, but it does not disclose result shape or behavior on unauthenticated calls. This is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence that front-loads the action and scoping. The redundant 'getMailboxUsage:' prefix is minor and does not meaningfully hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only tool with one optional parameter and complete schema coverage, the description provides enough context: what is returned (per-mailbox bytes), why it is used (quota display), and the auth requirement. It could name the alternative quota tool, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional sessionKey parameter, so the schema fully documents the parameter. The description adds no parameter-specific detail, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get disk usage), the resource scope (per mailbox), the unit (bytes), and the intended use (quota display alongside the plan's quotaBytes). This makes it readily distinguishable from quota-related siblings like getMailboxQuote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for quota display alongside the plan's quotaBytes' implies a use case, but the description does not explicitly state when to prefer this tool over alternatives or when not to use it. Usage context is present but left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getMailDnsRecordsA
Read-onlyIdempotent
Inspect

getMailDnsRecords: Get the DNS records a mail domain needs (MX, SPF, DKIM, ...), for customers managing DNS externally. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA mail-enabled domain from listMailDomains, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds an explicit authentication requirement and scopes the operation to externally managed DNS setups, which is useful context beyond the structured annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose, records types, and use context. It starts with a redundant repetition of the tool name, but this is minor and does not detract from readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup, the description covers what records are returned, the qualifying scenario (external DNS), and authentication. No output schema exists, but the sentence adequately indicates return content. It does not discuss output format, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already explains both parameters fully. The description adds no additional parameter-level meaning; it only restates that these are DNS records needed by a mail domain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and a precise resource ('DNS records a mail domain needs'), enumerating record types (MX, SPF, DKIM). The 'managing DNS externally' clause also frames why this tool exists, distinguishing it from general DNS-listing tools without naming one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent when this tool applies: when customers manage DNS externally and need the required DNS records. It does not explicitly name alternatives like verifyMailDns or listDnsRecords, but the external-DNS context is a clear usage signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getMyAuditLogsA
Read-onlyIdempotent
Inspect

getMyAuditLogs: Get recent audit logs for the authenticated user across all services. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number for pagination.
sizeNoNumber of log entries per page.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds 'Requires authentication', which is useful context, but it does not disclose pagination behavior, ordering, or what 'recent' means. With annotations handling safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The scope is front-loaded and the authentication requirement follows immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no required parameters and a fully documented schema, the description covers the essential aspects: what it returns (audit logs), scope (user's logs across all services), and a prerequisite (authentication). No output schema exists, so return value details are not expected. The only slight gap is not disambiguating from getRecentActivity, but the scope phrase largely covers this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents page, size, and sessionKey. The description adds no additional meaning about parameter usage, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('get'), a clear resource ('audit logs for the authenticated user'), and a scope qualifier ('across all services') that distinguishes it from domain-scoped tools like getDomainAuditTrail. The purpose is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the authenticated user across all services' implies when to use this tool, and 'Requires authentication' sets a prerequisite. However, it does not explicitly name alternatives like getDomainAuditTrail or getRecentActivity, nor does it state when NOT to use them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getMyProfileA
Read-onlyIdempotent
Inspect

getMyProfile: Get the authenticated user's profile and account information including name, email, organization, balance, and domain/VPS counts. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds meaningful context by stating that authentication is required and specifying exactly what account data is exposed, which goes beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the primary purpose and includes the key usage constraint ('Requires authentication') without any redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only profile getter with one optional parameter fully described in the schema, the description provides enough context: the resource, the fields included, and the authentication requirement. No output schema exists, but the listed fields give a clear expectation of return contents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the only parameter, sessionKey, so the schema already documents it fully. The tool description does not add any new parameter-specific details, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb (Get), the resource (authenticated user's profile and account information), and the scope (name, email, organization, balance, domain/VPS counts). This detail differentiates it from siblings like getAccountBalance and getAccountSummary without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the authentication requirement and that this targets the authenticated user's own data, providing useful context. It does not explicitly mention when to prefer a sibling like getAccountBalance, but the scope is specific enough that an agent can infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getPaymentTransactionsA
Read-onlyIdempotent
Inspect

getPaymentTransactions: Get payment transaction history for the authenticated user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number for pagination.
sizeNoNumber of transactions per page.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral context that the data is scoped to the authenticated user and that authentication is required, which goes slightly beyond the structured metadata but does not disclose pagination behavior or response characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence that immediately names the operation and its scope, followed by a brief authentication note. Every word contributes meaning, and there is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only paginated history tool, the description plus schema and annotations cover the essential invocation context: what it returns conceptually, that it is read-only, and that the caller must be authenticated. The absence of an output schema is acceptable, though a note about the shape of the transaction list could improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (page, size, sessionKey) already has a meaningful description in the input schema. The tool description adds no parameter-level detail beyond what the schema provides, so it meets the baseline without adding extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get payment transaction history for the authenticated user.' This distinguishes it from related billing tools like getAccountBalance or listInvoices in broad terms, though it does not explicitly name or contrast those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when payment transaction history is needed for the authenticated user) and states the authentication prerequisite. However, it does not explicitly say when not to use it or mention alternative tools for related financial data, leaving routing partially to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getProductCatalogA
Read-onlyIdempotent
Inspect

getProductCatalog: Get the complete product catalog including domain extensions, VPS packages, and dedicated servers. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds a useful behavioral detail beyond annotations: 'No authentication required.' This helps an agent understand access prerequisites, though it does not describe response shape or potential size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the core purpose and includes only the essential additional detail about authentication. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless read-only catalog tool, the description is complete: it states what the catalog includes, confirms no authentication is needed, and annotations cover the safety profile. No essential calling information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100%, so there are no parameter gaps to fill. The description still adds semantic value by enumerating the content categories of the catalog, matching the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource: the complete product catalog, explicitly listing the included categories (domain extensions, VPS packages, dedicated servers). This distinguishes it from more specific siblings like getDedicatedServerCatalog, getDomainExtensions, and listVpsPackages by framing this as the umbrella catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context that no authentication is required, but it does not explicitly say when to use this tool versus the more targeted sibling tools. The usage is implied by 'complete product catalog,' but there is no explicit when-not-to-use or alternative routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getRecentActivityB
Read-onlyIdempotent
Inspect

getRecentActivity: Get the most recent activity across all domains and services for the user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful context that authentication is required and that the scope spans all domains and services. It does not disclose ordering, recency window, or response shape, but for a simple read-only getter with one optional parameter this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that states the operation, scope, and auth requirement without filler. The leading 'getRecentActivity:' prefix repeats the tool name, but it does not meaningfully reduce clarity or conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, idempotent tool with one optional, well-documented parameter and no nested objects, the description plus schema provides enough to invoke it correctly. The main omissions are the exact output shape and the definition of 'recent,' but these are minor for a tool of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single optional sessionKey parameter, with detailed format, provenance, and omit-when-OAuth guidance already in the schema. The description itself adds no parameter-level meaning, so the baseline of 3 applies because the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and identifies the resource: the most recent activity across all domains and services for the user. The cross-domain/cross-service scope helps separate it from domain-specific getters, but it does not explicitly distinguish it from getMyAuditLogs or other activity-style siblings, leaving some contrast to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is the prerequisite 'Requires authentication.' It does not state when to prefer this tool over getMyAuditLogs, getAccountSummary, or other list-style tools, nor does it specify when not to use it. The description implies general-purpose activity retrieval but gives no explicit alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTransferQuoteA
Read-onlyIdempotent
Inspect

getTransferQuote: Get a transfer price quote for a domain. Requires authentication. Returns transfer price, currency, extension years, and new expiration date. Call before initiateTransfer to show the user the cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to quote, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainNo
messageNo
successNo
currencyNo
transferPriceNo
extensionYearsNo
newExpirationDateNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate read-only, non-destructive, and idempotent behavior. The description adds the authentication requirement and what the call returns, plus the workflow cue that this is a preflight quote before a mutating transfer operation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the tool's purpose, its authentication and return behavior, and the exact workflow placement. It is front-loaded with the core action and avoids redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple quote tool with one required parameter and a rich output schema, this description covers what the tool does, that it requires authentication, what it returns, and when to call it. Nothing essential for correct invocation or selection is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents 'domain' and 'sessionKey'. The description does not add parameter-level detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Get a transfer price quote for a domain') and clarifies that it returns transfer price, currency, extension years, and new expiration date. This sets it apart from transfer-status and pricing-list siblings by scoping it to the pre-transfer quote step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states 'Call before initiateTransfer to show the user the cost,' giving clear contextual timing and connecting it to the relevant workflow. It does not list exclusions or compare against alternatives such as getDomainPricing or getTransferStatus, but the sequencing guidance is sufficient for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTransferStatusA
Read-onlyIdempotent
Inspect

getTransferStatus: Check the current status of a domain transfer. Requires authentication. Returns status, request date, current registrar, and expected completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name whose transfer to check, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by disclosing the authentication requirement and summarizing the returned fields (status, request date, current registrar, expected completion), which goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the core purpose is front-loaded, followed by authentication and return-value highlights. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status tool with no output schema, the description adequately covers what it returns and the auth requirement. Minor missing context is explicit guidance on error cases (e.g., transfer not found) and positioning relative to listPendingTransfers, but these are not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters already described in clear detail (domain format and sessionKey usage conditions). The description adds no additional parameter-specific semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') and resource ('current status of a domain transfer'), making the tool's function clear. While it doesn't explicitly distinguish itself from related siblings like listPendingTransfers or getTransferQuote, the name and description make the intent obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that authentication is required, which is a useful prerequisite, but it does not explain when to choose this tool over alternatives such as listPendingTransfers for a list of transfers or getTransferQuote for pricing. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getVpsInstanceDetailsB
Read-onlyIdempotent
Inspect

getVpsInstanceDetails: Get detailed information about a specific VPS instance including resource usage. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesVPS instance id from listMyVpsInstances.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as readOnly, idempotent, and non-destructive, so the description only needs to add context beyond that. It adds 'Requires authentication' and 'including resource usage,' but does not cover return format or any rate-limit/pagination behavior; this is still acceptable given the safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence states the action, target, and an extra detail (resource usage) with no filler. The 'getVpsInstanceDetails:' prefix is slightly redundant with the tool name but does not harm clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with two well-documented parameters and no output schema, the description gives enough high-level context plus the auth prerequisite. It does not enumerate the returned fields, but 'detailed information... including resource usage' plus annotations are sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains instanceId's provenance and the sessionKey's conditional use in detail. The tool description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get detailed information' with a clear resource ('a specific VPS instance') and calls out 'resource usage' as included scope. It does not explicitly differentiate from siblings like getVpsPackageDetails or listMyVpsInstances, but the 'specific instance' framing distinguishes it from listing operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives such as listMyVpsInstances or getVpsPackageDetails. The only contextual hint is the schema note that instanceId comes from listMyVpsInstances; the description itself gives no usage instructions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getVpsPackageDetailsA
Read-onlyIdempotent
Inspect

getVpsPackageDetails: Get detailed information about a specific VPS package including all pricing tiers. Requires authentication. For anonymous browsing use listVpsPackages, which already includes per-term pricing.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageIdYesVPS package id from listVpsPackages.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds useful behavioral context by stating the authentication requirement and clarifying that the anonymous browsing path is served by listVpsPackages. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core purpose, then states the auth requirement and the alternative tool, all in a compact and easily parseable format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only detail tool with full schema coverage, the description provides the essential context: purpose, auth requirement, and when to use the sibling listVpsPackages tool. The only minor gap is that no expected response shape is described beyond pricing tiers, but no output schema exists and this is unlikely to block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both packageId and sessionKey are well documented in the schema itself. The description does not add additional parameter-level meaning, but it does not need to because the schema already carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get detailed information') and a specific resource ('a specific VPS package') and explicitly mentions pricing tiers. It also distinguishes itself from listVpsPackages, making the tool's unique purpose clear without requiring schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states that authentication is required and directs anonymous users to listVpsPackages, which already provides per-term pricing. This gives the agent a clear decision rule for selecting this tool versus the sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

initializeDnsZoneA
Idempotent
Inspect

initializeDnsZone: Initialize (create) the DNS zone for a domain. NOT needed after registerDomain, which initializes the zone automatically. Use only for pre-existing domains without a zone (e.g. after a transfer, or if registration opted out with initializeDnsZone:false). Safe on existing zones, it will not overwrite records. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to create the zone for, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (idempotentHint true, destructiveHint false), the description adds meaningful behavioral context: it is safe on existing zones and will not overwrite records, and it explicitly requires authentication. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and efficient: it front-loads the core action, then gives exclusions, use cases, safety behavior, and auth requirement in short sentences. Every sentence adds useful information without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter create-style tool with complete schema coverage and useful annotations, the description covers the action, when to use it, when not to use it, safety on existing zones, and authentication. There is no significant missing context that would prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are already well documented in the input schema. The description adds no additional detail about the domain format or sessionKey semantics, so the schema carries the parameter explanation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Initialize (create)') and a clear resource ('the DNS zone for a domain'), and distinguishes it from the automatic initialization that happens with registerDomain. It also makes clear this is about the zone itself, not DNS records, so it will not be confused with createDnsRecord or updateDnsRecord.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when the tool IS needed ('pre-existing domains without a zone', after transfer, or registration opted out with initializeDnsZone:false) and when it is NOT needed (after registerDomain). This gives an agent actionable routing logic rather than leaving the decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

initiateTransferAInspect

initiateTransfer: Starts a transfer for a domain already prepared at the losing registrar (unlocked, auth code in hand). transferDomain (domain tools) stages transfer + registrant assignment in one step; use that when the user gives you contact details. Deducts from account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to transfer in, e.g. 'example.com'.
authCodeYesEPP/transfer authorization code obtained from the losing registrar.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description discloses that the action deducts from the account balance, requires authentication, and returns an actionId that must be passed to executeConfirmedAction for approval. This gives the agent essential behavioral context about cost, authentication, and the two-step confirmation flow that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, then the key alternative, then the side effects and follow-up step. Every sentence contributes necessary information without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly explains the return value (actionId) and the next action required. It also covers prerequisites, the triggering condition, cost, authentication, and the alternative tool. An agent has enough context to call it correctly and complete the confirmation flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds minor context by implying authCode is the code obtained from the losing registrar, but it does not materially expand on the schemas for domain or sessionKey. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Starts a transfer for a domain already prepared at the losing registrar.' It also explicitly differentiates itself from the sibling transferDomain, which handles staging transfer plus registrant assignment in one step. This disambiguation is strong and immediately actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: use this tool only when the domain is already unlocked and the auth code is in hand. It names the alternative transferDomain and specifies the condition for choosing it ('when the user gives you contact details'). It also explains the required follow-up step with executeConfirmedAction, leaving no ambiguity about the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listCategorizedTldsA
Read-onlyIdempotent
Inspect

listCategorizedTlds: List TLDs from the OSIR catalog that have category and audience metadata, with registration and renewal prices as decimal strings (e.g. '10.39'). Use it to pick 3-6 relevant TLDs before calling bulkDomainSuggestions. Filters: price cap, exclude ccTLDs/restricted/premium, registry. Returns unranked candidates with categories, audience, prices, and flags. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
registryNoFilter to TLDs operated by this registry name (case-insensitive exact match).
excludeCcTLDsNoSet true to exclude country-code and IDN TLDs.
excludePremiumNoSet true only when the user explicitly asks for no premium or surprise pricing; premium-flagged TLDs still register most names at the standard price, so do not use this as a budget filter.
maxRegisterPriceNoMaximum registration price as a decimal; TLDs priced above it are excluded.
excludeRestrictedNoSet true to exclude TLDs with registry-level registration restrictions.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds genuinely useful behavioral context beyond those hints: results are 'unranked candidates,' prices are decimal strings, return fields are named, and 'No auth required' is stated. This meaningfully helps an agent anticipate behavior without contradicting 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with purpose, then workflow usage, filters, and return shape. The repeated 'listCategorizedTlds:' prefix is slightly redundant, but every remaining sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately describes the returned shape: unranked candidates with categories, audience, prices, and flags. It also covers auth requirements and optional filters. Minor gaps remain, such as currency and pagination, but none of these block a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter in detail. The description only summarizes them as 'price cap, exclude ccTLDs/restricted/premium, registry,' which adds no semantic depth beyond the schema. This matches the baseline-3 case where structured data carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'List TLDs from the OSIR catalog that have category and audience metadata.' It clearly distinguishes this catalog-listing tool from pricing/extension tools and explicitly ties it to the bulkDomainSuggestions workflow, so an agent can tell exactly what it does and why it exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: pick 3-6 relevant TLDs before calling bulkDomainSuggestions. It also describes the available filters, which shape usage. It stops short of naming alternative tools to avoid or explicitly excluding other catalog/list tools, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listContactsA
Read-onlyIdempotent
Inspect

listContacts: List all contacts for the authenticated user, optionally filtered by a search term. Requires authentication. Returns each contact with its id for use in getContact, updateContact, deleteContact, or domain registration.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoOptional search term matched against contact name, email, or organization.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds an authentication prerequisite and the fact that each contact is returned with its id, which is useful context for chaining calls. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the purpose, then state authentication and what the response provides. No wasted words or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and full annotation coverage, the description gives purpose, auth prerequisite, and the id return value needed for subsequent operations. It omits pagination/order/edge-case behavior, but that is minor for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage: 'search' is described as matched against name/email/organization, and 'sessionKey' details the in-chat device flow vs OAuth. The description only reiterates 'optionally filtered by a search term' and adds no parameter-specific meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), resource ('contacts'), and scope ('for the authenticated user'), plus an optional search filter. It also hints at downstream use by mentioning ids feed into getContact/updateContact/deleteContact or domain registration. It does not explicitly call out the sibling getContactsForDomain, leaving a minor ambiguity, so 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Says it requires authentication and that the returned ids are intended for use in other contact operations or domain registration, which tells an agent when to call this first. It does not mention alternatives like getContactsForDomain or conditions for when not to use this tool, so it falls short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listDnsRecordsA
Read-onlyIdempotent
Inspect

listDnsRecords: List all DNS records for a domain. Requires authentication. Returns each record with its id, name, type, content, TTL, and priority; use the record id with getDnsRecord, updateDnsRecord, or deleteDnsRecord.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name whose records to list, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds valuable behavioral context beyond annotations: authentication is required, and the exact return fields (id, name, type, content, TTL, priority) are specified. This helps set expectations for the response despite no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core action and packs in response shape, authentication requirement, and downstream usage. Every clause earns its place; there is no inflated or redundant prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with fully documented parameters and annotations covering idempotence and non-destructiveness, the description is nearly complete. It covers return fields and follow-up actions. Pagination or limit behavior is not mentioned, but this is a minor gap for a low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'domain' and 'sessionKey' already fully documented in the input schema. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List all DNS records for a domain.' It clearly distinguishes itself from single-record operations like getDnsRecord by emphasizing 'all' records. The tool's scope is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on what the tool does and even orients the agent to use returned record ids with getDnsRecord, updateDnsRecord, or deleteDnsRecord. It does not explicitly say when not to use this tool versus alternatives, but the context is strong enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listInvoicesA
Read-onlyIdempotent
Inspect

listInvoices: List invoices for the authenticated user with optional status filtering and pagination. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number for pagination, default 0.
sizeNoNumber of invoices per page, default 20.
statusNoFilter by invoice status: DRAFT, PENDING, PAID, CANCELLED, or OVERDUE.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the authentication requirement and authenticated-user scope, which is useful but does not detail result shape or pagination behavior beyond schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. The main action and scope appear immediately, followed by the prerequisite authentication note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with fully documented optional parameters and annotations covering read-only/idempotent behavior, the description is complete. The authentication requirement is stated, and no critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are fully documented in the schema. The description only restates that status filtering and pagination are optional, adding no new semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('List') and resource ('invoices'), scoped to 'the authenticated user', with optional status filtering and pagination. This clearly distinguishes it from sibling tools like getInvoiceDetails and getInvoiceStatistics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: list invoices for the authenticated user, with optional filters and pagination, and requires authentication. It does not explicitly name alternatives or when-not-to-use conditions, but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listMailboxesA
Read-onlyIdempotent
Inspect

listMailboxes: List your mailboxes with plan, payment term, status, and next renewal date. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is established. The description adds a small amount of context by noting authentication is required and previewing the returned fields, but it does not describe pagination, ordering, or any edge-case behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler. The main value statement and returned fields are front-loaded, and the redundant 'listMailboxes:' prefix is trivial.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with one optional parameter and no output schema, the description covers the essential information: the resource, the returned fields, and the auth requirement. It does not describe output structure, but that burden is not significant here given the explicit field list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the only parameter, sessionKey, is already well documented in the input schema. The description adds no additional parameter-level semantics beyond the general authentication requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' with a clear resource ('your mailboxes') and enumerates the exact fields returned: plan, payment term, status, and next renewal date. This clearly distinguishes it from sibling tools like createMailbox, deleteMailbox, and listMailPlans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose itself implies when to use the tool: whenever the agent needs to enumerate the user's mailboxes. However, it does not explicitly state when this tool is preferable to alternatives like listMailPlans or getMailboxQuote, nor does it mention any exclusions or preconditions beyond authentication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listMailDomainsA
Read-onlyIdempotent
Inspect

listMailDomains: List your domains that are enabled for email hosting, with status (PENDING_DNS or ACTIVE) and DNS mode. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: authentication is required, and the response includes status and DNS mode. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, then packs in the key output attributes and authentication requirement. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 with rich annotations, a single optional parameter, and no output schema, the description provides sufficient information: what is listed, what fields are returned, and the auth prerequisite. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the sessionKey parameter is already well documented in the schema. The description adds no parameter-specific meaning beyond noting that authentication is required, which the schema already implies. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('your domains that are enabled for email hosting'), and specifies that it returns status (PENDING_DNS or ACTIVE) and DNS mode. This clearly distinguishes it from broader tools like listUserDomains or narrower ones like listMailboxes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when you need domains enabled for email hosting rather than all domains or mailboxes. However, it does not explicitly name alternatives or state when not to use it, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listMailPlansA
Read-onlyIdempotent
Inspect

listMailPlans: List available email mailbox plans with quotas and prices (monthly and annual, in cents). Requires authentication. Always quote prices from here, never from memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful context: authentication requirement, price units in cents, and monthly/annual billing distinction. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tightly packed sentence with zero filler. The purpose is front-loaded, followed by auth requirement and the price-quoting rule. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 with one optional parameter and no output schema, the description conveys the return content (quotas and prices), auth requirements, and an important usage rule. Nothing essential is missing for an agent to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional sessionKey parameter, so the schema fully documents it. The description doesn't add parameter-specific detail beyond the schema, which is acceptable under the high-coverage baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('List'), a distinct resource ('email mailbox plans'), and key attributes ('quotas and prices (monthly and annual, in cents)'). This cleanly distinguishes it from sibling tools like listMailboxes or getProductCatalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a strong directive: 'Always quote prices from here, never from memory.' This tells the agent when to prefer this tool for pricing. It also notes 'Requires authentication.' However, it doesn't explicitly name alternative tools or exclusions, so a small gap remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listMySshKeysA
Read-onlyIdempotent
Inspect

listMySshKeys: List the SSH keys stored on your account, with their ids and SHA256 fingerprints. Use this to check whether a key is already stored and to get the ids to pass to orderVps or buildVpsInstance. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnly, idempotent, and non-destructive behavior. The description adds the useful behavior that authentication is required, and clarifies the account-scoped nature of the data, providing context beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the purpose, state the output, and provide concrete use cases and an authentication note. There is no filler or redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 description is complete: it names the resource, the output, the primary use cases, and the authentication requirement. The absence of an output schema is mitigated because the description already states what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single optional sessionKey parameter with a 100% description coverage, so the description does not need to add parameter details. The mention of authentication is relevant but does not materially enhance the schema-provided semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'SSH keys stored on your account', and the specific output ('ids and SHA256 fingerprints'). It distinguishes this read-only listing tool from sibling tools like addSshKey and deleteSshKey by emphasizing account-scoped retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool: to check whether a key is already stored and to obtain ids for use with orderVps or buildVpsInstance. It provides clear context and downstream integration, though it does not explicitly contrast with add/delete SSH key tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listMyVpsInstancesA
Read-onlyIdempotent
Inspect

listMyVpsInstances: List all VPS instances owned by the authenticated user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value beyond this by stating that authentication is required and that results are scoped to the authenticated user, clarifying who can call it and what data it returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and scope, followed by the key prerequisite. There is no filler or redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool, the description adequately states the action, ownership scope, and authentication requirement. It does not elaborate on return format or pagination, but given the annotations and the straightforward resource, the description is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single optional sessionKey parameter is fully documented in the input schema. The description adds no parameter-level detail, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List all VPS instances owned by the authenticated user.' The scope is clear and distinguishes the operation from sibling tools like countMyVpsInstances or getVpsInstanceDetails by emphasizing a full collection of the user's own instances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to retrieve a user's VPS instances but provides no explicit guidance on when to choose it over related siblings such as countMyVpsInstances or getVpsInstanceDetails. It does mention the authentication requirement, which is useful context, but stops short of giving clear when-to-use versus when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listPendingTransfersA
Read-onlyIdempotent
Inspect

listPendingTransfers: List all pending incoming (gaining) domain transfers. Requires authentication. Returns each transfer with its status, request date, current registrar, and expected completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this tool is read-only, idempotent, and non-destructive. The description adds meaningful context by noting that authentication is required and by disclosing the returned fields: status, request date, current registrar, and expected completion. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the operation, scope, authentication requirement, and return contents with no wasted words. The most important information is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only nature, the description covers the essential purpose, authentication, and return fields. It does not mention pagination or sorting, but for a pending-list operation this is a minor omission and the annotations cover safety behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional parameter, sessionKey, is fully documented in the schema with its type, format, and usage guidance. The description itself adds no additional parameter meaning, but with 100% schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation as a read-only listing of pending incoming domain transfers: 'List all pending incoming (gaining) domain transfers.' This is specific and distinct from generic transfer actions, though it does not explicitly name sibling tools like getTransferStatus or initiateTransfer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'pending incoming (gaining) domain transfers' implies this is for checking transfers that are in progress and inbound, but no explicit when-to-use or when-not-to-use guidance is given. It also does not contrast with sibling tools such as cancelTransfer or getTransferQuote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listUserDomainsA
Read-onlyIdempotent
Inspect

listUserDomains: List all domains owned by the authenticated user. No parameters required. Must be authenticated first.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds authentication context and confirms no parameters are needed. It does not describe unauthenticated behavior or response details, but those are not critical for this simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. It includes useful operational notes about authentication and parameters. The only minor redundancy is the 'listUserDomains:' prefix that repeats the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with annotations covering safety and a schema covering the only parameter, the description is adequate. It tells the agent what the tool returns conceptually (all domains owned by the user) and how to invoke it. It could name an alternative like listMailDomains or describe the response shape, but neither is essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the optional sessionKey parameter, including its format and usage. The description's 'No parameters required' is accurate but already inferable from required: []. Thus the description adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List all domains owned by the authenticated user.' This clearly separates it from related domain tools like listMailDomains and other list-* siblings by scoping to domains owned by the user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear prerequisite: 'Must be authenticated first.' It also clarifies that no parameters are required. It does not explicitly name alternative tools or when-not-to-use it, but the context is clear enough for a straightforward listing operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listVpsLocationsA
Read-onlyIdempotent
Inspect

listVpsLocations: List available VPS hosting locations (cities/countries) with available packages. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds a behavioral fact beyond the annotations: no authentication is required. This is useful context for an agent deciding whether it can call the tool directly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that names the resource, the scope, and the authentication requirement. Every part adds information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only catalog lookup, the description is complete: it states what is listed, what is included, and the auth requirement. The annotations cover the behavioral safety profile, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty with zero required parameters, so there is no parameter semantic burden for the description to carry. The baseline of 4 applies because the schema fully documents the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'List', a clear resource ('available VPS hosting locations'), and narrows scope to cities/countries with available packages. This distinguishes it from sibling catalog tools like listVpsPackages and listVpsOsTemplates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when discovering VPS locations) and adds a useful context cue with 'No authentication required.' However, it gives no explicit guidance about when not to use it or how it relates to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listVpsOsTemplatesA
Read-onlyIdempotent
Inspect

listVpsOsTemplates: List operating system templates available to install. Requires authentication. Pass EXACTLY ONE of packageId (to pick an operatingSystemId for orderVps, so the server arrives with an OS on it) or instanceId (to pick a template for reinstalling via buildVpsInstance). The two are not interchangeable: the available set depends on the package. Template ids change over time, so always resolve an id here rather than reusing a remembered or hardcoded one.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageIdNoVPS package id from listVpsPackages; use BEFORE ordering to pick an operatingSystemId for orderVps.
includeEolNoInclude end-of-life templates (default false).
instanceIdNoVPS instance id from listMyVpsInstances; use to see what an existing server can be reinstalled with via buildVpsInstance.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context: authentication is required, template IDs are unstable and must be resolved fresh, and results depend on the package/instance context. This goes beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense, with no filler. The core action is front-loaded, followed by the critical exclusivity rule, downstream integration, and a practical stability warning. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with no output schema, the description provides all necessary operational context: input selection, authentication, downstream usage, and a caveat about template ID stability. The absence of an output schema is compensated by explaining how the result is consumed in orderVps and buildVpsInstance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured fields already document all four parameters. The description adds real semantic value by specifying that packageId and instanceId are mutually exclusive, that the choice determines the downstream operation, and that the result should be used as an operatingSystemId. This is extra meaning beyond the schema, though includeEol and sessionKey are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List operating system templates available to install.' It immediately clarifies the tool's role in two distinct workflows (orderVps and buildVpsInstance), which distinguishes it from sibling tools like listVpsPackages or listMyVpsInstances. This is far beyond a tautology and leaves no doubt about what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the exclusivity constraint: 'Pass EXACTLY ONE of packageId or instanceId.' It also explains why the two are not interchangeable, ties each parameter to its downstream consumer (orderVps vs buildVpsInstance), and warns that the available set depends on the package. This is concrete when-to-use guidance with no reliance on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listVpsPackagesA
Read-onlyIdempotent
Inspect

listVpsPackages: List available VPS hosting packages with pricing, specs, and locations. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint. The description adds the useful fact that no authentication is required and specifies the content returned. It does not disclose pagination, ordering, or whether the list reflects real-time availability, but for a simple read-only list the annotations carry the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single sentence that front-loads the operation name and immediately states the resource and returned attributes. Every word adds value, with no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list operation with no output schema, the description covers the key facts an agent needs: what is listed, what is included, and whether authentication is needed. It does not specify the response format, but that is often expected to be a catalog list and the missing details are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain parameter meaning. The baseline for zero-parameter tools is 4, and the description appropriately focuses on what is returned rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 (available VPS hosting packages) and names the key attributes returned: pricing, specs, and locations. This clearly distinguishes it from siblings like listVpsLocations, listVpsOsTemplates, getVpsPackageDetails, and orderVps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is the correct tool for listing available VPS packages with pricing, specs, and locations. It does not explicitly state when not to use it or point to alternatives, but the scope is specific enough that an agent can infer when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lockDomainA
Idempotent
Inspect

lockDomain: Enable registrar lock on a domain to prevent unauthorized transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to lock, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true, covering the basic safety profile. The description adds the registrar-lock behavior and intent, but does not disclose additional details such as whether the lock takes effect immediately or whether it affects in-progress transfers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys action, resource, and rationale without filler. The 'lockDomain:' prefix is mildly redundant with the tool name but does not detract from clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with full schema coverage and safety annotations, the description is nearly sufficient. It lacks only explicit guidance on when to prefer this over unlockDomain or how the lock interacts with transfer workflows, but those are minor for this tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both domain and sessionKey already documented. The description adds no parameter-level meaning beyond the schema, which is acceptable given full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Enable registrar lock') on a specific resource ('a domain') and gives the purpose ('prevent unauthorized transfers'). This clearly differentiates it from sibling tools like unlockDomain and updateDomainPrivacy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you want to prevent unauthorized transfers. However, it does not explicitly mention alternatives or when not to use it, such as referencing unlockDomain for reversal or noting conditions like pending transfers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loginToVpsPanelAInspect

loginToVpsPanel: Generate a one-time login URL to the VPS control panel (VirtFusion) for managing the server. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesVPS instance id from listMyVpsInstances.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations are uninformative — all four hints are false — so the description carries the behavioral burden. It adds genuine context beyond the annotations: the URL is one-time, it targets VirtFusion, and authentication is mandatory. It does not disclose side effects on existing sessions or URL expiry, but the one-time trait is the key behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences totalling about 21 words, with the verb and object front-loaded ('Generate a one-time login URL') and the authentication caveat as a compact second sentence. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters (1 required), no enums, no nesting, and no output schema, the description covers purpose, target system, and auth requirement, while the schema fully covers parameter semantics. The return value (a one-time URL) is implied by the description. Minor gaps such as expiry behavior and session side effects remain, but nothing prevents a correct first call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both instanceId and sessionKey are documented with provenance (listMyVpsInstances, checkDeviceLoginStatus) and a pass/omit rule. The description itself contributes no parameter-level detail beyond the schema, so the high-coverage baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Generate') and resource ('one-time login URL to the VPS control panel (VirtFusion)'), making the operation concrete and distinct from nearby auth-flow siblings like loginWithDevice and checkDeviceLoginStatus via the VirtFusion scope. However, it does not explicitly name any sibling, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states a prerequisite ('Requires authentication') and implies the use case ('for managing the server'), but gives no explicit when-to-use vs. when-not-to-use guidance and names no alternatives. The more useful routing guidance (include sessionKey for the in-chat device flow, omit for OAuth) lives in the parameter schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loginWithDeviceAInspect

loginWithDevice: Start a device authorization login (RFC 8628). Returns a verificationUri and userCode. Open the URI in your browser, enter the code, and sign in with your OSIR credentials. Then call checkDeviceLoginStatus with the returned deviceCode to complete login. No parameters required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-read-only, non-idempotent, and non-destructive. The description adds that it starts an interactive browser flow, requires human entry of the userCode, requires OSIR credentials, and depends on a follow-up call. It omits details like token expiry or whether concurrent device sessions are allowed, but it significantly enriches the behavioral profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and output names, then the user steps and follow-up call in order. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, it covers the initiation purpose, key returned values, the human actions, and the next call. It is slightly incomplete because 'deviceCode' is only referred to as 'returned' without being explicitly listed among return values, and no expiration/lifetime behavior is mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the empty schema already covers the parameter surface. The description confirms this explicitly with 'No parameters required,' which is all that is needed; there is no undocumented parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise action ('Start a device authorization login'), cites RFC 8628, and names the outputs (verificationUri, userCode) and the follow-up call. This clearly distinguishes it from siblings like checkDeviceLoginStatus as the initiation step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger condition and a direct next step ('Then call checkDeviceLoginStatus with the returned deviceCode'), so the agent knows when to use it and how to complete the flow. It does not list negative alternatives such as loginToVpsPanel, but the workflow context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

logoutA
Idempotent
Inspect

logout: Log out: revokes the session's tokens at the identity provider immediately. Optional: sessionKey (from checkDeviceLoginStatus); pass it to end that conversation session.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses immediate token revocation at the identity provider and the session-scoped effect of passing sessionKey. This aligns with idempotentHint=true and does not contradict the read/destructive hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and then explain the optional parameter. The only minor redundancy is repeating 'logout/Log out,' but it does not interfere with clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter fully documented and the description covering purpose and scoping, an agent has what it needs to invoke the tool correctly. No output schema is present, but logout's return value is not essential for correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents sessionKey's format and flow conditions, but the description adds extra meaning by explaining that passing it ends that conversation session. This goes beyond a bare restatement of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it revokes the session's tokens at the identity provider immediately. This clearly distinguishes logout from related auth siblings like loginWithDevice and checkDeviceLoginStatus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives conditional context for the optional sessionKey, explaining that it comes from checkDeviceLoginStatus and ends that conversation session. It is clear even though it does not explicitly name alternative tools to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

orderVpsAInspect

orderVps: Stage an order for a new VPS instance; deducts from account balance. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesHostname for the new server, e.g. 'myserver.example.com'.
packageIdYesVPS package id from listVpsPackages.
sshKeyIdsNoInteger SSH key ids from listMySshKeys or addSshKey, injected during install; without one you cannot log in.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
paymentTermYesBilling cycle: 'MONTHLY', 'SEMI_ANNUAL', 'ANNUAL', 'BIENNIAL', or 'TRIENNIAL'.
operatingSystemIdNoInteger OS template id resolved with listVpsOsTemplates using this same packageId; omit to get a server with NO operating system installed.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description discloses a financial side effect ('deducts from account balance'), requires authentication, and explains the returned actionId with a confirmation step. There is minor ambiguity about whether the deduction happens immediately during staging or only after confirmed execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently pack purpose, side effect, authentication, and the post-call workflow (actionId → executeConfirmedAction). There is no wasted wording, and the most important operational facts are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has six parameters and no output schema, the description usefully provides the key return contract (actionId) and the required next action. It does not cover failure cases like insufficient balance or how to structure the user-facing summary, but the schema already handles parameter sourcing details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with each of the six parameters already explained. The description adds no parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stage an order for a new VPS instance') and a key side effect ('deducts from account balance'). It is specific about the resource and the workflow, but it does not explicitly contrast with sibling tools such as buildVpsInstance, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use flow: present the returned summary to the user and call executeConfirmedAction if they approve. This indicates when to invoke the tool and what to do next, but it does not explicitly state when not to use it or how it compares to alternative ordering/building tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppCreateUploadAInspect

osirAppCreateUpload: Create an upload ticket for deploying app source code to Osir. Returns an uploadTicket, a putUrl, and instructions to zip the project and upload it. After uploading, call osirAppDeploy with the uploadTicket. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only provide false hints for read-only, open-world, idempotent, and destructive traits), the description discloses that the tool creates a ticket, returns uploadTicket and putUrl, instructs the user to zip and upload, and requires authentication. This adds meaningful behavioral and workflow context that the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the purpose, followed by return values, next step, and authentication requirement. The only minor redundancy is repeating the tool name at the start, but overall every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately names the key return fields and describes the upload-to-deploy workflow. It could be more detailed about the putUrl mechanics or ticket expiration, but for a one-optional-parameter tool the provided context is sufficient for an agent to invoke it and proceed to osirAppDeploy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents sessionKey, including when to pass it and when to omit it, so schema description coverage is 100%. The description adds no parameter-specific information, which is acceptable under the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create an upload ticket for deploying app source code to Osir.' It also differentiates from the closely related osirAppDeploy tool by framing this as the preparation step and explicitly naming the next call. The title 'Create app upload ticket' reinforces the same purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear workflow context: it says to call osirAppDeploy after uploading, which tells the agent when this tool fits in the deployment sequence. It does not explicitly name alternatives or exclusion criteria, but the sequential guidance is enough to route usage correctly among the osirApp* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppDeleteA
DestructiveIdempotent
Inspect

osirAppDelete: Stage deletion of an Osir app. DESTRUCTIVE and irreversible: removes its microVM, image, route, and data. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp id from osirAppList.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false; the description adds concrete impact—removes microVM, image, route, and data—and the two-phase staging behavior plus authentication need. This goes beyond the annotation flags and gives an agent the true risk profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what the tool does, why it is dangerous, and exactly how to proceed. Every clause earns its place and the destructive warning is prominently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, it states the return (actionId), the required confirmation flow, and the authentication precondition, which is enough for an agent to call this correctly. A minor ambiguity is that 'the summary' is referenced without clarifying its source, so I stop short of the top score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already describes both parameters with 100% coverage: appId is sourced from osirAppList and sessionKey has explicit usage conditions. The description adds no parameter-level syntax or formatting; it remains at the baseline because the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('stage deletion') and precise object (Osir app), and lists the concrete resources removed, making clear it is the app-deletion staging tool and distinguishing it from generic delete tools. The description goes beyond the annotation title by naming the microVM, image, route, and data scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly explains the workflow: return an actionId, present the summary to the user, and only invoke executeConfirmedAction with that actionId upon approval. It also notes the authentication requirement; while it doesn't explicitly list when not to use it, the confirmation gate leaves no ambiguity about appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppDeployAInspect

osirAppDeploy: Deploy an app to Osir (free tier) and get a live HTTPS URL; the app runs isolated in a microVM. Deploying an existing app name redeploys it (new version) and applies any secrets set via osirAppSetSecret. A plain static website (HTML/CSS/JS with no framework or build step) is also supported: it is auto-detected and served directly; pass language 'node' for it. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApp name: lowercase letters, digits, and hyphens, e.g. 'habit-tracker'.
regionNoRegion: 'us' or 'al' ('al' is Albania/Tirana); defaults to the platform's home region.
languageYesRuntime language: 'node', 'python', 'php-laravel', or 'go'; use 'node' for a plain static site.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
uploadTicketYesUpload ticket from osirAppCreateUpload, after uploading the zipped source to its putUrl.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations (which only provide title and non-hints), the description discloses key behaviors: the app runs isolated in a microVM, redeploying applies secrets, static sites are auto-detected, and authentication is required. These are not covered by annotations, so the description adds significant value by making these behaviors explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with three sentences that each carry meaningful information: main purpose, redeploy behavior, and static site handling plus auth. It front-loads the core action and avoids fluff. It could be slightly more compact, but every sentence earns its place, making it well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deployment tool with a full schema and no output schema, the description covers the essential context: deployment target, redeployment semantics, static site support, and authentication requirement. It does not mention response format or error handling, but these are not required given the annotations and schema richness. It is adequately complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all five parameters documented. The description adds a note about using 'node' for static sites, which is already present in the schema's language description. It does not provide additional parameter semantics beyond the schema, so it meets the baseline for full schema coverage without adding extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Deploy an app to Osir (free tier) and get a live HTTPS URL.' It specifies the verb (deploy), the resource (app to Osir), and the outcome. It also distinguishes itself from siblings by covering redeployment behavior and static site support, making it clear this is the deployment action, not listing, deletion, or secret management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: deploying or redeploying an app, and handling static sites by specifying language 'node'. It mentions redeploy behavior and the relationship with osirAppSetSecret. However, it does not explicitly state when NOT to use this tool or name alternative tools, so it lacks explicit exclusions but still gives solid usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppGetSourceA
Read-onlyIdempotent
Inspect

osirAppGetSource: Get a short-lived signed download URL for an Osir app's current source zip. Use this to make edits to a deployed app without the user re-attaching the project: download, patch the files, then osirAppCreateUpload (PUT the new zip) and osirAppDeploy under the SAME name; the platform rebuilds and, for owned-tier apps, auto-ships the new version to the user's box. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesThe deployed app's name, as shown by osirAppList.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds useful behavior beyond that: the URL is short-lived and signed, authentication is required, and the platform rebuilds/auto-ships only in the owned-tier flow. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded, with every sentence earning its place: the purpose, the practical workflow, and the auth requirement. The references to sibling tools are packed in without unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with no output schema, the description is complete: it states what is returned (a signed download URL), why it's needed, how to proceed afterward, and that auth is required. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents appName and sessionKey with their formats and requirements. The description doesn't need to add parameter detail; it doesn't add much beyond the auth note, which matches the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation — obtaining a short-lived signed download URL for an Osir app's current source zip — and distinguishes it from sibling tools like osirAppList (listing apps) and osirAppDeploy (deploying). The verb 'Get' and the resource 'source zip' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the intended use case: making edits to a deployed app without user re-attaching, and lays out the follow-up steps (osirAppCreateUpload then osirAppDeploy). It doesn't explicitly enumerate when not to use it, but the workflow is specific enough for an agent to select it over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppListA
Read-onlyIdempotent
Inspect

osirAppList: List the authenticated user's deployed Osir apps with their live URLs and status. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by requiring authentication and specifying that the result includes live URLs and status, going slightly 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core purpose, followed by the authentication requirement. The 'osirAppList:' prefix is slightly redundant with the tool name, but the remaining text is efficient and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with one optional parameter, the description covers what the tool returns (deployed apps, live URLs, status) and the authentication requirement. No output schema is present, but the description provides enough return context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional parameter is fully documented. The description does not add parameter-level detail beyond the schema, but it does reinforce that authentication is needed, which aligns with the sessionKey parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and clearly identifies the resource: the authenticated user's deployed Osir apps, including live URLs and status. This distinguishes it from related tools like osirAppStatus or osirAppLogs by focusing on enumeration of deployed apps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the context clear: call this when you need to list the authenticated user's deployed Osir apps with their URLs and status. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent can infer when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppLogsA
Read-onlyIdempotent
Inspect

osirAppLogs: Get recent logs from an Osir app's microVM ('why is my app broken?'). Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNoNumber of recent log lines to return (default 100).
appIdYesApp id from osirAppList.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description bears a lower burden for safety disclosure. It does not contradict the annotations and adds the authentication requirement, but it does not describe output format, pagination, or log line structure. The added behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence followed by a short authentication note, with no fluff. The parenthetical 'why is my app broken?' adds useful intent context. It loses one point for the redundant 'osirAppLogs:' prefix which simply restates the tool name, though this is a minor issue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter set (3 params, 1 required) and annotations covering the safety profile, the description plus schema covers what an agent needs to invoke the tool correctly. The main gap is the absence of an output schema and no description of the response shape, but for a log-fetching tool this is not a significant blocker.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has a clear description (e.g., 'Number of recent log lines to return', 'App id from osirAppList', and the detailed sessionKey explanation). The tool description itself adds no parameter semantics beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get') and resource ('recent logs from an Osir app's microVM'), and adds a user-intent cue ('why is my app broken?') that makes its purpose immediately recognizable. This distinguishes it from sibling tools like osirAppStatus or osirAppGetSource without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Requires authentication' gives a prerequisite for use, and 'why is my app broken?' implies a debugging context, but there is no explicit guidance on when to prefer this tool over alternatives like osirAppStatus or osirAppList. The usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppMoveToOwnedAInspect

osirAppMoveToOwned: Move a deployed Osir app from the shared free tier onto a VPS owned by the user. TWO WAYS IN. (1) The user already owns a VPS: pass instanceId (from listMyVpsInstances) and NO packageId - this ATTACHES the app to that server, SPENDS NOTHING and needs no confirmation. (2) No server yet: pass packageId (from listVpsPackages) and the call stages a VPS order (COSTS MONEY): returns an actionId; present the price/summary to the user and call executeConfirmedAction only if they approve. Before staging any order this tool checks whether the user ALREADY has a box for this app (its C2 binding, then their own VPS list) and attaches that instead - a retry after a failed move never buys a second server. After the move starts the platform ships the app onto the box server-side, which takes about two minutes; watch it with osirAppStatus ('ownedMove'). Calling this tool again while a move is still running just reports its progress, and calling it after one FAILED retries the ship. If the result status is BUILDING or BUILD_FAILED, follow its nextStep. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoCustom domain to serve the app on; DNS is bound automatically if the domain is hosted on osir.app nameservers, otherwise the result returns the IP and manual DNS instructions.
appNameYesThe deployed app's name, as shown by osirAppList.
packageIdNoVPS package id from listVpsPackages. Required ONLY when a server has to be ordered; omit it when passing instanceId.
instanceIdNoId of a VPS the user ALREADY owns, from listMyVpsInstances. Given this, the app is attached to that server and nothing is ordered or charged. Never invent one.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses extensive behavioral nuances beyond the annotations: the dual attach-vs-order behavior, the pre-check to avoid duplicate purchases, the ~2-minute server-side shipping, progress reporting on concurrent calls, retry semantics after failure, and nextStep handling for BUILDING/BUILD_FAILED. It also notes the authentication requirement. This fully compensates for the sparse annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place—each clause covers a distinct behavioral or routing rule. It is front-loaded with the purpose, then structured into two numbered modes, and closes with operational notes. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity tool with two modes, cost implications, retry logic, and progress reporting, the description covers all operational aspects an agent needs to invoke it correctly and safely, including the confirmation flow, the duplicate-server safeguard, and the post-move monitoring path. The lack of an output schema is mitigated by explicit mentions of actionId, status, and nextStep.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the input schema has 100% coverage, the description adds critical semantic context: instanceId must be from listMyVpsInstances and never invented, packageId is only for ordering, and the mutual exclusivity of the two parameters. This goes beyond the schema descriptions to explain the decision logic and usage constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource: 'Move a deployed Osir app from the shared free tier onto a VPS owned by the user.' It clearly distinguishes the tool's purpose from siblings like osirAppDeploy and osirAppStatus by focusing on the move-to-owned-VPS action and its two distinct pathways.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly delineates when to use each parameter mode (instanceId vs packageId), when confirmation is required (costing path), and how the tool behaves on retries and repeated calls. It also cross-references listMyVpsInstances, listVpsPackages, executeConfirmedAction, and osirAppStatus, giving the agent unambiguous decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppProvisionDatabaseAInspect

osirAppProvisionDatabase: Provision a managed Postgres database for an Osir app. The connection string is stored as the app's DATABASE_URL secret (encrypted, injected on the next osirAppDeploy) and is NEVER returned. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp id from osirAppList.
engineNoDatabase engine; only 'postgres' (the default) is supported.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral details: the connection string is encrypted, stored as a secret, injected only on the next deploy, and never returned. It also notes the authentication requirement. This adds meaningful context that helps the agent predict side effects and response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the main purpose in the first sentence. The repeated tool name at the start is slightly redundant, but the rest is efficient and every clause adds useful context about storage, encryption, deployment timing, and non-return of credentials.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the critical operational context: what is created, where it goes, when it becomes active, and that the secret is not returned. Since there is no output schema, a bit more detail about the tool's success response or asynchronous behavior would improve completeness, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for all three parameters, including specific guidance on engine and sessionKey. The tool description does not add new parameter-level semantics; it reinforces the engine and secret side effect but does not go beyond the schema's existing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Provision') and a specific resource ('managed Postgres database for an Osir app'), clearly distinguishing it from other osirApp* siblings like deploy, delete, or set-secret. It also explains the key side effect: the connection string becomes the app's DATABASE_URL secret.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes its purpose and lifecycle context clear: provisioning a database whose credentials are injected at the next osirAppDeploy. It does not explicitly name alternatives or state when not to use this tool, but it provides enough context for an agent to choose it over related app-management tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppSetSecretAInspect

osirAppSetSecret: Set an environment secret for an Osir app (e.g. DATABASE_URL, API_KEY). The value is stored encrypted and injected as an env var on the next osirAppDeploy of the app; it is NEVER returned or logged. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEnvironment variable name, e.g. 'API_KEY'.
appIdYesApp id from osirAppList.
valueYesThe secret value; never returned or logged.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important behaviors beyond annotations: the value is stored encrypted, is injected as an env var on the next deploy, and is NEVER returned or logged. It also notes the authentication requirement. These details add real operational context that the annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a clear action sentence followed by key behavioral facts. Every clause adds information about security, deployment timing, or authentication, with no filler or repeated schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action, input semantics, side effects, security posture, and authentication context. It does not describe the success/error response shape, but given there is no output schema and this is a set operation, the provided information is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all four parameters with 100% coverage. The description adds value by giving realistic examples for key and explaining the secret's lifecycle (encrypted storage, injection on next osirAppDeploy), which deepens the agent's understanding of what key and value mean beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb ('Set') and a precise resource ('environment secret for an Osir app'), reinforced with concrete examples like DATABASE_URL and API_KEY. It clearly identifies the tool's job and is distinct from sibling osirApp* operations because it targets environment secrets rather than deploys, uploads, or logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when this tool applies: setting environment secrets that will be injected on the next osirAppDeploy. It does not explicitly name alternatives or state when not to use it, but the use case is unambiguous enough that an agent can select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirAppStatusA
Read-onlyIdempotent
Inspect

osirAppStatus: Get an Osir app's current status, live URL, and health ('is my app working?'). If the status is BUILD_FAILED, 'recentErrors' explains why so you can fix the source and redeploy. 'qa' is an independent black-box check of the LIVE app after deploy: qa.status PASSED means it loaded and worked; FAILED means it deployed but didn't actually work, and qa.findings lists the problems so you can fix and redeploy. 'ownedMove' tracks a move onto the user's own VPS, which leaves tier and status unchanged while it runs: state MOVING (in progress, stage says where, ~2 minutes in total), MOVED (done - tier reads 'owned'), FAILED or REFUSED (call osirAppMoveToOwned again to retry; it never orders a second server). Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp id from osirAppList or a deploy result.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds substantial behavioral detail beyond that: it explains the qa black-box check on the live app, that ownedMove leaves tier/status unchanged, and that FAILED/REFUSED never orders a second server. It also discloses that authentication is required. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured. It front-loads the core purpose, then explains each relevant status condition in a logical flow. While it is longer than many tool descriptions, the complexity of the tool (multiple statuses, qa, ownedMove) justifies the length, and each sentence contributes to understanding. A slight trim could improve readability, but it is appropriately sized for the information needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and lack of an output schema, the description thoroughly covers what an agent needs: it explains return fields (recentErrors, qa.status, qa.findings, state, stage, tier), what each means, and how to react to specific statuses. It also covers retry behavior and authentication. No critical gaps for calling this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both appId and sessionKey. The description does not add new parameter-specific semantics beyond what the schema provides, though it does reference authentication in general. Baseline of 3 is appropriate because the schema carries the burden and the description adds no significant extra parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific verb and resource: 'Get an Osir app's current status, live URL, and health'. It immediately distinguishes itself from sibling osirApp tools by focusing on status and health, and explains sub-statuses like BUILD_FAILED, qa, and ownedMove, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (to check if an app is working, to diagnose build failures) and even directs the user to retry with osirAppMoveToOwned for FAILED/REFUSED states. However, it does not explicitly name alternative tools or state when not to use it, though the purpose is clear enough that an agent could infer. The authentication note adds a practical usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirSiteDesignBriefA
Read-onlyIdempotent
Inspect

osirSiteDesignBrief: Step 1 of designing a NEW website with OSIR. Validates the brief and returns 'systemPrompt', the structured design brief and constraints YOU must then follow to write one complete self-contained HTML page, plus 'editRules' for later revisions. Call it before osirSitePublish for a new site, then publish the finished page with osirSitePublish. No authentication needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageJobYesThe page's single job: get_contact, sell_product, book_appointment, collect_signups, inform_portfolio, or other.
audienceYesWho visits the site and why.
whatItIsYesWhat the business concretely does or sells.
briefJsonNoOptional JSON object with extras the user provided: site_type, sections[], language (ISO code, default en), tone (warm|premium|playful|technical|minimal|bold), mood_words[] (max 5), brand{logo_url, primary_color '#RRGGBB', secondary_color, fonts[], existing_site_url, references[{url, what_you_like}] (max 3; direction only, never copied), dislikes}, content{tagline, services_or_products[{name,description,price}], about_text, contact{phone,email,address,hours,social[]}, image_urls[], testimonials[{quote,name}] (real only)}, constraints{dark_mode, animations (none|subtle|expressive), form_endpoint, legal_footer}. Ask the user rather than inventing values; skipped extras are fine.
businessNameYesThe business or project name.
primaryActionYesThe one primary call to action, e.g. 'Book a table'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool validates the brief, returns structured instructions, and requires no authentication. Annotations already provide readOnlyHint and idempotentHint, and the description is consistent with those, adding context about the returned artifacts and the follow-up responsibility to write the HTML page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph with no filler. Every sentence contributes: the tool's role, what it returns, the exact sequence with osirSitePublish, and the authentication posture. It is front-loaded with the primary purpose and maintains clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the fact that there is no output schema, the description usefully names the two return artifacts ('systemPrompt' and 'editRules') and states the next step. It does not detail the format of those artifacts, but for a step-initiating tool that hands off a prompt, the described handoff is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the individual parameters are already well documented in the input schema. The description adds no per-parameter semantics beyond indicating that the brief is validated, but the schema descriptions, especially for briefJson, carry the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (validates, returns), the resource (new OSIR site design brief), and positions it as Step 1 in a two-step flow with osirSitePublish. It distinguishes the tool from its sibling by naming the concrete outputs ('systemPrompt', 'editRules') rather than just restating the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent to call this before osirSitePublish for a new site and then publish the finished page with that tool. It clearly conveys when in the workflow to use it, though it does not discuss when not to use it or alternatives beyond the named sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

osirSitePublishAInspect

osirSitePublish: Publish a single-page website to a live HTTPS URL on Osir (free tier). ANY complete HTML document works: the user's own site, a page designed in this chat, or one from the osirSiteDesignBrief flow. Calling again with the same name redeploys the new version. For MULTI-FILE sites (separate CSS/JS/images) use osirAppCreateUpload + osirAppDeploy with a zip instead. Then poll osirAppStatus until READY. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe complete <html> document to publish (max 1 MiB).
nameYesSite name: lowercase letters, digits, and hyphens, e.g. 'bar-mediterran'.
regionNoRegion: 'us' or 'al' ('al' is Albania/Tirana).
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
designContractNoSet true ONLY for pages generated via the osirSiteDesignBrief flow; additionally enforces its output contract (exactly one <h1>, self-contained, no external scripts/CSS except Google Fonts, no iframes). Never set it for a user's own site.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds useful behavioral context beyond annotations: calling again with the same name redeploys the new version, and the tool requires authentication. This does not contradict the readOnlyHint=false, idempotentHint=false, or destructiveHint=false annotations. A minor gap is that the exact response/URL format is not described, but the core mutation behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then accepted input, redeploy behavior, alternative tool routing, and auth note. Every sentence adds useful selection or invocation information, with no meaningful filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a publish action with no output schema, the description covers purpose, accepted inputs, redeploy behavior, multi-file alternatives, and authentication. It does not spell out the returned URL or response shape, but the 'live HTTPS URL' promise and redeploy semantics are sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that html accepts any complete document from multiple sources and that reusing name triggers a redeploy, which is not evident from the parameter descriptions alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Publish', resource 'single-page website', and destination 'live HTTPS URL on Osir (free tier)'. It explicitly distinguishes itself from multi-file publish flows by naming the alternative tool set, so an agent can tell this apart from siblings like osirAppCreateUpload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says ANY complete HTML document works (user's own, chat-created, or design-brief output) and clearly routes multi-file sites to osirAppCreateUpload + osirAppDeploy with a zip. It also references the osirSiteDesignBrief flow and polling osirAppStatus, giving concrete when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payInvoiceAInspect

payInvoice: Stage payment of an outstanding invoice from account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceIdYesThe identifier of the outstanding invoice to pay, as returned by listInvoices.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the two-phase behavior: payInvoice stages the payment and returns an actionId, which must be confirmed via executeConfirmedAction. It also notes that authentication is required. This adds meaningful behavioral context beyond the annotations, though it does not explain side effects such as whether funds are reserved immediately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. The 'payInvoice:' prefix is redundant with the tool name, and 'Requires authentication' is fairly generic, but the rest of the sentences are necessary and provide essential workflow guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating payment tool with no output schema, the description covers the essential flow: what it does, what it returns, and what the agent must do next. It may not enumerate all failure modes, but it gives the agent enough context to invoke the tool and continue the confirmation workflow correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both invoiceId and sessionKey with full coverage. The description does not add parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Stage payment of an outstanding invoice from account balance.' This clearly distinguishes it from merely creating a payment session and clarifies that it does not immediately finalize payment. The purpose is unambiguous and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for outstanding invoices paid from account balance, and it requires an authentication state. It also gives follow-up usage instructions by telling the agent to present the summary and call executeConfirmedAction. It does not explicitly name alternative tools or exclusions, but the context is strong enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

previewPaymentFeesA
Read-onlyIdempotent
Inspect

previewPaymentFees: Preview the fees that would be charged for a given payment amount. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesPayment amount to preview, in the account currency as a decimal (e.g. 25.00).
currencyNo3-letter ISO 4217 currency code, default USD.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
feeNo
totalNo
amountNo
messageNo
successNo
currencyNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is largely covered. The description adds the authentication requirement and the 'preview' semantics, which reinforce that no mutation occurs. It does not describe additional behavior such as response shape or whether fees are calculated live, but the output schema covers return values and the annotations cover the core side-effect profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core purpose stated in the first clause and the authentication note appended. It wastes few words, though the redundant 'previewPaymentFees:' prefix repeats the tool name. Overall it is concise and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple read-only preview tool, the description combined with the full parameter schema and output schema is complete. The agent knows what the tool does, what parameters are expected, that it is safe and idempotent, that it requires authentication, and what output structure to expect. No critical information for invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already well documented in the input schema. The description adds no parameter-level details beyond the schema, such as formatting or relationships between amount and currency. Baseline 3 is appropriate because the schema carries the semantic load and the description does not contradict or expand it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, 'Preview', and a specific resource, 'the fees that would be charged for a given payment amount'. This clearly distinguishes it from payment execution tools like createPaymentSession and payInvoice, and from pricing/quote tools focused on domains or transfers. The purpose is unambiguous even without sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used before a payment to estimate associated fees, and it adds the prerequisite that authentication is required. However, it does not explicitly state when to use this tool versus alternatives such as createPaymentSession, getTransferQuote, or getProductCatalog. There is no direct exclusion or alternative routing, so the guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registerDomainAInspect

registerDomain: Stage registration of a new domain name. Deducts from account balance. The DNS zone is initialised automatically after registration (asynchronously; if createDnsRecord right after registration reports a missing zone, retry after a few seconds). Pass initializeDnsZone:false to opt out. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsYesRegistration period in years, 1-10.
domainYesFully qualified domain name to register, like "example.com", without scheme.
autoRenewNoEnable automatic renewal; defaults to true.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
nameserversYesList of nameserver hostnames, e.g. ["ns1.example.com", "ns2.example.com"].
registrantInfoYesICANN registrant contact of the domain owner: firstName, lastName, email, phone (+CC.number), and address (street, city, postalCode, country as 2-letter ISO code).
initializeDnsZoneNoInitialise the DNS zone after registration; defaults to true.
privacyProtectionNoEnable WHOIS privacy protection; defaults to true.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations being minimal (readOnlyHint: false and destructiveHint: false), the description fully discloses the important behavior: it deducts from the account balance, initializes DNS asynchronously, can temporarily report a missing zone, and returns an actionId rather than completing immediately. This significantly exceeds what annotations provide and prevents serious user-visible surprises.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense: it states the action, side effect, asynchronous DNS behavior, retry guidance, opt-out flag, and the actionId confirmation flow without redundancy. Each sentence earns its place and critical operational details are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with eight parameters, a nested registrantInfo object, no output schema, and minimal annotations, the description covers the essential gaps: the two-step confirmation mechanism, DNS initialization timing, and balance deduction. The agent has everything needed to call it and continue the workflow correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The description adds useful context for initializeDnsZone ('pass initializeDnsZone:false to opt out') and implies cost behavior, but it does not add substantial meaning to most other parameters. This matches the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Stage registration of a new domain name.' It clarifies this is for new registration rather than transfer or renewal and distinguishes itself by explaining the gatekeeping actionId flow, which no sibling tool description suggests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains when to use the tool (new domain registration) and provides post-call guidance: present the returned actionId and call executeConfirmedAction upon approval. It stops short of explicitly contrasting with transferDomain or checkDomainAvailability, so it misses fully explicit exclusions, but the context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

renewDomainAInspect

renewDomain: Stage renewal of a domain for a specified number of years. Deducts from account balance. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsYesRenewal period in years, 1-10.
domainYesFully qualified domain name to renew, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the key side effect ('Deducts from account balance'), the two-phase behavior ('Stage renewal' vs. final execution), and the return signal (actionId requiring confirmation). These traits go well beyond the annotations, which only state readOnly/idempotent/destructive are false, leaving the actual behavioral contract unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose/scope, side effect, and return-handling instruction. Front-loaded with the action and resource, and no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a staged mutation with no output schema, the description provides everything needed to call and complete the action: it states the side effect, identifies the return value (actionId), and instructs the follow-up call. It appropriately leaves parameter format and authentication to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already contains 100% coverage with clear descriptions for domain, years, and sessionKey, so the description need not restate them. It adds minimal semantic nuance by linking 'specified number of years' to the years parameter, but does not deepen understanding of the parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb-resource pair ('Stage renewal of a domain') and specifies the key parameter (number of years). It clearly distinguishes this from related siblings by framing it as a staged renewal that deducts from account balance, rather than a toggle like updateDomainAutoRenew or a transfer/registration action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage flow: present the returned summary to the user and call executeConfirmedAction if they approve. This tells the agent exactly how to handle the tool's output and when to involve the user. However, it does not name or exclude alternatives like updateDomainAutoRenew, so some inference is left to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setMailboxPasswordA
Idempotent
Inspect

setMailboxPassword: Set a new password on a mailbox. Never log or store the password. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordYesThe new mailbox password; never log or store it.
mailboxIdYesMailbox id from listMailboxes.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a meaningful security warning not present in the annotations: 'Never log or store the password.' It also notes authentication is required. Annotations already cover mutability and idempotency, so the description adds useful behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loading the action and then adding the critical security constraint. There is no filler; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the full schema parameter descriptions and annotations, the description supplies the essential behavioral caveats: authentication and password handling. It does not describe return values or side effects, but those are less critical for a straightforward mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter explained, including the conditional sessionKey. The description mostly restates the password warning already in the schema, so it adds little new semantic value, but the schema carries the burden adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'Set' and the resource 'a new password on a mailbox', making the action unambiguous. It is clearly distinct from sibling tools like createMailbox, deleteMailbox, or listMailboxes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is direct enough that when to use it is clear: reset or change a mailbox password. It adds the 'Requires authentication' context, and the sessionKey parameter documentation in the schema provides explicit guidance on when to include it, though the description itself does not name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spinDomainWordsA
Read-onlyIdempotent
Inspect

spinDomainWords: Generate domain suggestions by spinning/replacing words with similar alternatives.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code; default "eng".
nameYesComma-separated words to spin, e.g. "pizza,restaurant".
tldsNoComma-separated TLDs without leading dots, e.g. "com,net".
positionNo0-based index of the word to replace.
maxResultsNoMaximum suggestions to return; default 20.
similarityNoSimilarity threshold for replacements, 0.0-1.0.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety and side-effect profile is covered. The description adds the spinning/replacement mechanism but does not disclose return shape, pagination, or any operational limits; however, annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no wasted words, front-loading the main action. It loses one point only because the leading 'spinDomainWords:' prefix largely repeats the tool name and the included metadata title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage and comprehensive annotations, the description covers the essential operation with minimal redundancy. The main gaps are the lack of sibling differentiation and the absence of an output schema, but the tool's purpose is simple enough that the description remains adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all six parameters documented, so the description does not need to repeat parameter details. It also does not add meaningful parameter-level context beyond the general spinning/replacement idea, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (generate), the resource (domain suggestions), and the mechanism (spinning/replacing words with similar alternatives). It is more specific than a tautology, but it does not explicitly distinguish itself from sibling tools like generateDomainSuggestions, bulkDomainSuggestions, or suggestAlternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by spinning/replacing words with similar alternatives' implies when this tool might be appropriate, but the description gives no explicit guidance about when to choose this over other domain-suggestion siblings. There are no when-to-use or when-not-to-use statements, leaving the agent to infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggestAlternativesA
Read-onlyIdempotent
Inspect

suggestAlternatives: Suggest alternative domain names if the requested one is unavailable. Legacy; prefer generateDomainSuggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of suggestions to return; default 10.
domainYesFully qualified domain name to find alternatives for, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the legacy status and the availability condition, which is useful context beyond the annotations. It does not describe return format or pagination, but with the annotations covering side effects, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that includes the tool's purpose, the condition for use, and its legacy status. There is no redundant repetition of the title or schema, and every word contributes to routing the agent correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is legacy, the description adequately tells the agent it should normally prefer generateDomainSuggestions. With all parameters documented in the schema and annotations covering safety semantics, the missing output format detail is a minor gap rather than a critical omission. The overall context is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters fully documented in the input schema. The description adds no parameter-level detail beyond 'domain' being the requested one, and 'limit' and 'sessionKey' are already well explained. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Suggest alternative domain names') and the triggering condition ('if the requested one is unavailable'). It also explicitly distinguishes this from generateDomainSuggestions by marking it as legacy, so an agent can tell what this tool does and how it relates to its sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing guidance: 'Legacy; prefer generateDomainSuggestions.' This tells the agent not to choose this tool when generateDomainSuggestions is available. While it doesn't list every possible alternative, it names the exact sibling that should be used instead, which is sufficient for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transferDomainAInspect

transferDomain: Stage transfer of a domain from another registrar to OSIR. Deducts from account balance. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to transfer, like "example.com", without scheme.
authCodeYesEPP authorization code obtained from the current registrar.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
registrantInfoYesICANN registrant contact of the domain owner: firstName, lastName, email, phone (+CC.number), and address (street, city, postalCode, country as 2-letter ISO code).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: it deducts from the account balance, returns an actionId, and only stages the transfer rather than completing it. Since annotations only indicate readOnlyHint=false and destructiveHint=false, the description adds critical side-effect and workflow information that an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no filler. It front-loads the core purpose, then adds the critical side effect, then explains the required follow-up action. Every sentence earns its place and no information is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a staged-mutation tool with no output schema, the description covers the essential context: it states the side effect, the return value, and the exact next step the agent must take. Combined with a fully described input schema and relevant annotations, an agent has enough information to invoke the tool correctly and handle the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage, including descriptions for domain, authCode, sessionKey, and registrantInfo. The description does not add parameter-level detail, but it also does not need to. With full schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Stage transfer of a domain from another registrar to OSIR.' It clearly conveys this is a two-phase operation that returns an actionId and defers completion to executeConfirmedAction, which helps distinguish it from siblings like initiateTransfer. However, it does not explicitly name an alternative tool for comparison, so differentiation is implicit rather than direct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: use this tool to stage a domain transfer, and after presenting the summary to the user, call executeConfirmedAction if they approve. It does not explicitly state when not to use it or name alternatives such as initiateTransfer or getTransferQuote, but the action-flow guidance is enough for an agent to know the intended sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unlockDomainA
DestructiveIdempotent
Inspect

unlockDomain: Stage removal of registrar lock from a domain to allow transfers. DESTRUCTIVE: reduces domain security. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to unlock, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description warns that the operation 'reduces domain security,' and discloses that the tool only stages the action rather than immediately applying it. It also describes the returned actionId and the required confirmation flow through executeConfirmedAction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that front-load the destructive nature and purpose, then give the exact follow-up steps. No unnecessary words are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and simple parameters, the description supplies the key runtime information: the action is destructive, staged, returns an actionId, and requires user approval before executing. This fully equips an agent to handle the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already fully documented. The description does not add new detail about the domain or sessionKey parameters beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb and resource: 'Stage removal of registrar lock from a domain to allow transfers.' It clearly distinguishes unlockDomain from the sibling lockDomain by describing the opposite action and its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use clear: unlock a domain when preparing it for transfer. It also instructs the agent to present the returned summary and wait for approval before calling executeConfirmedAction, though it does not explicitly contrast this tool with alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateContactA
Idempotent
Inspect

updateContact: Update an existing contact's information. Requires authentication. Only the fields you provide are changed; omitted fields keep their current values. Get the contactId from listContacts. Returns the updated contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoNew city name.
emailNoNew email address.
phoneNoNew phone number in '+CC.number' format, e.g. '+1.5551234567'.
stateNoNew state, province, or region.
countryNoNew country as a 2-letter ISO 3166-1 alpha-2 code, e.g. 'US'.
street1NoNew first street address line.
street2NoNew second street address line.
lastNameNoNew last name.
contactIdYesIdentifier of the contact to update, as returned by listContacts.
firstNameNoNew first name.
postalCodeNoNew postal or ZIP code.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
organizationNoNew organization or company name.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description discloses important behavioral traits: authentication is required, only provided fields change while omitted fields retain values, and the updated contact is returned. This partial-update semantics adds value beyond what annotations alone convey. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four concise sentences with no redundancy. The action is front-loaded ('Update an existing contact's information'), followed by essential context: authentication, partial-update semantics, how to get the ID, and the return value. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters but full schema coverage, the description does not need to enumerate parameters. It provides critical workflow context (authentication, ID source, partial-update behavior, return value) and is nearly complete. Slightly lacking is explicit guidance on error scenarios or exact return format, but the absence of an output schema is mitigated by stating 'Returns the updated contact'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying the update behavior: 'Only the fields you provide are changed; omitted fields keep their current values.' This explains that all fields except contactId are effectively optional and that omission means no change. It also reinforces the source of contactId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Update an existing contact's information.' It clearly distinguishes this tool from siblings like createContact, deleteContact, and listContacts by emphasizing 'existing' and referencing the source of contactId. The purpose is unambiguous and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: it updates an existing contact, requires authentication, and instructs the agent to obtain contactId from listContacts. It does not explicitly name alternatives or say when not to use it, but the 'existing' framing and workflow implicitly separate it from create/delete operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateDnsRecordA
Idempotent
Inspect

updateDnsRecord: Update an existing DNS record. Requires authentication. Only the fields you provide are changed; omitted fields keep their current values. Get the recordId from listDnsRecords. Returns the updated record.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoNew time to live in seconds.
nameNoNew record name relative to the zone, e.g. 'www' or '@' for the apex.
typeNoNew record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA.
domainYesFully qualified domain name the record belongs to, e.g. 'example.com'.
contentNoNew record value, e.g. an IPv4 dotted-quad or IPv6 address, hostname, or text.
priorityNoNew priority for MX/SRV records only.
recordIdYesIdentifier of the record to update, as returned by listDnsRecords.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true, readOnlyHint=false, and destructiveHint=false, but the description adds critical behavioral detail: 'Only the fields you provide are changed; omitted fields keep their current values.' This reveals partial-update semantics that annotations cannot express. It also states the return value ('Returns the updated record') and prerequisites for recordId, adding value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences: the first states the operation, the second covers authentication and update semantics, the third covers the data dependency and return value. Every sentence earns its place, and the most important action verb appears immediately at the start.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, the description plus the fully self-documenting schema cover everything an agent needs: what to call, prerequisites (authentication, recordId from listDnsRecords), partial-update behavior, and the return shape. The annotations fill in idempotency and non-destructiveness, making the entry complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all 8 parameters, so the baseline is 3. The description goes beyond the schema by explaining the partial-update model: provided fields are changed and omitted fields retain values, which affects how an agent should build the request. It also orients the agent to source recordId from listDnsRecords, adding practical meaning to that parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Update an existing DNS record', a specific verb+resource pair that clearly distinguishes this from createDnsRecord, deleteDnsRecord, getDnsRecord, and listDnsRecords. The word 'existing' reinforces that this is a modification tool, not a creation tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear operational context: it requires authentication, performs partial updates (only provided fields change), and tells the agent to obtain recordId from listDnsRecords. It stops short of explicitly naming when not to use it (e.g., 'use createDnsRecord for new records'), so it lacks a formal exclusion but is still unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateDomainAutoRenewBInspect

updateDomainAutoRenew: Enable or disable auto-renewal for a domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name, like "example.com", without scheme.
enabledYestrue to enable automatic renewal, false to disable it.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only restates the toggling action and does not disclose side effects such as future billing implications, whether confirmation is returned, or whether an immediate charge could occur. Annotations declare readOnly=false and destructive=false but do not provide the behavioral detail needed to fully understand the mutation's consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no filler, and the core operation is front-loaded. The tool-name prefix is slightly redundant but does not meaningfully reduce clarity or conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with a fully documented schema and no nested objects, the description covers the essential operation. It omits return-value details and billing side effects, but these are less critical given the straightforward boolean toggle and high schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three parameters are already fully documented, including the domain format and sessionKey auth guidance. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Enable or disable auto-renewal') applied to a domain resource, clearly differentiating it from sibling tools like renewDomain or updateDomainPrivacy. The scope is unambiguous and the verb-resource pairing is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as renewDomain, nor any prerequisites like domain ownership, registration status, or whether the domain must currently be under management. The only implied usage comes from the term 'auto-renewal', leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateDomainPrivacyAInspect

updateDomainPrivacy: Enable or disable WHOIS privacy protection for a domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name, like "example.com", without scheme.
enabledYestrue to enable WHOIS privacy protection, false to disable it.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful meaning by naming the exact behavior, toggling WHOIS privacy protection, which is beyond the annotation booleans. However, it does not mention prerequisites, OAuth/session authorization nuance, or whether changes take effect immediately; the annotations only provide basic safety signals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence that states the action and target without unnecessary elaboration. The redundant tool-name prefix is minor and does not detract from the overall clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-required-parameter toggle with a fully described schema and no nested objects, the description is complete enough for an agent to understand the operation. There is no output schema to document, so the absence of return-value details is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to explain parameters. It adds no parameter-level detail beyond the schema, which matches the baseline score for a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb pair, "Enable or disable", with a clear resource: "WHOIS privacy protection" for a domain. This is precise and distinguishes it from related sibling tools like lockDomain or updateDomainAutoRenew, which address different domain settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly communicates when to use the tool: whenever WHOIS privacy needs to be enabled or disabled for a domain. It does not explicitly name alternatives or exclusions, but no sibling tool targets WHOIS privacy, so the usage context is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateNameserversAInspect

updateNameservers: Update nameservers for a domain. Replaces the current nameserver set with the given list.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name, like "example.com", without scheme.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.
nameserversYesList of nameserver hostnames, e.g. ["ns1.example.com", "ns2.example.com"].

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key behavioral trait beyond the annotations: the operation replaces the entire current nameserver set rather than adding to it. This is important side-effect information for an agent. The annotations already cover read-only and destructive hints, so the description's additional replacement detail earns a solid score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The verb and resource are front-loaded, and the critical replacement behavior is stated immediately after. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward mutation tool with a fully documented schema and annotations, the description is largely complete. It would benefit from a brief note on prerequisites or a pointer to related tools like updateDnsRecord, but nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with good coverage, so the baseline is 3. The description adds real value above the schema by clarifying the nameservers parameter is not additive—it replaces the existing set. This prevents a common misinterpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation: 'Update nameservers for a domain' and adds specificity with 'Replaces the current nameserver set with the given list.' It is not a tautology, and it conveys the exact resource and behavior. However, it does not explicitly differentiate itself from sibling tools like updateDnsRecord, where confusion could arise between domain nameservers and DNS records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: use this when you need to update the nameserver set for a domain. The replacement semantics further clarify the intended use. However, there are no explicit exclusions or comparisons to alternatives such as updateDnsRecord, which could help an agent decide between these related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validateDomainNameA
Read-onlyIdempotent
Inspect

validateDomainName: Validate if a domain name format is correct. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully qualified domain name to validate, like "example.com", without scheme.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value beyond annotations by stating that no authentication is required, which is useful for an agent deciding whether credentials are needed before calling the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core purpose is front-loaded, and the authentication note is placed second, making the text easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter tool with a clear predicate-style purpose, so an agent can infer that the result is a validity outcome. The description supplies the crucial auth context and the input format is fully documented in the schema. It does not explicitly state the return value shape, but the task is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains that 'domain' should be a fully qualified domain name without a scheme. The description adds little beyond the word 'format', so it does not significantly enrich parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb and resource: 'Validate if a domain name format is correct.' It also separates this from sibling tools like checkDomainAvailability by explicitly limiting scope to format, not availability. The 'No authentication required' note adds a distinguishing operational fact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool when you need to verify that a domain name's format is syntactically correct, without checking availability or other properties. It does not explicitly name alternatives or exclusions, but the format-specific wording prevents confusion with checkDomainAvailability and similar siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verifyAccountA
Idempotent
Inspect

verifyAccount: Verify a newly created OSIR account with the code from the verification email; step 2 of onboarding, no authentication required. The code is the same token as the email link, so the principal can relay it to their agent. On success the account becomes ACTIVE and billable actions are unlocked. If the code expired, call createAccount again with the same email to get a fresh one.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesVerification code from the email sent by createAccount.
accountIdYesAccount identifier returned by createAccount.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
nextStepsNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that success activates the account and unlocks billable actions, that the code is the same token as the email link, and what to do on expiry. These are meaningful behavioral details not captured by readOnlyHint, idempotentHint, or destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then context, then consequences, then recovery path. Every sentence adds necessary information with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers the onboarding workflow, authentication requirements, side effects, and error recovery. With an output schema present and only two well-documented parameters, nothing essential is missing for correct tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters fully, so the baseline is 3. The description adds useful semantic context by explaining that the code is the same token as the email link and can be relayed by the principal, which clarifies the relationship between code, email, and accountId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Verify a newly created OSIR account'), the required input (code from verification email), and the exact onboarding context (step 2). This distinguishes it from sibling tools like verifyMailDns without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it ('step 2 of onboarding'), notes that no authentication is required, and provides an alternative for the expired-code case ('call createAccount again with the same email'). This gives the agent clear routing and recovery guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verifyMailDnsB
Read-onlyIdempotent
Inspect

verifyMailDns: Check that a mail domain's DNS records resolve; activates the domain for email when all records are found. Returns any still-missing records. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe mail-enabled domain to verify, e.g. 'example.com'.
sessionKeyNoSession key (osk_...) returned by checkDeviceLoginStatus. Pass it on every call when logged in via the in-chat device flow; omit when connected via OAuth.

TDQS

B3.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There is a direct contradiction: the description says the tool 'activates the domain for email when all records are found,' which is a state-changing side effect, while annotations declare readOnlyHint: true. This makes the behavioral disclosure misleading despite also revealing that it returns missing records and requires authentication.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the main purpose. It wastes no words except for repeating the tool name 'verifyMailDns:' at the start, which is minor and does not materially hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description includes important context: it activates the domain, returns missing records, and requires authentication. However, it does not specify which DNS records are checked or how this relates to sibling tools like enableMailDomain and getMailDnsRecords, leaving some practical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both 'domain' and 'sessionKey' are already documented clearly in the schema. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Check that a mail domain's DNS records resolve.' It also clearly distinguishes itself from sibling tools like getMailDnsRecords and enableMailDomain by combining verification with activation, so an agent knows what this tool uniquely does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need to verify DNS records and activate the domain once records are found. However, it does not explicitly name alternatives or state when not to use it, leaving the routing decision somewhat to inference.

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. Dates show when Glama detected each change.

  1. 1 tool update
    • ChangedosirAppMoveToOwned3 fields changed
      • addedInput schema / properties / instanceId
        Added value: +{
        +  "description": "Id of a VPS the user ALREADY owns, from listMyVpsInstances. Given this, the app is attached to that server and nothing is ordered or charged. Never invent one.",
        +  "type": "string"
        +}
      • changedInput schema / properties / packageId / description
        Previous value: -"VPS package id from listVpsPackages."New value: +"VPS package id from listVpsPackages. Required ONLY when a server has to be ordered; omit it when passing instanceId."
      • changedInput schema / required
        Previous value: -[
        -  "appName",
        -  "packageId"
        -]New value: +[
        +  "appName"
        +]
  2. 83 tool updates
    • ChangedaddPrefixToDomain5 fields changed
      • addedInput schema / properties / lang / description
        Added value: +"Language code; default \"eng\"."
      • addedInput schema / properties / maxResults / description
        Added value: +"Maximum suggestions to return; default 20."
      • addedInput schema / properties / name / description
        Added value: +"Base name to prefix, e.g. \"mycompany\"."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
      • addedInput schema / properties / vocabulary / description
        Added value: +"Prefix vocabulary: \"@prefixes\" or a custom comma-separated list."
    • ChangedaddSshKey2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"A label for the key, e.g. 'laptop'."
      • addedInput schema / properties / publicKey / description
        Added value: +"The full single-line OpenSSH public key, e.g. 'ssh-ed25519 AAAA... user@host'."
    • ChangedaddSuffixToDomain5 fields changed
      • addedInput schema / properties / lang / description
        Added value: +"Language code; default \"eng\"."
      • addedInput schema / properties / maxResults / description
        Added value: +"Maximum suggestions to return; default 20."
      • addedInput schema / properties / name / description
        Added value: +"Base name to suffix, e.g. \"mycompany\"."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
      • addedInput schema / properties / vocabulary / description
        Added value: +"Suffix vocabulary: \"@suffixes\" or a custom comma-separated list."
    • ChangedbuildVpsInstance5 fields changed
      • addedInput schema / properties / hostname / description
        Added value: +"Hostname for the rebuilt server; defaults to the instance's current hostname."
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances."
      • addedInput schema / properties / operatingSystemId / description
        Added value: +"Integer OS template id from listVpsOsTemplates, resolved with this same instanceId."
      • addedInput schema / properties / sshKeyIds / description
        Added value: +"Integer SSH key ids from listMySshKeys, injected during install; without one you may not be able to log in."
      • addedInput schema / properties / swap / description
        Added value: +"Swap size: 256, 512, or 768 (MB), or 1, 1.5, 2, 3, 4, 5, 6, or 8 (GB)."
    • ChangedbulkDomainSuggestions4 fields changed
      • addedInput schema / properties / keywords / description
        Added value: +"1-10 keywords describing the project."
      • addedInput schema / properties / lang / description
        Added value: +"Language code; default \"eng\"."
      • addedInput schema / properties / maxResults / description
        Added value: +"Maximum suggestions per keyword; default 20."
      • addedInput schema / properties / tlds / description
        Added value: +"1-6 TLDs without leading dots (use \"tech\", not \".tech\"), chosen from listCategorizedTlds."
    • ChangedcancelTransfer1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name whose pending transfer to cancel, e.g. 'example.com'."
    • ChangedchangeVpsPaymentTerm2 fields changed
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances."
      • addedInput schema / properties / paymentTerm / description
        Added value: +"New billing cycle: 'MONTHLY', 'SEMI_ANNUAL', 'ANNUAL', 'BIENNIAL', or 'TRIENNIAL'."
    • ChangedcheckDeviceLoginStatus2 fields changed
      • addedInput schema / properties / deviceCode / description
        Added value: +"The device_code value returned by loginWithDevice."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "expiresIn": {
        +      "type": "integer"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "sessionKey": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "tokenType": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedcheckDomainAvailability2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to check, like \"example.com\", without scheme."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "isPremium": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedcheckHostAvailability1 field changed
      • addedInput schema / properties / hostname / description
        Added value: +"Fully qualified host name to check, e.g. 'ns1.example.com'."
    • ChangedcheckKeywordAvailability3 fields changed
      • addedInput schema / properties / keyword / description
        Added value: +"Keyword to check, without a TLD, e.g. \"example\"."
      • addedInput schema / properties / registries / description
        Added value: +"Comma-separated registry filter, e.g. \"verisign,pir,id,centralnic\"."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
    • ChangedcheckKeywordAvailabilitySummary3 fields changed
      • addedInput schema / properties / keyword / description
        Added value: +"Keyword to check, without a TLD, e.g. \"example\"."
      • addedInput schema / properties / registries / description
        Added value: +"Comma-separated registry filter, e.g. \"verisign,pir\"."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
    • ChangedcreateAccount10 fields changed
      • addedInput schema / properties / acceptedTerms / description
        Added value: +"Must be true; requires the principal's actual consent to the OSIR terms of service."
      • addedInput schema / properties / accountType / description
        Added value: +"Account type: INDIVIDUAL or ORGANIZATION."
      • addedInput schema / properties / agentName / description
        Added value: +"Name of the AI agent acting for the principal, recorded for the audit trail."
      • addedInput schema / properties / agentVendor / description
        Added value: +"Vendor of the AI agent acting for the principal, recorded for the audit trail."
      • addedInput schema / properties / contact / description
        Added value: +"The principal's real ICANN registrant contact (firstName, lastName, email, phone, street1, city, country), never the AI agent itself."
      • addedInput schema / properties / email / description
        Added value: +"Account login email; valid mailbox that receives the verification code."
      • addedInput schema / properties / password / description
        Added value: +"Optional account password; if omitted the account is agent-managed until a password is set."
      • addedInput schema / properties / principalReference / description
        Added value: +"Principal's own reference identifying who the agent acted for, recorded for the audit trail."
      • addedInput schema / properties / termsVersion / description
        Added value: +"Version of the OSIR terms the principal accepted, e.g. '2026-09'."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "accountId": {
        +      "type": "string"
        +    },
        +    "contactId": {
        +      "type": "string"
        +    },
        +    "nextSteps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "verification": {
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedcreateContact11 fields changed
      • addedInput schema / properties / city / description
        Added value: +"City name."
      • addedInput schema / properties / country / description
        Added value: +"Country as a 2-letter ISO 3166-1 alpha-2 code, e.g. 'US'."
      • addedInput schema / properties / email / description
        Added value: +"Contact's email address."
      • addedInput schema / properties / firstName / description
        Added value: +"Contact's first name."
      • addedInput schema / properties / lastName / description
        Added value: +"Contact's last name."
      • addedInput schema / properties / organization / description
        Added value: +"Organization or company name, if any."
      • addedInput schema / properties / phone / description
        Added value: +"Phone number in '+CC.number' format, e.g. '+1.5551234567'."
      • addedInput schema / properties / postalCode / description
        Added value: +"Postal or ZIP code."
      • addedInput schema / properties / state / description
        Added value: +"State, province, or region, if applicable."
      • addedInput schema / properties / street1 / description
        Added value: +"First street address line."
      • addedInput schema / properties / street2 / description
        Added value: +"Second street address line, if needed."
    • ChangedcreateDnsRecord6 fields changed
      • addedInput schema / properties / content / description
        Added value: +"Record value, e.g. an IPv4 dotted-quad or IPv6 address for A/AAAA, a hostname for CNAME/MX/NS, or text for TXT."
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name the record belongs to, e.g. 'example.com'."
      • addedInput schema / properties / name / description
        Added value: +"Record name relative to the zone, e.g. 'www', 'mail', or '@' for the apex."
      • addedInput schema / properties / priority / description
        Added value: +"Priority for MX/SRV records only; defaults to 0 when omitted."
      • addedInput schema / properties / ttl / description
        Added value: +"Time to live in seconds; defaults to 3600 when omitted."
      • addedInput schema / properties / type / description
        Added value: +"Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA."
    • ChangedcreateHost2 fields changed
      • addedInput schema / properties / hostname / description
        Added value: +"Fully qualified host name to create, e.g. 'ns1.example.com'."
      • addedInput schema / properties / ipAddresses / description
        Added value: +"IP addresses for the host, IPv4 dotted-quad or IPv6, e.g. ['192.0.2.1', '198.51.100.1']."
    • ChangedcreateMailbox4 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"An ACTIVE mail-enabled domain from listMailDomains."
      • addedInput schema / properties / localPart / description
        Added value: +"The part of the address before the @; the full mailbox address becomes 'localPart@domain', e.g. 'user@example.com'."
      • addedInput schema / properties / packageId / description
        Added value: +"Mailbox plan id from listMailPlans; there is no default."
      • addedInput schema / properties / term / description
        Added value: +"Payment term: 'MONTHLY' or 'ANNUAL' (default ANNUAL)."
    • ChangedcreatePaymentSession2 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Amount to add to the balance, in the account currency as a decimal (e.g. 25.00)."
      • addedInput schema / properties / currency / description
        Added value: +"3-letter ISO 4217 currency code, default USD."
    • ChangeddeleteContact1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"Identifier of the contact to delete, as returned by listContacts."
    • ChangeddeleteDnsRecord2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name the record belongs to, e.g. 'example.com'."
      • addedInput schema / properties / recordId / description
        Added value: +"Identifier of the record to delete, as returned by listDnsRecords."
    • ChangeddeleteHost1 field changed
      • addedInput schema / properties / hostname / description
        Added value: +"Fully qualified host name to delete, e.g. 'ns1.example.com'."
    • ChangeddeleteMailbox1 field changed
      • addedInput schema / properties / mailboxId / description
        Added value: +"Mailbox id from listMailboxes."
    • ChangeddeleteSshKey1 field changed
      • addedInput schema / properties / keyId / description
        Added value: +"Integer key id from listMySshKeys."
    • ChangeddeleteVpsInstance1 field changed
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances."
    • ChangedenableMailDomain4 fields changed
      • addedInput schema / properties / dnsMode / description
        Added value: +"'PDNS_AUTO' (default) publishes all mail DNS records automatically; the domain must use our nameservers. 'EXTERNAL_MANUAL' returns the DNS records for you to publish at your DNS provider, and the domain stays PENDING_DNS until verifyMailDns succeeds."
      • addedInput schema / properties / domain / description
        Added value: +"The domain to enable email hosting on, e.g. 'example.com'."
      • addedInput schema / properties / spfMergeConfirmed / description
        Added value: +"Set true, only with the user's explicit consent, to replace a foreign SPF record."
      • addedInput schema / properties / takeoverConfirmed / description
        Added value: +"Set true, only with the user's explicit consent, to repoint a foreign MX record; this moves their live email."
    • ChangedexecuteConfirmedAction1 field changed
      • addedInput schema / properties / actionId / description
        Added value: +"The action UUID from the staging tool's response."
    • ChangedgenerateDomainSuggestions5 fields changed
      • addedInput schema / properties / lang / description
        Added value: +"Language code; default \"eng\"."
      • addedInput schema / properties / maxResults / description
        Added value: +"Maximum suggestions to return; default 20."
      • addedInput schema / properties / name / description
        Added value: +"Keyword or base name to build suggestions from, e.g. \"mycompany\"."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
      • addedInput schema / properties / useNumbers / description
        Added value: +"Allow digits in generated suggestions (true/false)."
    • ChangedgetAccountBalance1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "balance": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetAuthStatus1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "authenticated": {
        +      "type": "boolean"
        +    },
        +    "tokenExpiresIn": {
        +      "type": "integer"
        +    },
        +    "username": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetContact1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"Identifier of the contact to fetch, as returned by listContacts."
    • ChangedgetContactsForDomain1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name whose contacts to fetch, e.g. 'example.com'."
    • ChangedgetDnsRecord2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name the record belongs to, e.g. 'example.com'."
      • addedInput schema / properties / recordId / description
        Added value: +"Identifier of the record to fetch, as returned by listDnsRecords."
    • ChangedgetDomainAuditTrail1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to fetch the audit trail for (e.g. 'example.com')."
    • ChangedgetDomainInfo1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name, like \"example.com\", without scheme."
    • ChangedgetDomainPricing2 fields changed
      • addedInput schema / properties / extension / description
        Added value: +"Domain extension to filter by, without the leading dot (e.g. 'com', 'net', 'org')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "message": {
        +      "type": "string"
        +    },
        +    "pricing": {
        +      "items": {
        +        "properties": {
        +          "currency": {
        +            "type": "string"
        +          },
        +          "operation": {
        +            "type": "string"
        +          },
        +          "price1Year": {
        +            "type": "string"
        +          },
        +          "price2Year": {
        +            "type": "string"
        +          },
        +          "price3Year": {
        +            "type": "string"
        +          },
        +          "tld": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetHostingBundle2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to get hosting options for (e.g. 'example.com')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "domain": {
        +      "type": "string"
        +    },
        +    "nextSteps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "options": {
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetHostsForDomain1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name whose host records to list, e.g. 'example.com'."
    • ChangedgetInvoiceDetails1 field changed
      • addedInput schema / properties / invoiceId / description
        Added value: +"The identifier of the invoice to fetch, as returned by listInvoices."
    • ChangedgetMailboxQuote3 fields changed
      • addedInput schema / properties / packageId / description
        Added value: +"Mailbox plan id from listMailPlans."
      • addedInput schema / properties / term / description
        Added value: +"Payment term: 'MONTHLY' or 'ANNUAL' (default ANNUAL)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "currency": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "packageId": {
        +      "type": "string"
        +    },
        +    "packageName": {
        +      "type": "string"
        +    },
        +    "priceCents": {
        +      "type": "integer"
        +    },
        +    "quotaBytes": {
        +      "type": "integer"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "term": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetMailDnsRecords1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"A mail-enabled domain from listMailDomains, e.g. 'example.com'."
    • ChangedgetMyAuditLogs2 fields changed
      • addedInput schema / properties / page / description
        Added value: +"Zero-based page number for pagination."
      • addedInput schema / properties / size / description
        Added value: +"Number of log entries per page."
    • ChangedgetPaymentTransactions2 fields changed
      • addedInput schema / properties / page / description
        Added value: +"Zero-based page number for pagination."
      • addedInput schema / properties / size / description
        Added value: +"Number of transactions per page."
    • ChangedgetTransferQuote2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to quote, e.g. 'example.com'."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "currency": {
        +      "type": "string"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "extensionYears": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "newExpirationDate": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "transferPrice": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetTransferStatus1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name whose transfer to check, e.g. 'example.com'."
    • ChangedgetVpsInstanceDetails1 field changed
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances."
    • ChangedgetVpsPackageDetails1 field changed
      • addedInput schema / properties / packageId / description
        Added value: +"VPS package id from listVpsPackages."
    • ChangedinitializeDnsZone1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to create the zone for, e.g. 'example.com'."
    • ChangedinitiateTransfer2 fields changed
      • addedInput schema / properties / authCode / description
        Added value: +"EPP/transfer authorization code obtained from the losing registrar."
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to transfer in, e.g. 'example.com'."
    • ChangedlistCategorizedTlds5 fields changed
      • addedInput schema / properties / excludeCcTLDs / description
        Added value: +"Set true to exclude country-code and IDN TLDs."
      • addedInput schema / properties / excludePremium / description
        Added value: +"Set true only when the user explicitly asks for no premium or surprise pricing; premium-flagged TLDs still register most names at the standard price, so do not use this as a budget filter."
      • addedInput schema / properties / excludeRestricted / description
        Added value: +"Set true to exclude TLDs with registry-level registration restrictions."
      • addedInput schema / properties / maxRegisterPrice / description
        Added value: +"Maximum registration price as a decimal; TLDs priced above it are excluded."
      • addedInput schema / properties / registry / description
        Added value: +"Filter to TLDs operated by this registry name (case-insensitive exact match)."
    • ChangedlistContacts1 field changed
      • addedInput schema / properties / search / description
        Added value: +"Optional search term matched against contact name, email, or organization."
    • ChangedlistDnsRecords1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name whose records to list, e.g. 'example.com'."
    • ChangedlistInvoices3 fields changed
      • addedInput schema / properties / page / description
        Added value: +"Zero-based page number for pagination, default 0."
      • addedInput schema / properties / size / description
        Added value: +"Number of invoices per page, default 20."
      • addedInput schema / properties / status / description
        Added value: +"Filter by invoice status: DRAFT, PENDING, PAID, CANCELLED, or OVERDUE."
    • ChangedlistVpsOsTemplates3 fields changed
      • addedInput schema / properties / includeEol / description
        Added value: +"Include end-of-life templates (default false)."
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances; use to see what an existing server can be reinstalled with via buildVpsInstance."
      • addedInput schema / properties / packageId / description
        Added value: +"VPS package id from listVpsPackages; use BEFORE ordering to pick an operatingSystemId for orderVps."
    • ChangedlockDomain1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to lock, like \"example.com\", without scheme."
    • ChangedloginToVpsPanel1 field changed
      • addedInput schema / properties / instanceId / description
        Added value: +"VPS instance id from listMyVpsInstances."
    • ChangedorderVps5 fields changed
      • addedInput schema / properties / hostname / description
        Added value: +"Hostname for the new server, e.g. 'myserver.example.com'."
      • addedInput schema / properties / operatingSystemId / description
        Added value: +"Integer OS template id resolved with listVpsOsTemplates using this same packageId; omit to get a server with NO operating system installed."
      • addedInput schema / properties / packageId / description
        Added value: +"VPS package id from listVpsPackages."
      • addedInput schema / properties / paymentTerm / description
        Added value: +"Billing cycle: 'MONTHLY', 'SEMI_ANNUAL', 'ANNUAL', 'BIENNIAL', or 'TRIENNIAL'."
      • addedInput schema / properties / sshKeyIds / description
        Added value: +"Integer SSH key ids from listMySshKeys or addSshKey, injected during install; without one you cannot log in."
    • ChangedosirAppDelete1 field changed
      • addedInput schema / properties / appId / description
        Added value: +"App id from osirAppList."
    • ChangedosirAppDeploy4 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Runtime language: 'node', 'python', 'php-laravel', or 'go'; use 'node' for a plain static site."
      • addedInput schema / properties / name / description
        Added value: +"App name: lowercase letters, digits, and hyphens, e.g. 'habit-tracker'."
      • addedInput schema / properties / region / description
        Added value: +"Region: 'us' or 'al' ('al' is Albania/Tirana); defaults to the platform's home region."
      • addedInput schema / properties / uploadTicket / description
        Added value: +"Upload ticket from osirAppCreateUpload, after uploading the zipped source to its putUrl."
    • ChangedosirAppGetSource1 field changed
      • addedInput schema / properties / appName / description
        Added value: +"The deployed app's name, as shown by osirAppList."
    • ChangedosirAppLogs2 fields changed
      • addedInput schema / properties / appId / description
        Added value: +"App id from osirAppList."
      • addedInput schema / properties / tail / description
        Added value: +"Number of recent log lines to return (default 100)."
    • ChangedosirAppMoveToOwned3 fields changed
      • addedInput schema / properties / appName / description
        Added value: +"The deployed app's name, as shown by osirAppList."
      • addedInput schema / properties / domain / description
        Added value: +"Custom domain to serve the app on; DNS is bound automatically if the domain is hosted on osir.app nameservers, otherwise the result returns the IP and manual DNS instructions."
      • addedInput schema / properties / packageId / description
        Added value: +"VPS package id from listVpsPackages."
    • ChangedosirAppProvisionDatabase2 fields changed
      • addedInput schema / properties / appId / description
        Added value: +"App id from osirAppList."
      • addedInput schema / properties / engine / description
        Added value: +"Database engine; only 'postgres' (the default) is supported."
    • ChangedosirAppSetSecret3 fields changed
      • addedInput schema / properties / appId / description
        Added value: +"App id from osirAppList."
      • addedInput schema / properties / key / description
        Added value: +"Environment variable name, e.g. 'API_KEY'."
      • addedInput schema / properties / value / description
        Added value: +"The secret value; never returned or logged."
    • ChangedosirAppStatus1 field changed
      • addedInput schema / properties / appId / description
        Added value: +"App id from osirAppList or a deploy result."
    • ChangedosirSiteDesignBrief6 fields changed
      • addedInput schema / properties / audience / description
        Added value: +"Who visits the site and why."
      • addedInput schema / properties / briefJson / description
        Added value: +"Optional JSON object with extras the user provided: site_type, sections[], language (ISO code, default en), tone (warm|premium|playful|technical|minimal|bold), mood_words[] (max 5), brand{logo_url, primary_color '#RRGGBB', secondary_color, fonts[], existing_site_url, references[{url, what_you_like}] (max 3; direction only, never copied), dislikes}, content{tagline, services_or_products[{name,description,price}], about_text, contact{phone,email,address,hours,social[]}, image_urls[], testimonials[{quote,name}] (real only)}, constraints{dark_mode, animations (none|subtle|expressive), form_endpoint, legal_footer}. Ask the user rather than inventing values; skipped extras are fine."
      • addedInput schema / properties / businessName / description
        Added value: +"The business or project name."
      • addedInput schema / properties / pageJob / description
        Added value: +"The page's single job: get_contact, sell_product, book_appointment, collect_signups, inform_portfolio, or other."
      • addedInput schema / properties / primaryAction / description
        Added value: +"The one primary call to action, e.g. 'Book a table'."
      • addedInput schema / properties / whatItIs / description
        Added value: +"What the business concretely does or sells."
    • ChangedosirSitePublish4 fields changed
      • addedInput schema / properties / designContract / description
        Added value: +"Set true ONLY for pages generated via the osirSiteDesignBrief flow; additionally enforces its output contract (exactly one <h1>, self-contained, no external scripts/CSS except Google Fonts, no iframes). Never set it for a user's own site."
      • addedInput schema / properties / html / description
        Added value: +"The complete <html> document to publish (max 1 MiB)."
      • addedInput schema / properties / name / description
        Added value: +"Site name: lowercase letters, digits, and hyphens, e.g. 'bar-mediterran'."
      • addedInput schema / properties / region / description
        Added value: +"Region: 'us' or 'al' ('al' is Albania/Tirana)."
    • ChangedpayInvoice1 field changed
      • addedInput schema / properties / invoiceId / description
        Added value: +"The identifier of the outstanding invoice to pay, as returned by listInvoices."
    • ChangedpreviewPaymentFees3 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Payment amount to preview, in the account currency as a decimal (e.g. 25.00)."
      • addedInput schema / properties / currency / description
        Added value: +"3-letter ISO 4217 currency code, default USD."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "amount": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "fee": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "total": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedregisterDomain7 fields changed
      • addedInput schema / properties / autoRenew / description
        Added value: +"Enable automatic renewal; defaults to true."
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to register, like \"example.com\", without scheme."
      • addedInput schema / properties / initializeDnsZone / description
        Added value: +"Initialise the DNS zone after registration; defaults to true."
      • addedInput schema / properties / nameservers / description
        Added value: +"List of nameserver hostnames, e.g. [\"ns1.example.com\", \"ns2.example.com\"]."
      • addedInput schema / properties / privacyProtection / description
        Added value: +"Enable WHOIS privacy protection; defaults to true."
      • addedInput schema / properties / registrantInfo / description
        Added value: +"ICANN registrant contact of the domain owner: firstName, lastName, email, phone (+CC.number), and address (street, city, postalCode, country as 2-letter ISO code)."
      • addedInput schema / properties / years / description
        Added value: +"Registration period in years, 1-10."
    • ChangedrenewDomain2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to renew, like \"example.com\", without scheme."
      • addedInput schema / properties / years / description
        Added value: +"Renewal period in years, 1-10."
    • ChangedsetMailboxPassword2 fields changed
      • addedInput schema / properties / mailboxId / description
        Added value: +"Mailbox id from listMailboxes."
      • addedInput schema / properties / password / description
        Added value: +"The new mailbox password; never log or store it."
    • ChangedspinDomainWords6 fields changed
      • addedInput schema / properties / lang / description
        Added value: +"Language code; default \"eng\"."
      • addedInput schema / properties / maxResults / description
        Added value: +"Maximum suggestions to return; default 20."
      • addedInput schema / properties / name / description
        Added value: +"Comma-separated words to spin, e.g. \"pizza,restaurant\"."
      • addedInput schema / properties / position / description
        Added value: +"0-based index of the word to replace."
      • addedInput schema / properties / similarity / description
        Added value: +"Similarity threshold for replacements, 0.0-1.0."
      • addedInput schema / properties / tlds / description
        Added value: +"Comma-separated TLDs without leading dots, e.g. \"com,net\"."
    • ChangedsuggestAlternatives2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to find alternatives for, like \"example.com\", without scheme."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of suggestions to return; default 10."
    • ChangedtransferDomain3 fields changed
      • addedInput schema / properties / authCode / description
        Added value: +"EPP authorization code obtained from the current registrar."
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to transfer, like \"example.com\", without scheme."
      • addedInput schema / properties / registrantInfo / description
        Added value: +"ICANN registrant contact of the domain owner: firstName, lastName, email, phone (+CC.number), and address (street, city, postalCode, country as 2-letter ISO code)."
    • ChangedunlockDomain1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to unlock, like \"example.com\", without scheme."
    • ChangedupdateContact12 fields changed
      • addedInput schema / properties / city / description
        Added value: +"New city name."
      • addedInput schema / properties / contactId / description
        Added value: +"Identifier of the contact to update, as returned by listContacts."
      • addedInput schema / properties / country / description
        Added value: +"New country as a 2-letter ISO 3166-1 alpha-2 code, e.g. 'US'."
      • addedInput schema / properties / email / description
        Added value: +"New email address."
      • addedInput schema / properties / firstName / description
        Added value: +"New first name."
      • addedInput schema / properties / lastName / description
        Added value: +"New last name."
      • addedInput schema / properties / organization / description
        Added value: +"New organization or company name."
      • addedInput schema / properties / phone / description
        Added value: +"New phone number in '+CC.number' format, e.g. '+1.5551234567'."
      • addedInput schema / properties / postalCode / description
        Added value: +"New postal or ZIP code."
      • addedInput schema / properties / state / description
        Added value: +"New state, province, or region."
      • addedInput schema / properties / street1 / description
        Added value: +"New first street address line."
      • addedInput schema / properties / street2 / description
        Added value: +"New second street address line."
    • ChangedupdateDnsRecord7 fields changed
      • addedInput schema / properties / content / description
        Added value: +"New record value, e.g. an IPv4 dotted-quad or IPv6 address, hostname, or text."
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name the record belongs to, e.g. 'example.com'."
      • addedInput schema / properties / name / description
        Added value: +"New record name relative to the zone, e.g. 'www' or '@' for the apex."
      • addedInput schema / properties / priority / description
        Added value: +"New priority for MX/SRV records only."
      • addedInput schema / properties / recordId / description
        Added value: +"Identifier of the record to update, as returned by listDnsRecords."
      • addedInput schema / properties / ttl / description
        Added value: +"New time to live in seconds."
      • addedInput schema / properties / type / description
        Added value: +"New record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA."
    • ChangedupdateDomainAutoRenew2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name, like \"example.com\", without scheme."
      • addedInput schema / properties / enabled / description
        Added value: +"true to enable automatic renewal, false to disable it."
    • ChangedupdateDomainPrivacy2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name, like \"example.com\", without scheme."
      • addedInput schema / properties / enabled / description
        Added value: +"true to enable WHOIS privacy protection, false to disable it."
    • ChangedupdateNameservers2 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name, like \"example.com\", without scheme."
      • addedInput schema / properties / nameservers / description
        Added value: +"List of nameserver hostnames, e.g. [\"ns1.example.com\", \"ns2.example.com\"]."
    • ChangedvalidateDomainName1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"Fully qualified domain name to validate, like \"example.com\", without scheme."
    • ChangedverifyAccount3 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Account identifier returned by createAccount."
      • addedInput schema / properties / code / description
        Added value: +"Verification code from the email sent by createAccount."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "nextSteps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedverifyMailDns1 field changed
      • addedInput schema / properties / domain / description
        Added value: +"The mail-enabled domain to verify, e.g. 'example.com'."
  3. 105 tool updates
    • First observedaddPrefixToDomain
    • First observedaddSshKey
    • First observedaddSuffixToDomain
    • First observedbuildVpsInstance
    • First observedbulkDomainSuggestions
    • First observedcancelTransfer
    • First observedchangeVpsPaymentTerm
    • First observedcheckDeviceLoginStatus
    • First observedcheckDomainAvailability
    • First observedcheckHostAvailability
    • First observedcheckKeywordAvailability
    • First observedcheckKeywordAvailabilitySummary
    • First observedcountMyVpsInstances
    • First observedcreateAccount
    • First observedcreateContact
    • First observedcreateDnsRecord
    • First observedcreateHost
    • First observedcreateMailbox
    • First observedcreatePaymentSession
    • First observeddeleteContact
    • First observeddeleteDnsRecord
    • First observeddeleteHost
    • First observeddeleteMailbox
    • First observeddeleteSshKey
    • First observeddeleteVpsInstance
    • First observedenableMailDomain
    • First observedexecuteConfirmedAction
    • First observedgenerateDomainSuggestions
    • First observedgetAccountBalance
    • First observedgetAccountSummary
    • First observedgetAuthStatus
    • First observedgetContact
    • First observedgetContactsForDomain
    • First observedgetDedicatedServerCatalog
    • First observedgetDnsRecord
    • First observedgetDomainAuditTrail
    • First observedgetDomainExtensions
    • First observedgetDomainInfo
    • First observedgetDomainPricing
    • First observedgetHostingBundle
    • First observedgetHostsForDomain
    • First observedgetInvoiceDetails
    • First observedgetInvoiceStatistics
    • First observedgetMailboxQuote
    • First observedgetMailboxUsage
    • First observedgetMailDnsRecords
    • First observedgetMyAuditLogs
    • First observedgetMyProfile
    • First observedgetPaymentTransactions
    • First observedgetProductCatalog
    • First observedgetRecentActivity
    • First observedgetTransferQuote
    • First observedgetTransferStatus
    • First observedgetVpsInstanceDetails
    • First observedgetVpsPackageDetails
    • First observedinitializeDnsZone
    • First observedinitiateTransfer
    • First observedlistCategorizedTlds
    • First observedlistContacts
    • First observedlistDnsRecords
    • First observedlistInvoices
    • First observedlistMailboxes
    • First observedlistMailDomains
    • First observedlistMailPlans
    • First observedlistMySshKeys
    • First observedlistMyVpsInstances
    • First observedlistPendingTransfers
    • First observedlistUserDomains
    • First observedlistVpsLocations
    • First observedlistVpsOsTemplates
    • First observedlistVpsPackages
    • First observedlockDomain
    • First observedloginToVpsPanel
    • First observedloginWithDevice
    • First observedlogout
    • First observedorderVps
    • First observedosirAppCreateUpload
    • First observedosirAppDelete
    • First observedosirAppDeploy
    • First observedosirAppGetSource
    • First observedosirAppList
    • First observedosirAppLogs
    • First observedosirAppMoveToOwned
    • First observedosirAppProvisionDatabase
    • First observedosirAppSetSecret
    • First observedosirAppStatus
    • First observedosirSiteDesignBrief
    • First observedosirSitePublish
    • First observedpayInvoice
    • First observedpreviewPaymentFees
    • First observedregisterDomain
    • First observedrenewDomain
    • First observedsetMailboxPassword
    • First observedspinDomainWords
    • First observedsuggestAlternatives
    • First observedtransferDomain
    • First observedunlockDomain
    • First observedupdateContact
    • First observedupdateDnsRecord
    • First observedupdateDomainAutoRenew
    • First observedupdateDomainPrivacy
    • First observedupdateNameservers
    • First observedvalidateDomainName
    • First observedverifyAccount
    • First observedverifyMailDns

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides comprehensive tools for real-time DNS queries across 53 record types, global propagation checks, and SSL certificate analysis. It also enables domain security scans for SPF/DKIM/DMARC configurations and HTTP uptime monitoring.
    8
    88
    22
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    Enables interaction with the NameSilo Domain API through 67 tools for domain registration, transfers, DNS management, contacts, privacy, forwarding, email, portfolios, account funds, marketplace, and auctions.
    67
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables comprehensive domain and DNS management through the Porkbun API, including domain registration checks, DNS record operations, URL forwarding, DNSSEC configuration, and SSL certificate management. Provides 27 tools for complete domain administration through natural language interactions.
    3
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Provides a comprehensive suite of SEO and web utility tools for domain analysis, keyword tracking, SERP data, and technical site audits. It enables users to perform various tasks such as checking domain age, WHOIS information, and website technology stacks.
    34
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.6/5.0
Disambiguation3/5

Most tools target distinct resource-action pairs, but there are several overlapping clusters: six domain-suggestion tools (addPrefixToDomain, addSuffixToDomain, generateDomainSuggestions, bulkDomainSuggestions, spinDomainWords, suggestAlternatives) and overlapping account-info tools (getMyProfile, getAccountSummary, getRecentActivity, getMyAuditLogs). Descriptions help, but with 105 tools an agent will regularly face near-identical choices.

Naming Consistency4/5

The dominant convention is verbNoun camelCase (createContact, listDnsRecords, updateNameservers), which is readable and predictable. Deviations exist in the osirApp* and osirSite* families, where the noun precedes the verb, and a few names like suggestAlternatives and spinDomainWords break the pattern.

Tool Count1/5

105 tools is far beyond a coherent MCP server surface; even if the platform genuinely spans domains, DNS, email, VPS, billing, and app hosting, this should be split into focused servers. Many tools are single-purpose getters that add selection overhead rather than earning their place as one integrated set.

Completeness4/5

The covered services have broad CRUD/lifecycle coverage: contacts, DNS, hosts, domains, email, VPS, SSH keys, invoices, and Osir apps all have create/read/update/delete paths. Some registrar-specific operations (e.g., contact reassignment after registration, domain deletion/redemption) are missing, and the sheer sprawl makes coverage hard to verify.