Skip to main content
Glama

Ringkit

Server Details

Cheapest AI virtual assistant for your business line: $1.99/mo per number, then pay only for usage.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3.2/5.0

Scored across 51 tools

Disambiguation3/5

Most tools have distinct purposes and the Step N labels help sequence them, but there are several overlapping knowledge-ingestion paths (import_knowledge, start_knowledge_import, put/patch_knowledge, upload_knowledge_document, setup chat) and multiple call-testing/verification tools (simulate_call, test_call, verify_destination, confirm_destination). Descriptions clarify these, but an agent still faces real selection risk across 51 tools.

Naming Consistency4/5

The set overwhelmingly follows a consistent ringkit_verb_noun snake_case pattern, with predictable get/list/create/update/put/patch/delete prefixes. Minor deviations like ringkit_whoami and ringkit_top_up keep it from perfect consistency, but names are highly readable.

Tool Count2/5

At 51 tools, the surface is far larger than a typical MCP server and is heavy for an agent to navigate reliably. The broad telephony/onboarding domain justifies many operations, but several advanced/admin capabilities and overlapping knowledge paths could be consolidated.

Completeness4/5

Core lifecycle coverage is strong: business setup, onboarding, knowledge, numbers, routing, calls, wallet, API keys, and webhooks are all represented. Minor gaps remain, such as webhook update/delete, business-user removal, and knowledge-document update, though agents can work around them by recreating or revoking.

Available Tools

51 tools
ringkit_close_setup_chatA
Destructive
Inspect

Close a setup-assistant conversation (conversationId); what it saved stays saved. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.
conversationIdYesThe conversation's id (from start_setup_chat).
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and idempotentHint=false; the description usefully bounds that destruction ('what it saved stays saved') and correctly explains the non-idempotent retry behavior ('without one, each call executes again'). This adds real context beyond the annotation flags rather than repeating them.

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-loaded with the action and immediate with the state/idempotency caveats. Slightly telegraphic phrasing ('close ... (conversationId)') but no wasted wording.

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 3-parameter mutation with no output schema, the description covers purpose, persistence, and retry semantics. It omits what a successful close returns and the behavior/error when the conversation is already closed or the id does not exist.

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 businessId defaults, the conversationId format, and full idempotencyKey semantics including header precedence. The description only restates the retry-reuse rule, 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?

States a specific verb and resource: 'Close a setup-assistant conversation', with the identifier named inline. An agent can distinguish it from ringkit_get_setup_chat, send_setup_chat and start_setup_chat by the verb alone, 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 Guidelines3/5

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

Usage is implied by the verb and by the note that saved state persists, which tells the caller closing is safe once setup is done. There is no explicit 'use this when... instead of get_setup_chat / send_setup_chat' routing, and no mention of what happens if the conversation is already closed.

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

ringkit_complete_onboardingB
Destructive
Inspect

Step 12: Hand it to the owner. Mark first-run setup finished (the business has a number, or the owner chose to do it later) so the dashboard stops nudging. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

B3.4/5.0
Behavior3/5

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

The description adds real context beyond annotations: it explains the side effect (dashboard stops nudging) and the retry/idempotency behavior (each call re-executes without a key), which aligns with idempotentHint=false. It does not explain why destructiveHint=true applies or whether the completion state can be reverted, so the destructive profile the annotations declare is left unaddressed.

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 with the step and verb front-loaded and no filler. "Hand it to the owner" is slightly idiomatic but adds human framing to the terminal action.

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?

With no output schema and zero required parameters, the description covers the main behavior but omits what the agent gets back, what happens to the onboarding state on repeated calls, and why the call is flagged destructive. Enough to invoke correctly, not enough to invoke confidently.

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 both businessId and idempotencyKey are already documented in the schema, and the description's note about reusing an idempotencyKey on retry largely restates that. No additional format or defaulting detail beyond the schema is provided, 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?

"Mark first-run setup finished" names a specific verb and resource (onboarding completion state) and frames it as the final step ("Step 12"). It is clearly distinct from siblings like ringkit_get_onboarding or ringkit_start_setup_chat, though it never names an alternative explicitly.

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 parenthetical "(the business has a number, or the owner chose to do it later)" gives a precondition for calling, and "Hand it to the owner" implies the terminal step of the flow. However, there is no explicit when-not guidance or reference to the sibling tools that read or restart onboarding.

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

ringkit_confirm_destinationA
Destructive
Inspect

Step 8: Place a test call. Confirm a number with the 6-digit code its verification call read (only the person who answered has it). 5 attempts per code. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
codeYes
numberYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.6/5.0
Behavior3/5

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

Adds real behavior beyond annotations: a 5-attempts-per-code limit and the fact that retries without an idempotencyKey execute the operation again, which is consistent with idempotentHint=false. However, destructiveHint=true is never explained — an agent cannot tell whether confirming consumes the number, mutates its state irreversibly, or what the 5th failed attempt triggers. With annotations already covering the safety profile, this leaves the most consequential trait undisclosed.

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 tight sentences with no filler; the lockout and idempotency rules are packed into short clauses. The opening 'Step 8: Place a test call' is the weakest part — it spends the front-loaded position on sequencing and a phrase that suggests a different sibling 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 4-parameter mutation with no output schema, the description covers the input source, the failed-attempt budget, and retry semantics, which is most of what an agent needs. Missing is any statement of what success yields (number confirmed/attached to the business) and what a rejected code or exhausted attempts returns.

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 50% (businessId and idempotencyKey are documented; code and number are only pattern-constrained). The description adds genuine meaning for `code` by explaining it is the value read by the verification call, but the idempotencyKey retry note largely repeats the schema's own wording, and `number` gets no elaboration beyond its E.164 pattern. Roughly baseline for this coverage level.

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 and resource: confirm a number using the 6-digit code that its verification call read aloud. The phrase 'its verification call' implicitly links it to ringkit_verify_destination, but the pairing is not stated outright, so the sibling distinction is inferred rather than declared. The leading 'Step 8: Place a test call' framing is slightly at odds with a confirmation action and brushes against the separate ringkit_test_call sibling.

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 situational context: use it once the verification call has been answered and the recipient has the code, with the caveat that only the answering party possesses it. It also gives retry guidance (reuse idempotencyKey) and a lockout rule (5 attempts per code). It stops short of naming ringkit_verify_destination as the prerequisite step or saying what to do after the attempt budget is exhausted.

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

ringkit_create_api_keyA
Idempotent
Inspect

Step 11: Manage API keys. Create an API key: scope manage (acts as owner) or read (read-only tools / GET only). The plaintext apiKey is in this result once and never again. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
nameNoAPI key
scopeNomanage
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description adds material facts those annotations cannot express: the plaintext apiKey is returned exactly once and never again, and identical requests are deduplicated for 24 hours. Both are consequential, non-obvious behaviors an agent must know before calling.

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 tight sentences, each carrying a distinct fact (action, scope semantics, secret-once plus dedup). The "Step 11: Manage API keys." prefix is slightly noisy but does situate the tool in a workflow.

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 still tells the agent that the plaintext key appears in the result, which is the critical return-value fact. For a 4-parameter, zero-required mutation tool it is close to complete, missing only permission prerequisites and the rest of the response shape.

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 50%, with name and scope undocumented in the schema; the description compensates by defining what manage and read actually authorize. It also reinforces the idempotencyKey contract (reuse on retry, new value to deliberately repeat), leaving only the name parameter unaddressed.

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 gives a specific verb and resource ("Create an API key") and immediately qualifies the two modes it can be created in. It is clearly distinct from the list/revoke siblings by naming the creation action, though it never names those siblings explicitly.

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 gives real decision guidance on the scope choice (manage acts as owner vs read for read-only/GET-only) and on when to reuse versus replace an idempotencyKey. It says nothing about when to use this tool versus ringkit_list_api_keys or ringkit_revoke_api_key, so tool-selection guidance is only implied by the name.

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

ringkit_create_businessA
Idempotent
Inspect

Step 1: Create the business. Create a RingKit business (pay-per-minute AI phone receptionist) and its first API key, returned once. No auth needed: this is how an agent starts. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
nameYes
notifyNo
websiteNo
timezoneYes
verticalNo
ownerEmailYes
ownerPhoneNo
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavior: the API key is returned exactly once (unrecoverable later) and identical requests are deduplicated for 24 hours. It does not say whether business creation is reversible or what an error/duplicate returns, so it stops short of full disclosure.

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 tight sentences with no filler, and the workflow position and no-auth fact are front-loaded. The opening 'Create the business.' mildly duplicates the following sentence, a small redundancy in an otherwise efficient block.

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 an 8-parameter creation tool with no output schema, the description covers the starting-point context and idempotency but not the return payload beyond the API key — notably it never mentions that a business ID comes back, which the agent needs for subsequent sibling calls. Required-field expectations (timezone format, notify destinations) are also unaddressed.

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

Parameters2/5

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

Schema description coverage is 13% — only idempotencyKey is documented in the schema, and the description largely restates that same idempotency guidance rather than adding to it. The seven other parameters (name, timezone, ownerEmail, ownerPhone, notify, website, vertical), including all three required ones, get no explanation of format, expectations, or effect, and the description does not compensate for that coverage gap.

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 concrete verb and resource ('Create a RingKit business') plus an important secondary effect ('and its first API key, returned once'). The parenthetical gloss ('pay-per-minute AI phone receptionist') tells an agent what a business is, and the 'first API key' qualifier distinguishes it from the sibling ringkit_create_api_key.

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' plus 'No auth needed: this is how an agent starts' clearly signals this is the entry point of the flow, which is genuine when-to-use guidance. It never names an explicit exclusion or points to the follow-on tools (ringkit_create_api_key, ringkit_complete_onboarding), so routing beyond the first step is left implicit.

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

ringkit_create_webhookA
Idempotent
Inspect

Step 10: Get told about calls. Subscribe a URL to call.completed / message.taken / balance.low events (HMAC-signed with the returned secret, shown once). Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
urlYes
eventsYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.9/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: the payload is HMAC-signed with a returned secret that is shown only once (an undeniably important, irreversible consequence), identical requests are deduplicated for 24 hours, and idempotency-key reuse semantics are spelled out. This goes well past idempotentHint/openWorldHint and gives the agent what it needs to warn about the one-time secret.

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 dense sentences, front-loaded with the action, then the security/dedup caveats. The 'Step 10: Get told about calls' opener is the only soft sentence, reading as workflow narration rather than tool specification.

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, open-world creation tool with no output schema, the description covers the essentials: what is created, which events, the one-time secret, and dedup behavior. It stops short of describing the response body or what happens on an invalid/unreachable URL, but nothing critical for correct invocation 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?

With only 50% schema description coverage, the description must compensate: it enumerates the allowed event types and explains the idempotencyKey repeat-vs-retry distinction. It says nothing about URL constraints (e.g., must be a reachable HTTPS endpoint) or that businessId defaults to the API key's business, leaving half the surface to the schema alone.

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 concrete verb and resource: 'Subscribe a URL to call.completed / message.taken / balance.low events,' which clearly marks this as webhook creation and separates it from ringkit_list_webhooks. The 'Step 10: Get told about calls' lead-in is onboarding-flavored rather than a clean statement of purpose, but the substantive sentence 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 Guidelines3/5

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

Usage is implied through the 'Step 10' framing and the note that a new idempotencyKey should be used 'only to deliberately repeat the action,' which is real guidance on a parameter. However, the description never says when to create a webhook versus querying existing ones with ringkit_list_webhooks, nor does it state prerequisites such as needing a valid business or verified endpoint.

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

ringkit_delete_knowledge_documentA
Destructive
Inspect

Delete an uploaded knowledge document (by documentId); the receptionist stops using it on the next call. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.
documentIdYesThe document's id (from list_knowledge_documents).
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4/5.0
Behavior4/5

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

Annotations already supply destructiveHint=true and idempotentHint=false; the description goes beyond them by explaining the propagation delay and the retry model, and its 'without one, each call executes again' is consistent with idempotentHint=false rather than contradicting it. It stops short of stating that deletion is irreversible or what happens if documentId is already gone, which is the remaining behavioral gap for a destructive 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?

Two tight sentences with no filler: the action and its effect come first, and the retry caveat follows. Every clause carries information an agent needs before calling a destructive endpoint.

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 three-parameter destructive mutation with full schema coverage and rich annotations, the description covers action, effect timing, and retry safety, which is enough to call it correctly. Missing only failure-mode detail, such as behavior when the document does not exist, which is secondary given the annotated destructiveness.

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 both the documentId source (list_knowledge_documents) and the idempotencyKey semantics are already documented in the schema. The description restates the idempotencyKey retry rule in condensed form, adding little beyond what the schema and annotations already establish, 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?

States a specific verb and resource ('Delete an uploaded knowledge document') plus the keying parameter (documentId), which cleanly separates it from get_knowledge_document, list_knowledge_documents, and patch_knowledge. It also names the observable outcome ('the receptionist stops using it on the next call'), so the agent knows what the deletion changes.

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 retry rule ('Reuse an idempotencyKey when retrying') is actionable operational guidance, and the timing note tells the agent the effect is deferred rather than immediate. However, it never addresses the choice among siblings — e.g. deleting a document versus patch_knowledge or set_knowledge_tier — so alternative selection is left to inference.

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

ringkit_get_auto_refillB
Read-onlyIdempotent
Inspect

Read the auto-refill settings (enabled, threshold, amount) and whether a card is saved.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

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, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description's added value is disclosing what is returned (settings plus saved-card status), which matters because there is no output schema, but it says nothing about permission requirements or behavior when no card or no settings 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?

One front-loaded sentence that names the resource first and the returned fields second, with no filler or 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 read-only tool with one optional identifier parameter and no output schema, the description covers the essential gap by listing what is returned. It falls short of full completeness only in omitting any note about the empty/not-configured state or tenant scoping.

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?

There is a single optional businessId whose schema description already explains the API-key default and the biz_ pattern, at 100% coverage. The description adds nothing about scoping or defaults, so the schema does the work and 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 a specific verb ("Read") with a named resource ("auto-refill settings") and enumerates the returned fields (enabled, threshold, amount, card saved). The read counterpart to the sibling ringkit_put_auto_refill is clear from naming, though the description itself never names that sibling.

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 explicit when-to-use statement, no prerequisites, and no mention of the alternative ringkit_put_auto_refill for changes. The only guidance is implicit in the verb "Read", leaving the agent to infer the read-versus-write split from tool names alone.

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

ringkit_get_businessB
Read-onlyIdempotent
Inspect

Step 12: Hand it to the owner. Read the business: profile, voice, status, how it was created (createdVia) and whether a human owner has signed in (ownerSignedInAt).

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

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, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value by naming the data an agent will get back (createdVia, ownerSignedInAt), but says nothing about behavior when the business is missing or about permission requirements.

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

Conciseness3/5

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

The second sentence is dense and front-loads the useful field list. However, the leading "Step 12: Hand it to the owner" is ambiguous procedural noise that does not earn its place and could confuse an agent about what action is expected.

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?

There is no output schema, so the description carries the burden of describing return values, and it does so by enumerating the main fields. For a one-parameter read tool this is nearly complete, with only error/absence behavior left unspecified.

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 single businessId parameter is already documented as defaulting to the API key's business. The description adds no format, fallback, or scoping detail 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?

The description uses a specific verb and resource ("Read the business") and enumerates the fields returned: profile, voice, status, createdVia and ownerSignedInAt. This clearly separates it from ringkit_update_business (a mutation) and ringkit_whoami, though it never names those siblings explicitly.

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?

Usage is only implied via the "Step 12: Hand it to the owner" framing, which suggests a place in a setup sequence. There is no explicit when-to-use guidance, no prerequisites, and no routing away from alternatives such as ringkit_list_business_users or ringkit_get_onboarding.

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

ringkit_get_callC
Read-onlyIdempotent
Inspect

Step 9: Watch the calls. One call (callId) with its full transcript.

NameRequiredDescriptionDefault
callIdYesThe call's id (from list_calls or simulate_call).
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description contributes one genuinely new fact — the response includes the full transcript — but says nothing about auth/tenant scoping, error behavior for missing calls, or transcript availability timing.

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

Conciseness3/5

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

Two short sentences with no padding, and the key fact (full transcript for one call) lands early. But the "Step 9: Watch the calls" preamble is cryptic filler that consumes half the description without conveying usable 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?

A two-parameter read tool with full schema coverage and no output schema is simple enough that not much is required, and the transcript mention covers the return shape at a high level. The unexplained "Step 9" workflow reference and the absence of any guidance on call lifecycle state leave the definition only minimally 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%, with both callId and businessId documented in-schema including their patterns and the businessId default. The description only restates the callId selector, adding no format, sourcing, or scoping detail beyond the schema.

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

Purpose3/5

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

"One call (callId) with its full transcript" does state a specific resource (a single call) and hints at what is returned, which separates it from ringkit_list_calls. However, the leading verb is "Watch the calls" and the "Step 9" framing is opaque, so the actual retrieve-fetch action has to be inferred from the parenthetical.

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?

"Step 9" implies this sits in a sequence, but no sequence or prerequisite is defined anywhere in the description, and no alternative is named. An agent is not told when to pick this over ringkit_list_calls or ringkit_get_recording, nor what happens for an unknown or not-yet-completed callId.

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

ringkit_get_knowledgeA
Read-onlyIdempotent
Inspect

Read the knowledge profile the receptionist answers from (services, hours, FAQs, policies).

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds useful content-level context (what categories the profile contains) but says nothing about scope, freshness, or what happens when no knowledge profile exists yet — a likely case given a separate import/onboarding flow.

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 sentence, front-loaded with the verb and resource, with the parenthetical doing useful work rather than padding. Nothing to cut.

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-required-param read tool with full annotation coverage and no output schema, the description is nearly sufficient: the agent knows what it fetches and roughly what comes back. The one gap is relational — nothing says how this differs from the document-level and usage-level knowledge siblings.

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 businessId parameter has 100% schema description coverage including the API-key default, so the schema carries the meaning. The description adds nothing about the parameter; 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?

"Read the knowledge profile the receptionist answers from" gives a specific verb plus resource, and the parenthetical (services, hours, FAQs, policies) makes the payload concrete. It does not, however, distinguish it from siblings such as ringkit_get_knowledge_document, ringkit_list_knowledge_documents, or ringkit_get_knowledge_usage, so an agent must infer the boundary from names alone.

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?

Usage is implied by "the receptionist answers from" — this is the aggregated profile rather than a document — but there is no explicit when-to-use, when-not, or named alternative among the many knowledge-related siblings. An agent gets a hint about the resource's role, not routing guidance.

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

ringkit_get_knowledge_documentA
Read-onlyIdempotent
Inspect

Read one uploaded document (documentId) with its extracted sections.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.
documentIdYesThe document's id (from list_knowledge_documents).

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 and destructiveHint=false, so the safety profile is covered. The description adds value by noting the response includes extracted sections, but says nothing about auth scope, error behavior for missing documents, or size/pagination of extracted content.

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 with no filler. It is efficient, though slightly terse even for a simple read 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 two-parameter read-only tool with full schema coverage and annotations, this is close to sufficient. The main residual gap is what "extracted sections" looks like and whether the call fails for unprocessed documents.

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 businessId and documentId documented in the schema, so the schema carries the parameter burden. The description only echoes documentId, adding no semantics beyond structured data; 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 and resource ("Read one uploaded document") and notes the return includes extracted sections. It is distinguishable from list_knowledge_documents by the singular scope, though it never names siblings explicitly.

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?

Usage is only implied: fetch a single document when you have a documentId. There is no explicit when-to-use/when-not guidance or pointer to alternatives such as list_knowledge_documents or get_knowledge for retrieving knowledge content.

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

ringkit_get_knowledge_usageA
Read-onlyIdempotent
Inspect

Read the knowledge tier (starter | pro), its limits, and how many documents/tokens are used.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description's real contribution is disclosing what the call returns (tier, limits, documents/tokens used) — useful since there is no output schema. It doesn't mention freshness of the counters or whether limits are monthly, which keeps it below 5.

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 short front-loaded sentence that names the tier enum values inline and enumerates the returned facts without any 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 parameterless read with no output schema, the description covers the essential return surface (tier, limits, document/token counts). It could say more about the units of consumption (e.g. whether token counts are per-period), but nothing critical to 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?

There is a single optional businessId parameter with 100% schema description coverage, so the schema already explains its default from the API key's business. The description adds no further meaning about that parameter, making the 3 baseline correct.

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 ('Read') and a specific resource ('knowledge tier... its limits, and how many documents/tokens are used'), which clearly separates it from ringkit_get_knowledge and ringkit_list_knowledge_documents. It does not explicitly name those siblings, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is only implied: an agent infers this is the quota/consumption check to run before importing or uploading documents. There is no explicit when-to-use statement, no comparison to the sibling tools that also touch knowledge, and no exclusion guidance.

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

ringkit_get_latest_knowledge_importA
Read-onlyIdempotent
Inspect

Step 2: Teach it the business. The newest website import and its status (queued, running, done, failed), or null when none was started.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description's real contribution is the return contract: it enumerates the four status values and states it returns null when no import was started, which is genuinely useful behavior beyond annotations. It does not say whether it is safe to poll repeatedly or what an in-progress state implies.

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 with no filler; the return contract is stated plainly. The opening 'Step 2: Teach it the business' is onboarding flavor rather than tool description and slightly delays the actual purpose.

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?

Good for a simple read: the description compensates for the absent output schema by naming the status values and the null case. What remains missing is flow guidance (when to poll, what to do on 'failed', where to go after 'done') in what is explicitly labeled a numbered setup step.

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?

Only one optional parameter and the schema already documents it at 100% coverage, including the biz_ pattern and the API-key default, so baseline 3 applies. The description adds no parameter detail, but nothing is missing either.

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 resource (the newest website import) and what it returns (status: queued, running, done, failed). 'Newest' distinguishes it from list_knowledge_documents and get_knowledge_document, though it never names those siblings. The 'Step 2: Teach it the business' framing adds setup context but is vague as a verb.

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?

'Step 2' implies usage position in an onboarding flow, letting an agent infer it is called after business creation and before import, but there is no explicit when-to-use vs. ringkit_get_knowledge or ringkit_start_knowledge_import, and no statement about prerequisites or polling.

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

ringkit_get_onboardingB
Read-onlyIdempotent
Inspect

Setup progress: the next step (number | done), whether the business has a number, whether the knowledge profile has the basics, and the latest website import.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description's contribution is the returned state itself, which is useful, but it says nothing about defaulting behavior when the business has no number, how 'next step' is computed, or what happens with an unauthorized or malformed businessId.

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 that leads with the resource and then the payload, with no filler. It is slightly telegraphic — the '(number | done)' notation is not self-explanatory and costs a moment of parsing.

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 carries the burden of describing return values, and it does enumerate the four fields an agent gets back. It would be stronger if it clarified the shape of nested pieces such as the 'latest website import' or what 'has the basics' means in practice.

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 single businessId parameter is documented in the schema, including the fallback to the API key's business. The description adds nothing about the parameter, so the 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 identifies the resource (setup/onboarding progress) and enumerates the four pieces of state returned: next step, number presence, knowledge-profile basics, latest website import. The verb is implicit rather than stated, and nothing distinguishes it from near neighbors like ringkit_get_knowledge or ringkit_get_latest_knowledge_import, which it partially overlaps.

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 statement of when an agent should call this rather than ringkit_get_business, ringkit_get_knowledge, or ringkit_get_setup_chat, and no mention of prerequisites or typical sequencing (e.g. before ringkit_complete_onboarding). Usage must be inferred from the field list.

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

ringkit_get_recordingA
Read-onlyIdempotent
Inspect

Step 9: Watch the calls. A short-lived URL for a call's recording (callId); 404 when the call has none.

NameRequiredDescriptionDefault
callIdYesThe call's id (from list_calls).
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.5/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, so safety is covered. The description adds genuinely new behavioral context beyond them: the returned URL is short-lived, and a missing recording surfaces as a 404 rather than an empty payload. It stops short of saying how long the URL lives or whether the URL itself requires auth.

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

Conciseness3/5

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

The core sentence is tight and front-loads the return value. However, the leading fragment "Step 9: Watch the calls." is workflow-documentation residue that carries essentially no operational meaning for an invoking agent and mildly obscures the actual purpose statement.

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 simple two-parameter read tool with full schema coverage, the essentials are present: what it returns, the key parameter, and the no-recording case. With no output schema, the description would ideally specify the URL's lifetime, media format, or whether the URL is pre-authenticated, all of which an agent would need to act on the result 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 schema already documents callId ("from list_calls") and the businessId default from the Authorization header. The description only echoes that callId identifies the call, adding no format or scoping detail beyond the structured fields, 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 names the resource clearly ("a call's recording" keyed by callId) and states what is returned ("a short-lived URL"), which is a specific verb-plus-resource statement. It does not distinguish itself from the nearby ringkit_get_call sibling, so an agent must infer that this tool is for the media artifact specifically rather than call metadata.

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?

Usage is only implied: the tool is for fetching recordings of a call, and the "404 when the call has none" clause tells the agent how to interpret an empty result. There is no explicit guidance on when to prefer this over ringkit_get_call/list_calls, nor any stated prerequisite that a callId must first come from list_calls (that hint lives only in the schema).

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

ringkit_get_routingA
Read-onlyIdempotent
Inspect

Step 4: Decide who answers. Read the routing policy: when the AI answers, transfers or takes a message, the schedules, transfer targets and spend cap.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds real value beyond that by itemizing the returned policy fields (answer rules, transfers, schedules, transfer targets, spend cap), telling the agent what payload to expect despite there being 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.

Conciseness4/5

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

Two compact sentences with the workflow position front-loaded and the returned content listed immediately after. Nothing is redundant, though the opening 'Step 4: Decide who answers' is slightly cryptic without onboarding context.

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 single-optional-parameter read tool with rich annotations and no output schema, the description supplies what is most needed: the contents of the routing policy. Only the relationship to ringkit_put_routing and to the onboarding sequence remains implicit.

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 single optional businessId is fully documented in the schema as defaulting to the API key's business. The description adds no further meaning about the parameter, 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.

Purpose4/5

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

States a specific verb ('Read') and resource ('the routing policy') and enumerates what that policy contains: when the AI answers, transfers, message-taking, schedules, transfer targets, and spend cap. This distinguishes it from the write counterpart ringkit_put_routing, though the sibling is not 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 Guidelines3/5

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

'Step 4: Decide who answers' places the call in an onboarding/setup sequence, which implies when to use it. However, no exclusions or explicit alternative are named, and an agent must infer that writing the policy requires ringkit_put_routing and that destinations are read via ringkit_list_destinations.

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

ringkit_get_setup_chatB
Read-onlyIdempotent
Inspect

The open setup-assistant conversation with its messages, or null.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful behavior beyond them: the result may be null when no conversation is open. It omits whether messages are paginated or how many are returned.

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

Conciseness4/5

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

A single short, front-loaded sentence with zero filler. Nothing is wasted, though the terseness borders on under-specification rather than tightness.

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 simple read with one optional parameter and no output schema, the description does the important job of naming the return shape and the null case. It stops short of describing what a conversation object contains or what triggers the null result, which leaves a small but real 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 single optional businessId already documents its default from the API key. The description adds no extra meaning about that parameter, so the schema does the work and the 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?

States the specific resource (the open setup-assistant conversation, with its messages) and its nullable return, which implicitly distinguishes it from ringkit_start_setup_chat, ringkit_send_setup_chat, and ringkit_close_setup_chat. It is a noun phrase rather than an explicit verb like 'Get', but the read intent 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 Guidelines2/5

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

No when-to-use guidance is given. The description never says to call this before send_setup_chat to check state, nor when to prefer start_setup_chat, nor what to do when the result is null. The agent must infer the call ordering from the sibling names alone.

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

ringkit_get_voice_stackA
Read-onlyIdempotent
Inspect

Read which voice stack answers the AI tier: livekit or elevenlabs (the ElevenLabs Agents platform running the same receptionist brain; a caller who needs a person is still transferred to the business's team number or a message is taken). The server chooses the initial stack based on provider availability. Shows desired vs applied, status ok | pending | error, the steps of the last switch and lastError.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for the extra context it supplies: the server picks the initial stack by provider availability, and the response distinguishes desired from applied state with ok | pending | error statuses plus the steps of the last switch and lastError. That is genuine behavioral disclosure beyond the annotations, though it doesn't cover what an unconfigured or erroring stack implies for the agent.

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?

Front-loaded with the core fact (which stack answers the AI tier) and then the return detail. The parenthetical about the ElevenLabs Agents platform and call transfer is longer than strictly needed for a getter, but it does resolve a real ambiguity about what 'elevenlabs' means in this product.

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 single-parameter, read-only getter with no output schema, the description covers the important return fields (desired vs applied, status, last switch steps, lastError) and the semantics of the stack choice. Minor gap: it doesn't say what is returned when no stack has been applied yet, or how 'pending' resolves.

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 single businessId parameter already documents its pattern and default (business of the API key). The description adds nothing about businessId or cross-business reads, so the schema is doing all the work here — baseline 3.

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 ('Read which voice stack answers the AI tier') and enumerates the two possible values (livekit, elevenlabs), making it trivially distinguishable from the write-side sibling ringkit_put_voice_stack. The parenthetical explains what the ElevenLabs variant actually is, removing ambiguity about the two options.

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?

Usage is implied by the verb 'Read' and by the presence of ringkit_put_voice_stack, but the description never says when to call this versus that sibling or when the stack state is worth checking. It also doesn't state any prerequisite (e.g., that the business must be provisioned). The reader can infer intent but must do the routing work themselves.

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

ringkit_get_walletB
Read-onlyIdempotent
Inspect

Step 6: Fund the wallet. Read the prepaid wallet balance (cents), including the unspent free trial credit (trialCreditCents, calls only), and auto-refill.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3.4/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 that by specifying the unit (cents), scoping trialCreditCents to calls only, and naming the returned elements (balance, trial credit, auto-refill) — useful because there is no output schema. The 'Fund the wallet' framing sits slightly at odds with a pure read but 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.

Conciseness4/5

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

A single sentence with no filler, and the core read semantics are front-loaded within the clause. The 'Step 6: Fund the wallet' preamble is the only weakly earning element and slightly muddies the read-only framing.

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 one-optional-parameter read tool with strong annotations, the description covers return fields and units adequately. It stops short of explaining how the wallet balance relates to the top_up and get_auto_refill siblings, and there is no output schema to fall back on, leaving that relationship undocumented.

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?

Only one parameter exists and schema description coverage is 100%, with the schema already explaining that businessId defaults to the API key's business. The description adds nothing further about the parameter, so the 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 verb+resource pair is explicit: 'Read the prepaid wallet balance (cents)' plus trial credit and auto-refill. An agent can tell this is a wallet-state read. However, the leading clause 'Step 6: Fund the wallet' describes an action the tool does not perform and gives no differentiation from siblings such as ringkit_get_auto_refill or ringkit_top_up, which the auto-refill mention overlaps with.

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?

'Step 6' implies a position in an onboarding sequence but no explicit condition for calling it, no prerequisites, and no statement of when to choose ringkit_get_auto_refill or ringkit_top_up instead. The agent must infer usage from the name alone.

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

ringkit_import_knowledgeA
Destructive
Inspect

Step 2: Teach it the business. Crawl the business website now and draft a knowledge profile (hours, services, FAQs...). Set apply=true to save it, or review and use put/patch. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
urlYes
applyNo
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, and the description goes beyond them by explaining the retry consequence ('without one, each call executes again') and the apply gate that controls whether anything is persisted. What it does not disclose is what apply=true overwrites when a knowledge profile already exists, which matters given the destructive hint.

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 compact sentences, front-loaded with the step framing and the action, then the commit/retry mechanics. 'Step 2: Teach it the business' is conversational framing rather than specification, and 'put/patch' names operations without saying which sibling tools, which costs a little 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?

For a destructive, open-world mutation with no output schema, the definition covers the commit switch and retry semantics but not what the draft response contains or what happens to existing knowledge on apply=true. It is workable, but an agent would still have to probe the result to know what it got back.

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 only 50%, with url and apply undocumented in the schema, so the description carries real weight here. It clarifies that the URL is the business website to crawl and that apply=true is the commit switch, while the idempotencyKey explanation matches the schema's own note. The 'review and use put/patch' phrasing leaves the follow-up call slightly ambiguous.

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 concrete verb and resource: crawl the business website and draft a knowledge profile covering hours, services and FAQs. That is far more specific than the bare name 'import_knowledge'. It does not, however, distinguish this tool from the closely named sibling ringkit_start_knowledge_import, so an agent must guess which import entry point to use.

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 a clear operating path: call to draft, then either set apply=true to save or review and follow up with put/patch. The retry guidance ('reuse an idempotencyKey when retrying') is explicit and actionable. Missing is any statement of when NOT to use this tool, or how it relates to start_knowledge_import and upload_knowledge_document.

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

ringkit_invite_ownerA
DestructiveIdempotent
Inspect

Step 12: Hand it to the owner. Optional hand-over: emails a sign-in link bound to this business to email (default: ownerEmail), adding them as owner first. Nothing in setup needs it: the agent can keep running the line, and the human can take over any time by clicking the link (that sets ownerSignedInAt). 5 per business per hour; pass a new idempotencyKey to send again. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
emailNo
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations it discloses the ownership side effect (recipient is added as owner first), the rate limit of 5 per business per hour, the 24-hour dedupe window, and that clicking the link sets ownerSignedInAt. It also explains idempotencyKey semantics for deliberate repeats, which is exactly the kind of behavioral detail annotations alone cannot 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 action and its optional status are front-loaded, and the rate-limit/dedupe caveats are grouped at the end where they belong. The 'Step 12:' prefix is context the agent may not have and adds little on its own, and the idempotency sentence restates the schema description.

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 three-parameter mutation with no output schema, the description covers the effects (owner granted, email sent, ownerSignedInAt on click), limits, and idempotency behavior. It doesn't say what the call returns on success, which is the only notable gap given the absent output schema.

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 description adds meaning not in the schema by giving the email parameter a default (ownerEmail) and by framing idempotencyKey as the lever for deliberately repeating the action versus safe retries. businessId is left to the schema's own description, so coverage is good but not fully compensated in the prose.

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 concrete action: emails a sign-in link bound to the business, and first adds the recipient as owner. That is a specific verb plus resource an agent can act on. It doesn't explicitly contrast with a named sibling (e.g., complete_onboarding or create_api_key), so it falls 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 Guidelines4/5

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

It gives explicit when-not guidance: 'Nothing in setup needs it' and the agent can keep running the line, with the human able to take over by clicking the link. That is clear context for skipping the call. It stops short of naming alternatives or stating the condition under which an agent should proactively send the invite.

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

ringkit_list_api_keysA
Read-onlyIdempotent
Inspect

Step 11: Manage API keys. List the business's API keys (prefix, scope, last use, revoked or not); never the plaintext.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

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, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description does add genuinely useful behavior: which fields come back and the security guarantee that plaintext key material is never returned. It does not cover ordering, pagination, or empty-list behavior, so it adds value but not rich behavioral context.

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

Conciseness4/5

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

Two short sentences, front-loaded with the verb and resource, and the parenthetical field list is dense rather than verbose. The only waste is the "Step 11: Manage API keys" onboarding label, which is filler for an agent trying to choose a 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?

With no output schema, the description correctly compensates by naming the returned fields, and the read-only/idempotent annotations cover the rest of the contract. It is nearly complete for a one-parameter list tool, with only pagination or result-size expectations 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 single businessId parameter already documents its default-from-auth-header behavior, so the schema carries the load. The description adds nothing about businessId, which is acceptable given the baseline, but it misses the chance to note that the parameter is optional and scopes cross-business listing.

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 "List" with the specific resource "API keys" and even enumerates the fields returned (prefix, scope, last use, revoked status). This clearly separates it from ringkit_create_api_key and ringkit_revoke_api_key. The leading "Step 11: Manage API keys" framing is slightly at odds with the read-only nature of the operation, since managing is split across siblings, but the second sentence resolves it.

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?

Usage is only implied: reading the key inventory. There is no explicit when-to-use or when-not, and the description never points at the obvious alternatives (ringkit_create_api_key for minting, ringkit_revoke_api_key for revocation), even though they sit in the same family and would benefit from routing guidance.

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

ringkit_list_business_usersB
Read-onlyIdempotent
Inspect

Step 12: Hand it to the owner. List the people who can sign in to the business dashboard, with their roles and last sign-in.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

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 safety profile is fully covered. The description adds that results include roles and last sign-in, which is useful return-shape context. It says nothing about pagination, sorting, or what happens when the business has no users.

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

Conciseness3/5

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

The description is short, but the first clause is cryptic workflow scaffolding ('Step 12: Hand it to the owner.') that consumes the front-loaded position without conveying tool semantics. The actual purpose statement that follows is tight and waste-free.

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 carries the return-value burden and does name the key fields returned (roles, last sign-in). Combined with a fully documented single optional parameter and complete annotations, an agent has enough to invoke it correctly, though ordering and empty-result behavior are unstated.

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 businessId parameter is already documented as defaulting to the API key's business. The description adds no meaning 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.

Purpose4/5

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

The second sentence gives a specific verb and resource: list the people who can sign in to the business dashboard, plus roles and last sign-in. That is clearly distinguishable from siblings like ringkit_list_api_keys or ringkit_whoami. The opaque 'Step 12: Hand it to the owner.' preamble adds no resource information and slightly muddies the opening.

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 embeds the tool in a numbered onboarding sequence ('Step 12: Hand it to the owner') but never states when an agent should call this versus alternatives such as ringkit_invite_owner, ringkit_get_business, or ringkit_whoami. No exclusions, prerequisites, or selection criteria are given.

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

ringkit_list_callsA
Read-onlyIdempotent
Inspect

Step 9: Watch the calls. List recent calls with outcome, intent, summary and cost, newest first (paginated).

NameRequiredDescriptionDefault
limitNo
cursorNo
businessIdNoDefaults to the business of the API key in the Authorization header.

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, non-destructive and closed-world, so the safety profile needs no restating. The description adds two genuinely useful traits beyond them — 'newest first' ordering and pagination — but says nothing about cursor semantics, page-size defaults, or what an exhausted cursor returns.

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

Conciseness3/5

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

Single sentence, front-loaded with the return fields — efficient overall. However, the 'Step 9: Watch the calls' prefix burns the highest-attention position on workflow labeling that carries no invocation value, and 'Watch' is a vague framing of a list operation.

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 three-parameter, zero-required list tool with no output schema, the description is nearly sufficient: it names the fields returned, the sort order, and pagination. The remaining gap is how to page forward (what the cursor token is and when to pass it), which the agent must infer entirely from the schema.

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 33%, so the description has to compensate and does partially: 'newest first (paginated)' explains what the undocumented cursor parameter is for, and recent-calls scoping frames limit. It still adds nothing about the schema's default limit of 25 or the 100 maximum, but it does supply the meaning of the pagination param.

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 ('List recent calls') and enumerates the returned fields (outcome, intent, summary, cost) plus ordering, which separates it from the single-resource sibling ringkit_get_call. The leading 'Step 9: Watch the calls' is workflow noise rather than purpose, but the operative sentence is clear.

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?

Usage is only implied: 'Step 9: Watch the calls' gestures at a sequence in a setup workflow and 'recent calls' implies browsing rather than fetching one call. There is no explicit when-to-use/when-not or a named alternative such as ringkit_get_call for a single call's detail.

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

ringkit_list_destinationsB
Read-onlyIdempotent
Inspect

Numbers the business proved it controls (allowed test-call targets and ownerPhone).

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3/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 domain context by clarifying that these are numbers the business 'proved it controls' (verified destinations), which is meaningful beyond the annotations. It does not describe return format or pagination, which is acceptable given the annotation coverage.

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 short phrase that front-loads the resource identity. It contains no wasted words, though the fragmentary structure is slightly less clear than a complete sentence would be.

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, full schema coverage, and rich annotations, the description provides enough domain context to understand what the tool returns. Missing details like explicit list behavior and output format are minor given the simplicity and the tool name.

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 businessId parameter is fully documented in the schema, including its default behavior. The description adds no additional parameter meaning, so the baseline of 3 is appropriate when the schema does all the work.

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

Purpose3/5

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

The description is a noun phrase that identifies the resource as 'Numbers the business proved it controls' and gives examples (allowed test-call targets and ownerPhone). It does not explicitly state the action (list), though the tool name implies it, and it offers some differentiation from list_numbers by scoping to proved/controlled numbers. The missing verb and fragmented phrasing keep it from being a clear verb+resource statement.

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 explicit when-to-use guidance or alternatives are given. The parenthetical examples hint at use cases (test-call targets and ownerPhone), but the description does not say when to prefer this tool over siblings like list_numbers or search_numbers.

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

ringkit_list_knowledge_documentsA
Read-onlyIdempotent
Inspect

List uploaded knowledge documents (newest first) with usage against the tier's limits.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

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, non-destructive, and closed-world, so the safety profile is fully covered. The description adds two genuinely useful behavioral facts not in the annotations: results are sorted newest first, and each item carries usage relative to the tier's limits. It says nothing about pagination, maximum result count, or whether empty results differ from an unconfigured knowledge base.

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 with no filler; the ordering and usage clauses are informative rather than redundant. Slight compression cost in that the parenthetical ordering detail sits mid-sentence, but nothing needs cutting.

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-optional-parameter read-only list tool with full annotation coverage and no output schema, the description covers purpose, ordering, and the notable content of results (usage vs tier limits). Missing pagination and result-count boundaries keep it just short of 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 coverage is 100% and the sole parameter businessId is documented in the schema as defaulting to the API key's business, so the schema does the heavy lifting. The description adds no additional meaning about that parameter or when an explicit businessId would be needed.

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 gives a specific verb and resource ('List uploaded knowledge documents') plus return-shaping detail ('newest first', 'with usage against the tier's limits'), which distinguishes it from the singular get_knowledge_document and get_knowledge_usage siblings. It stops short of naming those siblings explicitly, so an agent must infer the contrast.

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?

Usage is only implied by the verb 'List' — the natural reading is 'call this to enumerate documents'. There is no explicit when-to-use or when-not-to-use guidance, and no pointer to get_knowledge_document for a single document or get_knowledge_usage for usage alone, both of which are close alternatives in the sibling set.

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

ringkit_list_ledgerB
Read-onlyIdempotent
Inspect

Wallet ledger entries (top-ups, call charges, rentals), newest first, paginated.

NameRequiredDescriptionDefault
limitNo
cursorNo
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3.3/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, so the safety profile is covered. The description adds genuinely new context the annotations lack: entries are ordered newest first and results are paginated. It still omits whether the cursor is opaque, how page size behaves, and what fields each entry carries.

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 compact sentence with zero filler, and the resource is front-loaded before the behavioral details. Sizing is appropriate for a simple list operation.

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

Completeness2/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 no output schema and only 33% schema coverage, the description should say more about what an entry looks like (amount, balance impact, timestamp) and how paging terminates. As written, an agent knows the shape of the list but not its contents or pagination contract.

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 33% - only businessId is documented in the schema, and the description doesn't mention it either. The word 'paginated' partially compensates by implying cursor semantics, but limit (default 50, max 100) and cursor are left entirely to the schema. Below the high-coverage baseline, so only partial credit.

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 resource (wallet ledger entries) with concrete content types (top-ups, call charges, rentals) plus ordering and pagination. It is distinguishable from ringkit_get_wallet (balance) and ringkit_list_calls (call records), though it never names those siblings explicitly.

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?

Usage is implied: an agent can infer this is the tool for retrieving transaction history rather than current balance. However, with 48 siblings including get_wallet and list_calls, no explicit when-to-use or when-not-to-use guidance is given, and no alternative is routed to.

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

ringkit_list_numbersB
Read-onlyIdempotent
Inspect

Step 7: Get a phone number. List the business's phone numbers.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only that the scope is the business's own numbers; it says nothing about return shape, pagination, or what an empty result means. Adequate but thin beyond annotations.

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

Conciseness3/5

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

Very short, but "Step 7: Get a phone number" and "List the business's phone numbers" are largely redundant, and the workflow-step framing is placed ahead of the actual operation. The second sentence carries all the value.

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 one-optional-param read-only list tool with rich annotations and a fully documented schema, the essentials are present. What is missing is differentiation from the number-related siblings and any hint about the result set, which matters in a catalog with search_numbers and provision_number.

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 single optional businessId is fully documented in the schema, including its default to the API key's business. The description adds no meaning beyond that, so the baseline 3 for high-coverage schemas applies.

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

Purpose3/5

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

"List the business's phone numbers" is a clear verb+resource. But the leading "Step 7: Get a phone number" is ambiguous and pulls toward the semantics of siblings like ringkit_provision_number and ringkit_search_numbers, blurring whether this reads or acquires a number. It never names those siblings to draw the line.

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 "Step 7" prefix implies a position in an onboarding/setup sequence, which is useful implied context. However, there is no explicit guidance on when to use this versus ringkit_search_numbers (find available numbers) or ringkit_provision_number (acquire one), and no exclusions stated.

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

ringkit_list_voicesA
Read-onlyIdempotent
Inspect

Step 3: Pick a voice. List the receptionist voices (id, gender, accent) and the default. Pick one with ringkit_update_business {voice}.

NameRequiredDescriptionDefault

No parameters

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, non-destructive and closed-world, so the safety profile is covered. The description adds non-trivial context beyond that: it reveals the shape of the response (id, gender, accent, a default marker) and the workflow coupling to ringkit_update_business. It does not mention whether the list is static/catalog-wide or business-specific, which is the one remaining behavioral ambiguity.

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

Conciseness5/5

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

Two short sentences, no filler, and the workflow position is front-loaded before the details. Every clause carries information: what is listed, what fields come back, and which tool consumes the choice.

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 input parameters and no output schema, the description carries the return-value burden itself and does so by naming the fields returned including the default. What is missing is minor: how the default is surfaced (flag vs. first entry) and whether the set is global or business-scoped.

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 takes zero parameters, so there is no parameter semantics to explain; the baseline applies. The description correctly implies no inputs are needed to retrieve the catalog.

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 and resource ('List the receptionist voices') and enumerates the returned fields (id, gender, accent, default), so the agent knows exactly what comes back. It does not explicitly distinguish itself from the closest sibling, ringkit_get_voice_stack, which also concerns voices.

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?

Places the call in a sequence ('Step 3: Pick a voice') and names the follow-up action explicitly ('Pick one with ringkit_update_business {voice}'), which gives the agent a clear when-to-use and what-to-do-next path. It stops short of stating exclusions or contrasting with ringkit_get_voice_stack / ringkit_put_voice_stack.

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

ringkit_list_webhooksB
Read-onlyIdempotent
Inspect

Step 10: Get told about calls. List the business's webhook endpoints and their events.

NameRequiredDescriptionDefault
businessIdNoDefaults to the business of the API key in the Authorization header.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile needs no restating. The description adds only that both endpoints and their events are returned, and says nothing about ordering, pagination, or what an empty result means for a business with no webhooks.

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

Conciseness3/5

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

The description is short, but the 'Step 10' prefix is sequence-dependent filler that will not match an agent's actual position in a workflow and is front-loaded ahead of the real content. The second sentence is efficient and does all the work.

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 single-optional-param read tool with a fully described schema and read-only annotations, little is strictly required. However, the unexplained 'Step 10' framing leaves an agent unsure whether this is a prerequisite step for notification setup, which is not resolved anywhere else in the definition.

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 single optional businessId already documents its default-to-API-key behavior. The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The second sentence gives a specific verb and resource: list the business's webhook endpoints and their events. The leading fragment 'Step 10: Get told about calls' is a workflow label rather than a purpose statement and adds ambiguity about whether the tool configures notifications or only reads them.

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?

'Step 10: Get told about calls' hints at where this fits in an onboarding sequence, which is implied usage guidance. It never states when to use this versus ringkit_create_webhook or what to do if no endpoints exist, so the agent must infer the read-only inspection role from the name alone.

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

ringkit_patch_knowledgeB
Destructive
Inspect

Step 2: Teach it the business. Update some top-level fields of the knowledge profile (others are kept). Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
faqsNo
vibeNo
emailNo
hoursNo
phoneNo
staffNo
addressNo
summaryNo
taglineNo
doNotSayNo
evidenceNo
greetingNo
policiesNo
servicesNo
documentsNo
bookingUrlNo
businessIdNoDefaults to the business of the API key in the Authorization header.
voiceNotesNo
credentialsNo
estimateUrlNo
serviceAreaNo
businessNameNo
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.
escalationContactsNo

TDQS

B3.1/5.0
Behavior3/5

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

The description adds genuine merge semantics ("others are kept") that the annotations do not convey, plus retry behavior for idempotencyKey. However, it does not reconcile this with destructiveHint=true — an agent is left not knowing which overwrites can lose data, or whether omitted arrays (e.g. staff, faqs) are replaced or preserved.

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, front-loaded sentences with no filler; the patch semantics and retry rule each earn their place. Minor loss: "Step 2: Teach it the business" is motivational framing rather than operational detail.

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

Completeness2/5

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

For a 24-parameter, deeply nested mutation with no output schema and near-zero schema descriptions, the description is far too thin. An agent cannot infer which fields are patchable, how nested objects merge, or what a successful response confirms.

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

Parameters2/5

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

Schema description coverage is only 8% across 24 parameters, so the description carries nearly the full burden and does not meet it. It only elaborates idempotencyKey and never enumerates or explains the top-level fields that can be patched, the nested evidence/vibe structures, or nullable-vs-omit semantics.

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 ("Update some top-level fields of the knowledge profile") and clarifies the partial-update semantics ("others are kept"), which implicitly differentiates it from the sibling put_knowledge replacement tool. The onboarding framing ("Step 2: Teach it the business") adds workflow position, though the sibling it contrasts with is never named.

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 "Step 2" framing implies sequence within an onboarding flow, but there is no explicit statement of when to choose this over ringkit_put_knowledge, ringkit_set_knowledge_tier, or ringkit_import_knowledge. With zero required parameters, the description also omits the critical guidance that at least one field must be supplied for the call to do anything.

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

ringkit_provision_numberA
DestructiveIdempotent
Inspect

Step 7: Get a phone number. Order a phone number for the business ($1.99 a month, billed daily from the wallet). Needs $2 of paid credit available (free trial credit covers calls only); no human sign-in. On 402 funding_required call ringkit_top_up, ask the human to pay the checkoutUrl, then retry. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
numberYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (destructive and idempotent already flagged) it discloses the $1.99/month charge billed daily from the wallet, the $2 paid-credit requirement with the caveat that trial credit only covers calls, that no human sign-in is needed, and the 24-hour deduplication window. That is substantive behavioral context an agent cannot get from 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?

Four dense sentences, front-loaded with the action, then cost, then failure recovery, then idempotency rules. No filler and no repetition of the tool name or 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?

For a paid, destructive, open-world mutation this covers cost, funding, error path, and retry safety well. It stops short of saying how to find an available number first (search_numbers) or what the call returns, though the latter is mitigated by the response being self-evident and the schema warning constraints.

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 67% and the two described fields already document the businessId default and idempotencyKey retry semantics. The description restates the dedup/idempotency behavior and gives no guidance on the 'number' parameter beyond the schema's E.164 pattern. Baseline 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 uses a specific verb and resource ('Order a phone number for the business') and prices it, which separates it from sibling reads like ringkit_list_numbers and ringkit_search_numbers. 'Step 7: Get a phone number' is slightly softer than 'order', but the pricing detail immediately disambiguates it as a purchase.

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 places the tool in a numbered provisioning flow, states the funding precondition, and names the exact fallback: on a 402 funding_required call ringkit_top_up, have the human pay the checkoutUrl, then retry. It also tells the agent when a new idempotencyKey is warranted versus reused.

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

ringkit_put_auto_refillA
Destructive
Inspect

Step 6: Fund the wallet. Turn auto-refill on or off and set its threshold and amount. It may be enabled before a card is saved; refills start once the human saves one in the dashboard. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
enabledYes
businessIdNoDefaults to the business of the API key in the Authorization header.
amountCentsYes
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.
thresholdCentsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations flag destructive and non-idempotent, and the description adds real context beyond them: the deferred-effect behavior (refills only start after a card is saved) and the consequence of omitting idempotencyKey (each call executes again), which explains the idempotentHint=false in practical terms.

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 compact sentences with the action front-loaded, followed by the deferred-effect caveat and the idempotency warning in order of importance. The 'Step 6' prefix adds workflow context at negligible cost.

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 five-parameter mutation with no output schema, the description covers the key behavioral risks: timing of effect and retry semantics. Minor gaps remain regarding what happens to existing settings on overwrite and permission requirements, 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 coverage is only 40%, but the description clarifies the retry semantics of idempotencyKey and the purpose of threshold/amount in the refill flow. It says nothing about businessId (covered in schema) or the min/max bounds on amounts, leaving some compensation on the table.

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 and resource: turning auto-refill on/off and setting threshold and amount, framed as funding the wallet. It implicitly distinguishes from ringkit_top_up (manual funding) and ringkit_get_auto_refill (read) but never names those siblings, so differentiation relies on inference.

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?

Provides a useful precondition — it can be enabled before a card is saved, with refills starting only after a human saves one in the dashboard — but gives no explicit guidance on when to choose this versus ringkit_top_up, or on ordering relative to the other onboarding steps.

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

ringkit_put_knowledgeB
Destructive
Inspect

Step 2: Teach it the business. Replace the whole knowledge profile the AI receptionist answers from. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
faqsNo
vibeNo
emailNo
hoursNo
phoneNo
staffNo
addressNo
summaryNo
taglineNo
doNotSayNo
evidenceNo
greetingNo
policiesNo
servicesNo
documentsNo
bookingUrlNo
businessIdNoDefaults to the business of the API key in the Authorization header.
voiceNotesNo
credentialsNo
estimateUrlNo
serviceAreaNo
businessNameNo
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.
escalationContactsNo

TDQS

B3.3/5.0
Behavior4/5

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

The description adds real context beyond annotations: it makes explicit that the entire profile is replaced (consistent with destructiveHint=true) rather than merged, and it gives actionable retry guidance by pointing at idempotencyKey as the remedy for the non-idempotent default. It does not describe what happens to omitted optional fields or whether the overwrite is recoverable, which would have pushed it higher.

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, front-loaded with the overwrite semantics and the retry caveat. Nothing is padded, though "Step 2: Teach it the business" is more flavor than specification given how much parameter explanation is missing.

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

Completeness2/5

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

This is a large, deeply nested replacement payload with no output schema and almost no schema-level parameter descriptions, yet the description is three sentences with no field guidance, no partial-vs-full example, and no note on validating required sub-objects like address or vibe. For a destructive full-overwrite tool of this complexity, that is materially incomplete.

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

Parameters2/5

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

With 24 parameters and only 8% schema description coverage, the description carries almost the entire semantic burden — and it explains none of them. The complex nested payloads (vibe, hours.regular/exceptions, evidence statuses, documents, escalationContacts, staff) are entirely undocumented in prose, and the one mention of idempotencyKey largely restates the schema's own 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?

"Replace the whole knowledge profile the AI receptionist answers from" gives a specific verb (replace/put) and resource (knowledge profile), and the word "whole" signals full-overwrite semantics that distinguish it from ringkit_patch_knowledge. It stops short of naming the sibling tool explicitly, so the contrast is inferred 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?

"Step 2: Teach it the business" positions the call in the setup flow, which is genuinely useful ordering context. However, it never names alternatives (patch_knowledge, import_knowledge, set_knowledge_tier) or states when a caller should prefer a partial update over this full replacement, leaving the selection logic implicit.

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

ringkit_put_routingA
Destructive
Inspect

Step 4: Decide who answers. Set the routing policy: transfer targets (your own team numbers the receptionist can transfer to) and handoff preferences, recording, spend cap. Full replace; omitted fields take defaults. Every call is answered by the AI (mode ai_only): ai_first/human_first are accepted but RingKit's live-rep pool is not offered, so they act as ai_only. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
modeNo
handoffNo
scheduleNo
businessIdNoDefaults to the business of the API key in the Authorization header.
discloseAiNo
escalateOnNo
recordCallsNo
afterHoursModeNo
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.
maxHumanOffersNo
transferTargetsNo
dailySpendCapUsdNo
vettedAgentsOnlyNo
humanRingTimeoutSNo
neverHumanIntentsNo
alwaysHumanIntentsNo
requiredAgentSkillsNo

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the destructiveHint=true annotation, it discloses the crucial semantics: this is a full replace where omitted fields are reset to defaults, and ai_first/human_first silently degrade to ai_only because RingKit's live-rep pool is not offered. It also explains retry behavior around idempotencyKey, consistent with idempotentHint=false. This is exactly the non-obvious behavior an agent needs before overwriting a live routing config.

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?

Front-loaded with the step number and the core action, then the destructive full-replace caveat, then mode degradation, then the idempotency note. It is dense but every sentence carries information; the final sentence is slightly run-on but not wasteful.

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 17-parameter destructive mutation with no output schema, the description covers the highest-risk semantics (replace behavior, mode degradation, retries) well but leaves most individual parameters opaque and says nothing about what the response or resulting state looks like. Adequate to avoid the worst mistakes, not complete enough to configure the policy confidently.

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

Parameters2/5

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

Schema description coverage is only 12% across 17 parameters, so the description must carry parameter meaning, and it mostly does not. It names groups (transfer targets, handoff, recording, spend cap, mode, idempotencyKey) but leaves schedule, afterHoursMode, escalateOn, humanRingTimeoutS, maxHumanOffers, vettedAgentsOnly, neverHumanIntents/alwaysHumanIntents, requiredAgentSkills and discloseAi completely unexplained by both schema and 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?

States a specific verb and resource: 'Set the routing policy', with the constituent areas named (transfer targets, handoff preferences, recording, spend cap). It is clearly the write counterpart to ringkit_get_routing, though it never names that sibling explicitly, so differentiation comes from the name and verb rather than the text.

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 4: Decide who answers' frames when in the setup sequence this belongs, and 'Full replace; omitted fields take defaults' is an actionable warning that changes how an agent calls it. What is missing is an explicit instruction to read current policy with ringkit_get_routing first, or any statement about prerequisites from earlier steps.

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

ringkit_put_voice_stackA
Destructive
Inspect

Switch the voice stack: {stack: livekit | elevenlabs}. Applied synchronously (ElevenLabs agent sync, number import or removal, carrier routing), so it can take a few seconds. Needs an active number and ai_only/ai_first routing (human_first answers 409 voice_stack_unsupported_mode). A failed step answers 502 voice_stack_failed with the status in details: call it again with the same stack to resume. Owner only. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
stackYes
brainModeNo
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations by disclosing what the switch actually touches (ElevenLabs agent sync, number import/removal, carrier routing), that it is synchronous and slow, that it is owner-only, and how partial failure surfaces (502 voice_stack_failed with status in details). The retry contract — same stack resumes, idempotencyKey avoids re-execution — is exactly the behavioral context the annotations cannot express.

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?

Front-loads the action and its enum, then layers prerequisites, error semantics, authorization, and idempotency in short parenthetical clauses. Dense but every sentence carries information an agent needs before calling.

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, slow, owner-only mutation with no output schema, the description covers side effects, latency, preconditions, failure codes, and retry semantics. The only untouched item is brainMode, a minor omission against otherwise thorough 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 coverage is 50%; the description reinforces the stack enum and clarifies idempotencyKey usage (reuse to resume, new value to deliberately repeat), which adds real meaning beyond the schema text. However, brainMode is undocumented in both the schema and the description, leaving a meaningful gap for a 4-parameter 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?

States a specific verb and resource ("Switch the voice stack") with the exact enum values inline, and the sibling ringkit_get_voice_stack makes the read/write split obvious from the name plus this description.

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 concrete preconditions for use (an active number plus ai_only/ai_first routing) and names the failing mode (human_first → 409 voice_stack_unsupported_mode). It never explicitly points to ringkit_get_voice_stack as the way to check the current stack first, which is the only missing routing cue.

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

ringkit_release_numberA
Destructive
Inspect

Release a phone number (numberId from list_numbers); it stops taking calls and its rental stops. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
numberIdYesThe number's id (from list_numbers).
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the bar is lower, yet the description still earns credit by spelling out the concrete consequences: the number stops taking calls and billing/rental ends. The idempotency warning adds behavior the annotations only hint at (idempotentHint=false). It does not address reversibility or whether the number can be recovered.

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; the destructive effect is front-loaded and the idempotency caveat follows. Every clause carries information an agent needs before calling.

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 annotations covering the safety profile and a fully described schema, the description supplies the remaining essentials: what the release does and how retries behave. Only irreversibility and post-release state are left unstated, which is a minor gap for a three-parameter tool with no output 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%, and the schema already documents numberId sourcing from list_numbers and the full idempotencyKey retry semantics, including header precedence. The description restates that meaning rather than adding new detail, 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 opens with a specific verb and resource ('Release a phone number') and immediately states the effect ('stops taking calls and its rental stops'), which clearly separates it from the sibling provisioning tool. It lacks an explicit contrast with ringkit_provision_number, so it stops just 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 Guidelines4/5

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

It gives clear operational context for when to use this tool and adds concrete retry guidance ('Reuse an idempotencyKey when retrying; without one, each call executes again'). It does not state when not to release or any prerequisite checks, so it is clear but not exhaustive.

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

ringkit_revoke_api_keyA
Destructive
Inspect

Step 11: Manage API keys. Revoke an API key (keyId from list_api_keys); it stops authenticating at once, including on this connection if it is this key. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
keyIdYesThe key's id (from list_api_keys).
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the supplied annotations (destructiveHint=true, idempotentHint=false) by disclosing the immediate effect ('stops authenticating at once') and the non-obvious edge case that revoking the current connection's own key kills this session. The idempotency sentence also explains the retry consequence rather than merely restating idempotentHint=false.

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 tight sentences, with the destructive consequence and the self-revocation caveat front-loaded before the retry note. The leading 'Step 11: Manage API keys.' is workflow scaffolding that adds little for tool selection but is brief enough not to be costly.

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 destructive, three-parameter mutation with no output schema, the description covers the effect, the session-level risk, and the idempotent retry model. The only gap is what a successful call returns, which is a minor omission given there is no output schema to lean on.

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 keyId, businessId, and idempotencyKey are already fully documented, including the Idempotency-Key header precedence rule. The description restates the keyId origin and the retry semantics without adding format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Revoke an API key') and immediately identifies the required input's origin ('keyId from list_api_keys'), which cleanly separates it from the sibling ringkit_create_api_key and ringkit_list_api_keys. An agent can pick this tool without opening 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 Guidelines4/5

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

Points at list_api_keys as the source of the identifier and gives explicit retry guidance (reuse an idempotencyKey), which is real when-to-use context. It does not state any when-not condition or warn about revoking keys in use beyond the self-revocation case, so it falls just short of full routing guidance.

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

ringkit_search_numbersB
Read-onlyIdempotent
Inspect

Step 7: Get a phone number. Search available phone numbers (US, by area code).

NameRequiredDescriptionDefault
limitNo
countryNoUS
areaCodeNo
containsNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds that results are limited to available (unprovisioned) numbers, which is genuinely useful beyond the annotations, but it says nothing about cost, rate limits, or what an empty result means.

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 with no filler and the resource front-loaded. The "Step 7:" prefix is only meaningful if the agent already holds the surrounding workflow, so it is slightly wasteful standalone, but nothing is padded.

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

Completeness2/5

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

With no output schema, four undocumented parameters, and no statement of what a result contains (phone number, cost, capabilities) or what to do next, the definition is thin for a tool that sits at a key step before provisioning. An agent could call it but could not predict its response shape.

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

Parameters2/5

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

Schema description coverage is 0%, so all four parameters depend on the description for meaning. The description only gestures at country ("US") and areaCode ("by area code") and leaves limit and contains entirely unexplained, so it fails to compensate for the coverage gap.

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: "Search available phone numbers (US, by area code)." This distinguishes it reasonably from ringkit_list_numbers (owned numbers) and ringkit_provision_number (purchasing), though the leading phrase "Get a phone number" muddies the line with provision_number since this tool only searches, it does not acquire.

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?

"Step 7" implies a workflow position and the word "available" implies this precedes provisioning, but the description never names ringkit_provision_number as the follow-up action or states exclusions. The usage is implied rather than explicitly instructed.

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

ringkit_send_setup_chatA
Destructive
Inspect

Step 2: Teach it the business. Send the owner's message to the setup assistant (conversationId from ringkit_start_setup_chat). The reply lists what was saved in writes. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
textYes
businessIdNoDefaults to the business of the API key in the Authorization header.
conversationIdYesThe conversation's id (from start_setup_chat).
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag this as a mutating, destructive, non-idempotent, open-world call, and the description adds genuinely new behavior: the reply enumerates what was persisted in `writes`, and without an idempotencyKey each call executes again. That retry consequence is consistent with idempotentHint=false and is exactly the operational detail an agent needs. It is weaker on what the write actually modifies in the business record, which is notable given destructiveHint=true.

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?

Four short, front-loaded sentences: workflow position first, then the call, then the return shape, then the retry rule. Nothing is padded, though the lead-in phrase is slightly informal relative to the terse remainder.

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 usefully discloses that the reply enumerates saved items under `writes`, and it covers the prerequisite id chain and retry semantics for a 4-parameter mutating tool. It could say more about what a write changes in the business, but an agent has enough to invoke it 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 75% and the schema already documents businessId, conversationId, and idempotencyKey in detail. The description still adds value by spelling out the consequence of omitting idempotencyKey ('each call executes again') and by tying conversationId to the sibling that issues it, beyond the schema's pointer. The `text` parameter's meaning is only implied.

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 (send the owner's message to the setup assistant) on a specific resource, and names the sibling that produces the required conversationId (ringkit_start_setup_chat). 'Step 2: Teach it the business' also positions it against start/get/close setup_chat siblings, so an agent can pick it without reading 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 Guidelines4/5

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

The sequencing is explicit: this is step 2 and the conversationId must come from ringkit_start_setup_chat, which is the main prerequisite an agent needs. It also gives retry guidance (reuse an idempotencyKey) but does not state when not to call it or what sibling to use instead of resending (e.g. get_setup_chat to read state), so it stops short of full when/when-not coverage.

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

ringkit_set_knowledge_tierA
Destructive
Inspect

Switch the knowledge tier. pro: 100 documents / 500k tokens for $5.00/month, accrued daily from the wallet (needs $5 of paid credit available; free trial credit doesn't count); starter: free, 5 documents / 50k tokens (refused while usage is over those limits). Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
tierYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say destructiveHint=true and idempotentHint=false; the description adds the billing mechanism (daily accrual from wallet), the credit-source restriction, the refusal condition on downgrade, and the retry/idempotency consequence ('without one, each call executes again'), which is consistent with idempotentHint=false. That is substantial context an agent cannot get from 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?

Dense but front-loaded, with the verb first and the pricing/precondition detail after; every clause carries actionable information. The nested parentheses in the pro clause make it slightly harder to scan than it needs to be.

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 billing-affecting mutation with no output schema and only three parameters, this covers cost, credit eligibility, refusal semantics, and retry behavior. What's still unstated is whether the switch takes effect immediately, whether it is prorated, and what happens to existing documents on a permitted downgrade.

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 67% and both businessId and idempotencyKey already carry descriptions. The description's real contribution is giving meaning to the bare 'tier' enum by spelling out what starter and pro actually grant and cost, plus reinforcing that idempotency requires the caller-supplied key.

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 ('Switch the knowledge tier') and immediately defines the two enum values with their concrete capacities and costs, so an agent knows exactly what this does versus siblings like ringkit_patch_knowledge or ringkit_get_knowledge_usage.

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 the decisive preconditions for each tier: pro needs $5 of paid credit (trial credit excluded) and bills daily; starter is refused while usage exceeds its limits. It doesn't name an alternative tool, but no sibling offers tier switching, so the guidance is effectively complete; the only gap is no explicit statement of when to prefer one tier.

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

ringkit_simulate_callA
Destructive
Inspect

Step 5: Try it in text. Try the receptionist in text mode (no number needed; billed like a call at the AI rate from the wallet, the free trial credit covers it). First call: omit callId and pass callerText "" to get the greeting; then pass the returned callId with each caller line. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
fromNo
callIdNo
businessIdNoDefaults to the business of the API key in the Authorization header.
callerTextYes
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, it discloses cost behavior (billed like a call at the AI rate from the wallet, covered by free trial credit) and retry semantics (reuse idempotencyKey; without one, each call executes again), which is exactly the destructive/idempotent context the hints only flag generically. It also reveals that the tool is stateful across calls via the returned callId.

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, front-loaded with the step label and the core action, then the multi-turn call protocol, then the retry caveat. The parenthetical billing note is relevant rather than 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 stateful, billable, multi-turn simulation tool with no output schema, the description covers the entry state, the continuation state, and the cost/retry profile. Nothing essential to invoking it correctly is missing, though it could note that simulated calls appear in call listings.

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?

With only 40% schema description coverage, the description carries the load for callId (omit on first call, then pass the returned value) and callerText (empty string to elicit the greeting), which the schema leaves as bare types. It leaves the 'from' parameter entirely unexplained, but businessId is covered by the schema itself and idempotencyKey by both.

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 and scope: "Try the receptionist in text mode (no number needed)", which clearly identifies a text-channel simulation of the agent. It does not explicitly name or contrast with the sibling ringkit_test_call, so an agent must infer the difference between text simulation and a real test call.

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 concrete sequencing: first call omits callId and passes callerText "" to get the greeting, then subsequent calls pass the returned callId with each caller line. It also states no phone number is required. The one gap is that it never says when to prefer this over ringkit_test_call or when to stop.

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

ringkit_start_knowledge_importA
DestructiveIdempotent
Inspect

Step 2: Teach it the business. Import the business website into the knowledge profile in the background: returns the queued import; poll ringkit_get_latest_knowledge_import until done or failed. Only fields that are still empty are filled; uploaded documents are never touched. An unfinished import is returned instead of starting another. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
urlYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the work is asynchronous and queued, that only empty fields are filled, that uploaded documents are protected, that an unfinished import is returned rather than duplicated, and that identical requests are deduplicated for 24 hours. These are exactly the mutation-side behaviors an agent needs and cannot get from the hints. The only mild tension is with destructiveHint=true, which the 'only empty fields are filled' phrasing softens rather than contradicts.

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?

It is front-loaded with the workflow position ('Step 2') and the action, then layers polling, fill semantics, and idempotency in short clauses. Dense but every clause carries information; the only cost is a slightly telegraphic register ('Teach it the business') that takes a beat to decode.

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 an async, no-output-schema mutation, the description covers the essentials: what is started, that a queued handle comes back, and how to poll for completion. It omits failure modes (invalid or unreachable URL, business not yet created) and what the import actually crawls, which would help an agent handle the error path without guessing.

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 67% and the undocumented parameter is `url`, which the description implicitly defines as the business website to crawl. It also adds dedup/retry semantics for idempotencyKey that go beyond the schema text. It stops short of stating URL format constraints (scheme, whether a path or subdomain is allowed) for the one bare 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 names a specific verb and resource: 'Import the business website into the knowledge profile in the background.' It also distinguishes itself from related siblings by noting that 'uploaded documents are never touched' (contrast ringkit_upload_knowledge_document) and by naming ringkit_get_latest_knowledge_import as the polling counterpart.

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 concrete follow-up guidance: poll ringkit_get_latest_knowledge_import 'until done or failed,' and states when to reuse vs. regenerate the idempotencyKey. The gap is that it never explains how this differs from the sibling ringkit_import_knowledge, so an agent choosing between the two import paths must infer the distinction from the name alone.

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

ringkit_start_setup_chatA
Destructive
Inspect

Step 2: Teach it the business. Open the setup assistant: a chat that interviews the owner and saves the answers (hours, services, policies, transfers...) into the knowledge profile and routing. Returns the open conversation with the assistant's opening message (restart=true starts over). Capped per business per day. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
contextNoonboarding
restartNo
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already flag a destructive, non-idempotent, open-world write. The description adds genuinely new behavior: a per-business daily cap, the fact that without an idempotencyKey each call executes again, and that restart discards prior progress. It does not say whether existing knowledge entries are overwritten or what happens when the cap is hit, which is a meaningful residual gap for a destructiveHint=true 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?

Front-loaded with the purpose, then behavior, then the return value, then retry/rate-limit caveats — no filler sentences. The parenthetical and ellipsis usage makes it slightly dense/run-on, but every clause carries 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 correctly states what comes back (the open conversation with the opening message), and it covers the mutation and rate-limit risks flagged by annotations. The unexplained 'context' enum and unspecified cap-exceeded error behavior are the only notable omissions.

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 only 50%, and the description explains restart and reinforces idempotencyKey semantics, but the 'context' enum (onboarding vs knowledge) is undocumented in both the schema and the description. The businessId default is covered only by the schema. Partial compensation, not full.

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 (open the setup assistant chat) and its scope (interviews the owner, saves answers into the knowledge profile and routing). The 'Step 2' framing plus 'Returns the open conversation' distinguishes it cleanly from ringkit_get_setup_chat, ringkit_send_setup_chat and ringkit_close_setup_chat.

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 clear usage context (step 2 of onboarding, restart=true to start over, reuse idempotencyKey on retries) and implies the chat is then continued elsewhere. It stops short of explicitly naming the sibling to use next (send_setup_chat) or stating when not to start a new chat, so it is strong but not exhaustive.

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

ringkit_test_callA
DestructiveIdempotent
Inspect

Step 8: Place a test call. Ring to from the business's RingKit number with the AI receptionist (a real call, billed at the AI rate). to must be configured on the business (ownerPhone, a transfer target or an SMS notify target) and verified. Ask the human to answer and talk to it like a caller. A retried identical call returns the same result; pass a new idempotencyKey to ring again. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
toYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations: it discloses that a real PSTN call is placed and billed at the AI rate, that only pre-configured and verified destinations are accepted, and that identical requests are deduplicated for 24 hours. These cost and side-effect details are exactly what an agent needs before firing a destructiveHint/openWorldHint operation.

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?

Front-loaded with the step number and core action, and every clause is on-topic. Slight redundancy between 'A retried identical call returns the same result; pass a new idempotencyKey to ring again' and the following dedup sentence, which restate the same retry rule twice.

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, no-output-schema call-placement tool, the definition covers prerequisites, cost, idempotency, and human-in-the-loop expectations. Nothing an agent needs to invoke it safely appears to be 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?

Adds real meaning beyond the schema for `to`, which the schema only constrains by regex — the description requires it to be a configured, verified destination and lists the acceptable destination types. The idempotencyKey guidance largely echoes the schema's own wording, though the 24-hour dedup window is new information.

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 concrete verb and resource ('Place a test call'), names the workflow position (Step 8), and clarifies that it dials the business's RingKit number with the AI receptionist as 'a real call, billed at the AI rate' — which implicitly separates it from the sibling ringkit_simulate_call without opening either schema.

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 explicit preconditions ('`to` must be configured on the business (ownerPhone, a transfer target or an SMS notify target) and verified') and tells the agent to have a human answer and behave like a caller. The gap: it never names ringkit_simulate_call as the non-billed alternative, so the choice between real and simulated calls is left implicit.

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

ringkit_top_upA
DestructiveIdempotent
Inspect

Step 6: Fund the wallet. Add funds (min $10). Returns a checkoutUrl that the human must open and pay (you can't pay), or null when credited immediately (dev). A retried identical call returns the same checkout URL; pass a new idempotencyKey to start a second top-up of the same amount. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
returnToNowallet
businessIdNoDefaults to the business of the API key in the Authorization header.
amountCentsYes
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the supplied annotations it discloses the asynchronous human-in-the-loop payment flow, the two possible return states (checkoutUrl vs. immediate credit in dev), and a 24-hour dedup window. The money-moving, open-world nature implied by destructiveHint/openWorldHint is made concrete rather than merely restated.

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 dense sentences, front-loaded with purpose and return behaviour before the idempotency detail. The dedup/timestamp sentence partly restates the preceding retry sentence, costing some tightness.

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 payment-initiation tool with no output schema, the description covers return values, human hand-off, and retry/dedup semantics well. It leaves the returnTo routing parameter and currency assumptions unaddressed, which keeps it short of fully 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?

With 50% schema coverage the description meaningfully compensates: it states the $10 minimum for amountCents and explains the deliberate-repeat semantics of idempotencyKey across retries. The returnTo enum (wallet/onboard) is never mentioned in the description and only partially documented 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?

Specific verb and resource ('Fund the wallet. Add funds'), with a concrete constraint (min $10) and the exact return shape (checkoutUrl or null). It is clearly distinguishable from read-oriented siblings such as ringkit_get_wallet or ringkit_get_auto_refill.

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 'Step 6' framing and the note that the human must open the URL and pay (the agent can't) give clear situational guidance, plus when to reuse vs. mint a new idempotencyKey. It stops short of naming sibling alternatives like ringkit_get_wallet for balance checks, so it lacks explicit when-not guidance.

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

ringkit_update_businessA
Destructive
Inspect

Step 3: Pick a voice. Update the business: name, timezone, vertical, website, or voice (the receptionist's voice, an id from list_voices). Owner identity (ownerEmail, ownerPhone), status and notify need an owner; API keys are owners. Reuse an idempotencyKey when retrying; without one, each call executes again.

NameRequiredDescriptionDefault
nameNo
voiceNo
notifyNo
statusNo
websiteNo
timezoneNo
verticalNo
businessIdNoDefaults to the business of the API key in the Authorization header.
ownerEmailNo
ownerPhoneNo
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.9/5.0
Behavior4/5

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

With annotations already declaring destructiveHint=true, idempotentHint=false and openWorldHint=true, the description adds genuinely new behavior: the non-idempotent retry semantics and the owner/API-key authorization requirement. It does not explain what 'destructive' means here (whether omitted fields are left untouched or reset, or whether pausing a business affects live numbers), which for a destructive update is the one behavior an agent most needs. 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.

Conciseness4/5

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

Three dense sentences, no filler, and the field list is front-loaded. The 'Step 3: Pick a voice' prefix is the weakest part — it occupies the highest-attention position with flow context rather than the tool's contract. Parenthetical asides are used efficiently to define `voice` inline.

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 an 11-parameter mutation with no output schema and no annotation explanation of the destructive flag, the description covers purpose, auth prerequisites and retry semantics but omits partial-vs-replace update behavior and return/response expectations. An agent could invoke it correctly in the happy path, but could not predict the consequences of a destructiveHint=true update. Adequate, with a clear gap around update semantics.

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 only 18% across 11 parameters, so the description carries real weight, and it does name most writable fields and clarify that `voice` is 'the receptionist's voice, an id from list_voices' and that `idempotencyKey` is a retry token. It leaves `businessId` to the schema (which documents its default) and does not explain `vertical` values, `status` effects, or the notify payload shapes beyond the field names. It compensates substantially for a thin schema but not completely.

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 ('Update the business') and enumerates the settable fields (name, timezone, vertical, website, voice, owner, status, notify), so an agent knows exactly what the call mutates. It is clearly the mutation counterpart to ringkit_get_business and ringkit_create_business, though it never names them explicitly. The 'Step 3: Pick a voice' lead-in is onboarding context rather than purpose and slightly muddies the opening.

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 a real prerequisite: 'Owner identity (ownerEmail, ownerPhone), status and notify need an owner; API keys are owners,' which tells the agent when those fields are even usable. The retry guidance ('Reuse an idempotencyKey when retrying; without one, each call executes again') is actionable usage instruction. What is missing is any explicit when-to-use-vs-alternatives routing (e.g., versus invite_owner for owner changes or put_routing for config).

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

ringkit_upload_knowledge_documentA
Idempotent
Inspect

Step 2: Teach it the business. Upload a document the receptionist should answer from (menu, price list, policies, manual). contentBase64 is the file's bytes, base64-encoded; fileName's extension picks the type: .pdf, .docx, .txt, .md, .html (PDF/DOCX only where the server has them enabled). Text is extracted at upload and searched on every call; a website import never removes uploads. Limits by tier (see get_knowledge_usage): 10 MB per file; Starter 5 documents / 50k tokens, Pro 100 / 500k. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
fileNameYes
businessIdNoDefaults to the business of the API key in the Authorization header.
contentTypeNo
contentBase64Yes
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A4/5.0
Behavior4/5

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

Goes well beyond annotations by disclosing 10 MB per-file limits, tier quotas (Starter 5 docs/50k tokens, Pro 100/500k), text extraction at upload with search on every call, and a 24-hour dedup window. The dedup and non-removal statements are consistent with idempotentHint=true and destructiveHint=false. It stops short of saying what happens on duplicate fileName or how a failed extraction surfaces.

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?

Front-loaded with the onboarding step and the action, then layers format, limits, and idempotency in a logical order with no filler. It is dense to the point of being a single run-on block, which slightly hurts scanability.

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 mutation tool with no output schema and only 40% schema coverage, the description should say what the call returns (document id, extraction status) and clarify contentType. It compensates well on input mechanics and limits, but an agent still cannot predict the response shape or the failure modes of a partial upload.

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?

With schema coverage at 40%, the description carries meaningful weight: it explains contentBase64 as raw file bytes base64-encoded and that fileName's extension selects the document type. However, contentType is never mentioned in either schema or description, and businessId is only covered by the schema itself, leaving a real gap among the five 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 and resource ('Upload a document the receptionist should answer from') and enumerates the document kinds (menu, price list, policies, manual). It also implicitly distinguishes itself from the website-import siblings by noting 'a website import never removes uploads', so an agent can tell which knowledge-ingestion tool to pick.

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 context for use (feeding the receptionist's answer corpus) plus concrete operational rules: supported extensions, PDF/DOCX server gating, tier limits via get_knowledge_usage, and when to mint a new idempotencyKey. It does not explicitly exclude alternatives such as put_knowledge/patch_knowledge or start_knowledge_import, so the sibling routing is only partially spelled out.

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

ringkit_verify_destinationA
DestructiveIdempotent
Inspect

Step 8: Place a test call. Call number from the business's RingKit number and read a 6-digit code twice (valid 10 minutes), to prove the business controls it. The human who answers must tell you the code for ringkit_confirm_destination. A retried identical call returns the same result; pass a new idempotencyKey to place another verification call. Identical requests are deduplicated for 24 hours; use a new idempotencyKey only to deliberately repeat the action.

NameRequiredDescriptionDefault
numberYes
businessIdNoDefaults to the business of the API key in the Authorization header.
idempotencyKeyNoOptional. Retries of the same call should reuse it (the stored result comes back); a new value deliberately repeats an identical call. The MCP POST's Idempotency-Key header takes precedence.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare a destructive, open-world, idempotent mutation, and the description fills in the substance behind those flags: a real phone call to a human, a 6-digit code read twice, a 10-minute validity window, and 24-hour deduplication of identical requests. What it omits is the cost/telephony side effect that plausibly justifies destructiveHint=true, and what happens on no-answer or wrong code.

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

Conciseness3/5

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

The core instruction is front-loaded and useful, but the idempotency guidance is stated twice in near-identical terms ('A retried identical call returns the same result; pass a new idempotencyKey...' then 'Identical requests are deduplicated for 24 hours; use a new idempotencyKey only...'), and it largely restates the idempotencyKey schema description. One consolidated sentence would carry the same 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 mutation with real-world side effects and no output schema, the description explains the flow and how the result is consumed downstream via ringkit_confirm_destination, which is the most important part. It does not indicate what the call returns (call id, status, code delivery state) or failure modes, leaving the agent without expectations about the response.

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 makes clear that `number` is the destination being verified and expands on idempotencyKey semantics beyond the schema's own text (retries reuse it, new value deliberately repeats). businessId is already documented in the schema. With 67% schema coverage, the baseline of 3 applies; the addition over the schema is modest since two of three params are already described in structured fields.

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?

Specific verb and resource: place a verification call to `number` from the business's RingKit number and read a 6-digit code to prove ownership. The stated goal ('to prove the business controls it') is concrete. It does not distinguish itself from sibling call-placing tools like ringkit_test_call or ringkit_simulate_call, which is the only thing keeping it from 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 'Step 8' framing and the explicit hand-off to ringkit_confirm_destination convey the workflow context, and the note about when to pass a new idempotencyKey ('only to deliberately repeat the action') is genuine usage guidance. However, there is no statement of when NOT to use this versus ringkit_test_call/ringkit_simulate_call, and no prerequisites such as a provisioned number being required.

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

ringkit_whoamiC
Read-onlyIdempotent
Inspect

Step 1: Create the business. The business behind the API key on this connection, with authKind, role and the key's scope (manage or read).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

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

The description's opening verb ('Create the business') contradicts annotations declaring readOnlyHint=true and destructiveHint=false, so the agent receives conflicting signals about whether this mutates state. The second sentence does add genuine value by disclosing what is returned (authKind, role, manage/read scope), which partially redeems it, but the contradiction is serious.

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

Conciseness2/5

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

The text is a fragmented two-sentence snippet where the first sentence is a leftover heading unrelated to the tool and the second is a sentence fragment. It is short, but much of the content is misleading rather than earning its place.

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

Completeness2/5

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

For a zero-parameter, annotation-covered, no-output-schema read tool, the description's only real job is to say what identity information is returned, and it half-delivers that. The misleading 'Create the business' framing and absent reference to the key's own scope semantics leave the agent without a reliable picture of the tool.

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?

There are zero parameters, so the schema requires no compensation from the description; baseline is 4. The mention of authKind, role, and manage/read scope refers to response fields rather than inputs and does not interfere.

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

Purpose2/5

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

The tool name says 'whoami' and the second sentence describes reading the business behind the API key, but the leading clause 'Step 1: Create the business.' states a completely different, write-oriented purpose. An agent reading the first sentence would believe this tool creates a business, which is the role of the sibling ringkit_create_business. The definition never cleanly states 'returns the identity/scope of the current API key'.

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?

'Step 1' weakly implies a position in an onboarding sequence, but no condition, prerequisite, or alternative is named. With siblings like ringkit_get_business and ringkit_create_business in the same family, the agent gets no guidance on which one to call or when this one is appropriate.

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.

  1. 51 tool updates
    • First observedringkit_close_setup_chat
    • First observedringkit_complete_onboarding
    • First observedringkit_confirm_destination
    • First observedringkit_create_api_key
    • First observedringkit_create_business
    • First observedringkit_create_webhook
    • First observedringkit_delete_knowledge_document
    • First observedringkit_get_auto_refill
    • First observedringkit_get_business
    • First observedringkit_get_call
    • First observedringkit_get_knowledge
    • First observedringkit_get_knowledge_document
    • First observedringkit_get_knowledge_usage
    • First observedringkit_get_latest_knowledge_import
    • First observedringkit_get_onboarding
    • First observedringkit_get_recording
    • First observedringkit_get_routing
    • First observedringkit_get_setup_chat
    • First observedringkit_get_voice_stack
    • First observedringkit_get_wallet
    • First observedringkit_import_knowledge
    • First observedringkit_invite_owner
    • First observedringkit_list_api_keys
    • First observedringkit_list_business_users
    • First observedringkit_list_calls
    • First observedringkit_list_destinations
    • First observedringkit_list_knowledge_documents
    • First observedringkit_list_ledger
    • First observedringkit_list_numbers
    • First observedringkit_list_voices
    • First observedringkit_list_webhooks
    • First observedringkit_patch_knowledge
    • First observedringkit_provision_number
    • First observedringkit_put_auto_refill
    • First observedringkit_put_knowledge
    • First observedringkit_put_routing
    • First observedringkit_put_voice_stack
    • First observedringkit_release_number
    • First observedringkit_revoke_api_key
    • First observedringkit_search_numbers
    • First observedringkit_send_setup_chat
    • First observedringkit_set_knowledge_tier
    • First observedringkit_simulate_call
    • First observedringkit_start_knowledge_import
    • First observedringkit_start_setup_chat
    • First observedringkit_test_call
    • First observedringkit_top_up
    • First observedringkit_update_business
    • First observedringkit_upload_knowledge_document
    • First observedringkit_verify_destination
    • First observedringkit_whoami

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to call, text, and email businesses on your behalf, read back transcripts, recordings, and replies.
    86 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to prepare, authorize, and place real outbound phone calls through an Android SIM gateway, then retrieve recordings, full transcripts, contact memory, and scheduled callbacks. Also supports inbound reception instructions, reusable personalities, and live call management from a private dashboard.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Gives an AI assistant its own real phone number and email address so it can place and answer calls, book reservations by phone, send and receive texts, and read written summaries, structured details, and transcripts of every conversation. Also manages contacts, persona and voice settings, webhooks, and a unified call/message history through a hosted OAuth-secured MCP endpoint requiring no local code.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources