Skip to main content
Glama
vobiz-ai

Vobiz MCP Server

Official
by vobiz-ai

Vobiz MCP server

The official Model Context Protocol server for Vobiz. It lets Claude and any other MCP client run real work on your Vobiz account:

  • place and control voice calls, run conferences, and stream call audio to AI agents

  • build VobizXML IVRs

  • read call records and recordings

  • manage phone numbers, SIP trunks, credentials, IP allow-lists, SIP endpoints, voice applications and sub-accounts

  • read billing transactions

  • send SMS, MMS and RCS messages

It also ships the Vobiz Agent Skills, so the model knows how each Vobiz product works before it acts.

CI npm License: MIT

Tools

106 in 12 toolsets: calls, in-call control, conferences, audio streams, IVR/XML, records, numbers, SIP trunks and endpoints, applications, sub-accounts, billing, SMS/MMS/RCS, opt-outs, skills

Prompts

15: one per Vobiz skill, e.g. vobiz-voice-xml, vobiz-sip-trunking

Resources

vobiz://skills/index and vobiz://skills/{name} (with completion)

Transports

stdio (npx), Streamable HTTP for one account, hosted multi-tenant Streamable HTTP with OAuth 2.1

Safety

Calling, messaging and account changes are off until enabled. Every write is confirmed, rate-limited and idempotent. VOBIZ_READ_ONLY and VOBIZ_TOOLSETS narrow what the model can see.

Looking for documentation search instead of account operations? Use the hosted Vobiz Docs MCP server (https://www.vobiz.ai/docs/mcp). The two servers work well side by side.

Contents

Related MCP server: Dial MCP Server

What you can ask

Ask Claude

What happens

"What's my Vobiz balance and how many calls are live?"

get_account_balance, get_concurrency, list_live_calls

"Show yesterday's missed calls to +91 80 1234 5678"

list_call_records filtered by date, number and hangup_cause

"Call +919876543210 from my Bangalore number and read them this reminder"

list_phone_numbers → you confirm → make_call → speak_text → get_call_status

"Build an IVR: press 1 for sales, 2 for support"

get_vobiz_skill vobiz-voice-xml → generate_answer_xml

"Text +14155550123 'Your order has shipped' from my US number"

preview_message_cost → you confirm → send_message → get_message

"Who replied to our last SMS broadcast?"

list_broadcasts, list_messages direction=in, list_conversations

"Block +14155550123 from future messages"

add_opt_out (you confirm)

"Where do my webhooks go?"

list_webhooks across applications and SIP trunks

"Set up a SIP trunk for my LiveKit agent"

get_vobiz_skill vobiz-sip-trunking → create_sip_trunk (you confirm)

"Mute everyone except the host in the sales-standup conference"

get_conference → mute_conference_member

"Stream this call's audio to my agent at wss://agent.example.com/ws"

start_audio_stream (you confirm)

"Allow our office IP 203.0.113.10 on the trunk and add a SIP user for the PBX"

add_ip_acl_entry, create_trunk_credential (you confirm)

"Create a sub-account for the Mumbai team and send them the KYC link"

create_sub_account, create_sub_account_kyc_session (you confirm)

"What did we spend last week?"

list_transactions with a date range

"How do I migrate my Plivo integration?"

vobiz-plivo-migration prompt

Install

You need a Vobiz account, plus its Auth ID and Auth Token from the overview page of the Vobiz console. The local options need Node.js 22.9 or newer. The full guide, with config files for every client, is docs/INSTALL.md.

Client

Install

Claude (web, Desktop, mobile)

Settings → Connectors → Add custom connector → https://mcp.vobiz.ai/mcp

Claude Desktop extension

Open vobiz-mcp-v1.1.1.mcpb from the latest release

Claude Code

/plugin install vobiz --marketplace vobiz-ai/Vobiz-MCP-Server (MCP server + skills)

OpenAI Codex

codex mcp add vobiz --env VOBIZ_AUTH_ID=MA_XXXXXXXX --env VOBIZ_AUTH_TOKEN=YOUR_AUTH_TOKEN -- npx -y github:vobiz-ai/Vobiz-MCP-Server#v1.1.1

Gemini CLI

gemini extensions install https://github.com/vobiz-ai/Vobiz-MCP-Server

Cursor

One-click install

VS Code / Copilot

One-click install

Goose

goose configure → Add Extension → npx -y github:vobiz-ai/Vobiz-MCP-Server#v1.1.1 (deeplink)

Windsurf, Zed, Cline, JetBrains, Continue, LM Studio, Warp, ChatGPT

docs/INSTALL.md

Any other MCP client:

{
  "mcpServers": {
    "vobiz": {
      "command": "npx",
      "args": [
        "-y",
        "github:vobiz-ai/Vobiz-MCP-Server#v1.1.1"
      ],
      "env": {
        "VOBIZ_AUTH_ID": "MA_XXXXXXXX",
        "VOBIZ_AUTH_TOKEN": "YOUR_AUTH_TOKEN"
      }
    }
  }
}

Calling, messaging and account changes stay off until you add VOBIZ_ENABLE_CALLS, VOBIZ_ENABLE_MESSAGING or VOBIZ_ENABLE_PROVISIONING set to "true" to env.

To self-host the remote connector: docker run -p 3000:3000 -e VOBIZ_HOSTED_URL=https://mcp.example.com -e VOBIZ_HOSTED_SECRET="$(openssl rand -hex 32)" ghcr.io/vobiz-ai/vobiz-mcp:v1.1.1 (docs/HOSTING.md).

Tools

Every tool has a title, input validation, and annotations: readOnlyHint: true or destructiveHint: true, plus idempotentHint and openWorldHint. Results are structuredContent, with the same JSON sent as text. docs/TOOLS.md lists every input and is generated from the registry.

Toolset

Read-only

Writes (need confirmation)

calls

get_call_status, list_live_calls

make_call, end_call, send_dtmf

call_control

transfer_call, hold_call, unhold_call, play_audio, stop_audio, speak_text, stop_speaking, start_recording, stop_recording

conferences

list_conferences, get_conference

end_conference, end_all_conferences, mute_conference_member, unmute_conference_member, deafen_conference_member, undeafen_conference_member, kick_conference_member, hangup_conference_member, play_audio_to_conference_member, stop_audio_to_conference_member, start_conference_recording, stop_conference_recording

media

list_audio_streams, get_audio_stream, list_transactions, list_transaction_types

start_audio_stream, stop_audio_stream, delete_recording, release_phone_number, cancel_number_release, assign_number_to_subaccount, unassign_number_from_subaccount

records

get_call_details, list_call_records, get_call_recording, list_recordings

voice_xml

generate_answer_xml, get_gather_result, list_webhook_events, list_webhooks

gather_dtmf

account

get_account_details, get_account_balance, get_concurrency, list_phone_numbers, get_phone_number_details, get_number_health, list_sip_trunks, get_sip_trunk

provisioning

list_applications, get_application, search_available_numbers

create_application, update_application, delete_application, buy_phone_number, update_phone_number, create_sip_trunk, update_sip_trunk, delete_sip_trunk

sip

list_sip_endpoints, get_sip_endpoint, list_trunk_credentials, list_ip_acl_entries, list_origination_uris

create_sip_endpoint, update_sip_endpoint, delete_sip_endpoint, create_trunk_credential, update_trunk_credential, delete_trunk_credential, add_ip_acl_entry, update_ip_acl_entry, delete_ip_acl_entry, create_origination_uri, update_origination_uri, delete_origination_uri

subaccounts

list_sub_accounts, get_sub_account, get_sub_account_kyc_status

create_sub_account, update_sub_account, delete_sub_account, create_sub_account_kyc_session

messaging

list_messaging_numbers, preview_message_cost, list_messages, get_message, list_conversations, get_conversation_messages, list_broadcasts, get_broadcast, check_opt_out, list_opt_outs

send_message, add_opt_out, remove_opt_out

skills

list_vobiz_skills, get_vobiz_skill

Choosing tools. 106 tools is a lot for some clients. Load only what you need:

  • VOBIZ_TOOLSETS=calls,call_control,records,skills registers just those groups.

  • VOBIZ_READ_ONLY=true keeps only the read-only tools.

Secrets. SIP passwords, credential secrets and sub-account tokens are always redacted. Reset or copy them in the Vobiz console.

Hosting needed. gather_dtmf, get_gather_result, list_webhook_events, hold_call and unhold_call need Vobiz to reach this server. Use single-account HTTP mode with VOBIZ_PUBLIC_URL for them.

Errors. Errors are MCP tool errors (isError: true) shaped like this:

{ "ok": false, "error": "not_allowed", "message": "…what happened and what to do…", "retryable": false, "http_status": 400, "hint": "…" }

Error kinds.

  • Input and access: invalid_input, missing_credentials, auth_failed, forbidden, not_found, insufficient_balance

  • Limits and availability: rate_limited, timeout, network_error, service_unavailable

  • Server switches and policy: calls_disabled, messaging_disabled, provisioning_disabled, confirmation_required, not_allowed, spending_limit

  • Idempotency: duplicate_blocked, idempotency_conflict, in_progress, outcome_unknown

  • Other: call_not_active, opted_out, unsupported, internal_error

Call outcomes. Call results add outcome (answered, busy, no_answer, rejected, invalid_number, unreachable, cancelled…) with the typical SIP code.

Skills, prompts and resources

The 15 Vobiz Agent Skills ship inside the package (skills/) and are exposed three ways, so they work in every client:

Surface

How to use it

Tools

list_vobiz_skills returns each skill's name, description and sections. get_vobiz_skill { name, section? } returns the whole skill or one section.

Prompts

Each skill is a prompt with an optional task argument. In Claude Code, type /mcp__vobiz__vobiz-voice-xml build an IVR for a clinic.

Resources

vobiz://skills/index and vobiz://skills/{name}, with name completion.

The skills:

  • Voice and calls: vobiz-api, vobiz-voice-calls, vobiz-voice-xml, vobiz-audio-streams, vobiz-cdr

  • Numbers and infrastructure: vobiz-phone-numbers, vobiz-sip-trunking, vobiz-applications-endpoints

  • AI and messaging: vobiz-ai-voice-agents, vobiz-sms, vobiz-whatsapp

  • Accounts and partners: vobiz-sub-accounts, vobiz-partner-api

  • Migration and scoping: vobiz-plivo-migration, vobiz-forward-deployed-engineer

The skills come from the Vobiz docs repository. Refresh them with npm run skills:sync [path/to/.mintlify/skills].

Safety model

Everything below is enforced by the server, not left to the model.

Guard

Default

Outbound calls

Off (VOBIZ_ENABLE_CALLS)

Sending messages, changing opt-outs

Off (VOBIZ_ENABLE_MESSAGING)

Buying or releasing numbers; changing trunks, SIP endpoints, credentials, IP allow-lists, applications and sub-accounts; deleting recordings

Off (VOBIZ_ENABLE_PROVISIONING). Purchases also need VOBIZ_MAX_NUMBER_COST > 0.

Explicit confirmation

confirm: true on every call, message, transfer, recording, purchase and account change. MCP clients also prompt for every destructive tool.

Idempotency

idempotency_key replays the first result instead of acting twice. Identical calls inside VOBIZ_DUPLICATE_CALL_WINDOW_SEC are refused. Unknown outcomes stay blocked.

Call limits

Destination countries and blocked prefixes, plus caps on duration, per-minute and per-hour calls, and concurrency. A balance floor applies to prepaid accounts.

Message limits

Recipients per send, messages per minute and per hour, recipient countries. Senders must be messaging numbers on the account. Opt-outs are respected.

Number purchases

Cost cap, daily cap, balance pre-check, already-owned check

Call-control URLs

https only, approved hosts only (hosted mode: any public host). No credentials in URLs.

Tenant isolation

The account comes from the credentials only. No tool accepts an account ID.

Secrets

Auth tokens, SIP passwords and other secrets are redacted from results. Logs carry route templates and status codes only, never phone numbers or tokens.

Untrusted content

Message bodies, caller names and callback payloads are data, never instructions.

Configuration

All settings are environment variables. Every one is optional except credentials (and the hosted settings for hosted mode). .env.example lists them all with comments.

Area

Variables (default)

Tool selection

VOBIZ_TOOLSETS (all), VOBIZ_READ_ONLY (false)

Credentials

VOBIZ_AUTH_ID, VOBIZ_AUTH_TOKEN, VOBIZ_BASE_URL (https://api.vobiz.ai), VOBIZ_ENV (development), VOBIZ_TIMEOUT_MS (15000), VOBIZ_LOG_LEVEL (info), VOBIZ_DEFAULT_PAGE_SIZE (20)

Calls

VOBIZ_ENABLE_CALLS (false), VOBIZ_DEFAULT_ANSWER_URL, VOBIZ_VERIFY_CALLER_ID (true), VOBIZ_ALLOWED_COUNTRY_CODES (any), VOBIZ_BLOCKED_PREFIXES, VOBIZ_ALLOWED_DESTINATIONS, VOBIZ_ALLOWED_CALLER_IDS, VOBIZ_MAX_CALL_DURATION_SEC (600), VOBIZ_MAX_CALLS_PER_MINUTE (5), VOBIZ_MAX_CALLS_PER_HOUR (30), VOBIZ_MAX_CONCURRENT_CALLS (3), VOBIZ_CHECK_BALANCE (true), VOBIZ_MIN_BALANCE (0), VOBIZ_BALANCE_CURRENCY (primary wallet), VOBIZ_DUPLICATE_CALL_WINDOW_SEC (120), VOBIZ_IDEMPOTENCY_FILE

Messaging

VOBIZ_ENABLE_MESSAGING (false), VOBIZ_MESSAGING_ALLOWED_COUNTRY_CODES (any), VOBIZ_MAX_RECIPIENTS_PER_SEND (10), VOBIZ_MAX_MESSAGES_PER_MINUTE (20), VOBIZ_MAX_MESSAGES_PER_HOUR (200), VOBIZ_VERIFY_SENDER (true)

Account changes (numbers, trunks, SIP, applications, sub-accounts, recordings)

VOBIZ_ENABLE_PROVISIONING (false), VOBIZ_MAX_NUMBER_COST (0 = no purchases), VOBIZ_MAX_NUMBER_PURCHASES_PER_DAY (1)

URLs

VOBIZ_ALLOWED_URL_HOSTS, VOBIZ_ALLOW_ANY_URL_HOST (false)

Links

VOBIZ_CONSOLE_URL, VOBIZ_PRIVACY_URL, VOBIZ_DOCS_URL, VOBIZ_DOCS_MCP_URL (public Vobiz URLs)

Single-account HTTP

PORT (3000), HOST (127.0.0.1), VOBIZ_HTTP_SECRET, VOBIZ_PUBLIC_URL, VOBIZ_REMOTE_ALLOW_CALLS (false), VOBIZ_WEBHOOK_SIGNATURE (require), VOBIZ_ANSWER_TEXT

Hosted connector

VOBIZ_HOSTED_URL, VOBIZ_HOSTED_SECRET, VOBIZ_ACCESS_TOKEN_TTL_SEC (3600), VOBIZ_REFRESH_TOKEN_TTL_SEC (2592000), VOBIZ_CIMD_HOSTS (claude.ai), VOBIZ_ALLOWED_ORIGINS (https://claude.ai,https://claude.com), VOBIZ_HOSTED_EXCLUDED_TOOLS

Run modes

Mode

Command

For

stdio

npx -y @vobiz/mcp (or node dist/index.js)

Claude Desktop, Claude Code, Cursor and other local clients on one account

Single-account HTTP

npx -y @vobiz/mcp http (or npm run start:http)

One account over Streamable HTTP behind a path secret; hosted IVR flows, gather, signed webhooks

Hosted multi-tenant

npx -y @vobiz/mcp hosted (or npm run start:hosted, Docker)

Public connector: each user signs in with OAuth and acts only on their own account

Dashboard

npm run dashboard → http://127.0.0.1:5178

Read-only local browser view built on the same tools

Single-account HTTP endpoints

Path

Purpose

Auth

/mcp/<VOBIZ_HTTP_SECRET>

Streamable HTTP MCP

path secret

/sse/<secret>, /message/<secret>

legacy SSE MCP for older clients

path secret

/xml/flow/<id>

hosted XML (answer, transfer, hold, dial)

Vobiz signature + 128-bit ID

/xml/gather/<id>

Gather Digits callback; returns follow-up XML

Vobiz signature + ID

/webhooks/vobiz

answer, hangup and status callbacks

Vobiz signature

/answer

static <Speak> XML

none

/health

liveness

none

Callback signatures. Callbacks are checked with X-Vobiz-Signature-V3 = base64(HMAC-SHA256(auth_token, URL-without-query + "." + nonce)). V2 is accepted as a fallback, and the comparison is constant-time. Reused nonces are rejected, and duplicate events are stored once.

Hosted connector (OAuth)

vobiz-mcp hosted is a complete OAuth 2.1 authorization server and MCP resource server in one process. It is built for Claude's connector directory and works with any remote MCP client.

Sign-in flow:

  1. Claude calls POST /mcp without a token. The server answers 401 with WWW-Authenticate: Bearer resource_metadata=".../.well-known/oauth-protected-resource/mcp".

  2. Claude reads the protected-resource metadata (RFC 9728, resource = <VOBIZ_HOSTED_URL>/mcp) and the authorization-server metadata (RFC 8414). The AS metadata advertises PKCE S256, dynamic client registration (RFC 7591) and Client ID Metadata Documents.

  3. Claude registers itself, or uses its CIMD URL, and opens /authorize. The user enters their Auth ID and Auth Token and can tick read-only access. The server checks the credentials with Vobiz, then redirects back with a single-use code.

  4. /token exchanges the code (PKCE checked) for a 1-hour access token and a 30-day refresh token.

Token handling:

  • Tokens are AES-256-GCM sealed, so no credential database is needed and any number of replicas can share VOBIZ_HOSTED_SECRET.

  • Each request runs on the signed-in account only, with per-account rate limits and idempotency.

  • Rotating the Auth Token in the Vobiz console revokes every token for that account immediately.

Tool exclusions. The hosted connector leaves out tools that buy things or need the server to host one account's callbacks. The default list is buy_phone_number, gather_dtmf, get_gather_result, list_webhook_events, hold_call and unhold_call, and you can change it with VOBIZ_HOSTED_EXCLUDED_TOOLS. Browser Origin headers are checked against VOBIZ_ALLOWED_ORIGINS.

Deployment, DNS, scaling and directory submission are covered in docs/HOSTING.md and docs/PUBLISHING.md.

Privacy policy

This server is published by Vobiz (Ilaimitado Private Limited). The full policy is at https://vobiz.ai/privacy.

What it processes:

  • Your Vobiz Auth ID and Auth Token, used only to authenticate your requests to the Vobiz API.

  • The tool arguments the MCP client sends, such as phone numbers, message text and call settings.

  • The Vobiz API responses it returns to the client.

What it stores:

  • Local modes: credentials stay in your environment or OS keychain. Idempotency records stay in memory, or in VOBIZ_IDEMPOTENCY_FILE if you set it.

  • Hosted mode: the server keeps no credential or conversation database. Credentials travel inside encrypted, expiring tokens held by your MCP client. Per-account rate-limit counters and idempotency records live in memory for up to 24 hours.

What it never does: it does not read your conversation history, memory or files. It does not use your data for advertising, and it does not sell or share it with third parties.

Logs: logs contain route templates, HTTP status codes and timings. They never contain tokens, message text or phone numbers.

Retention: call records, recordings and messages remain in your Vobiz account under the Vobiz terms (https://vobiz.ai/terms).

Contact: support@vobiz.ai

Development

git clone https://github.com/vobiz-ai/Vobiz-MCP-Server.git
cd Vobiz-MCP-Server
npm ci
cp .env.example .env        # placeholders only; fill in your own credentials
npm run check               # type-check, build, 253 mocked tests
npm run test:live           # live read-only smoke test with .env credentials (calls/messages/purchases forced off)
npm run test:live:hosted    # live OAuth flow + hosted tools against the real API (no messages sent)
npm run inspector           # MCP Inspector against dist/index.js
npm run docs:tools          # regenerate docs/TOOLS.md
npm run skills:sync         # refresh bundled skills from the docs repository

Code layout:

  • Tools live in src/tools/{calls,control,conferences,media,records,account,voice,provisioning,sip,subaccounts,messaging}.ts. Each file is one toolset, registered in src/server.ts.

  • Skills are in src/skills.ts.

  • Guardrails are in src/policy.ts, src/idempotency.ts and src/outcomes.ts.

  • VobizXML generation is in src/xml.ts, hosted flows in src/flows.ts, and callback verification in src/webhooks.ts.

  • Transports are in src/index.ts (stdio), src/http.ts (single account) and src/hosted.ts (OAuth multi-tenant).

Tests:

  • Mocked tests never touch the network, and no test places a call, sends a message or buys a number.

  • CI runs lint, build, the tests on Node 22 and 24, npm audit, the .mcpb manifest check and a package dry-run.

  • Releases are tag-driven (v1.2.3). They publish to npm with provenance and to the MCP Registry, attach the .mcpb bundle, and push the Docker image (see docs/PUBLISHING.md).

Troubleshooting

Symptom

Fix

missing_credentials / auth_failed

Set or rotate VOBIZ_AUTH_ID / VOBIZ_AUTH_TOKEN. In hosted mode, reconnect the connector.

forbidden on account details

Account details need main-account (MA_) credentials. Balance, concurrency and numbers work with sub-accounts.

calls_disabled / messaging_disabled / provisioning_disabled

Enable the capability (environment variable, or the desktop extension settings).

confirmation_required

The model must ask you, then repeat the call with confirm: true.

not_allowed

Destination or recipient country, blocked prefix, allowlist, sender or caller ID not on the account, or URL host not approved

rate_limited

Server caps (minute, hour, concurrency, messages) or the account's CPS limit. Wait and retry.

duplicate_blocked

Same call within VOBIZ_DUPLICATE_CALL_WINDOW_SEC. Pass a new idempotency_key if a second call is intended.

outcome_unknown

Do not retry. Check list_live_calls, list_call_records or list_messages.

unsupported on gather or hold

Run single-account HTTP mode with VOBIZ_PUBLIC_URL.

Callbacks rejected with 401

VOBIZ_PUBLIC_URL must match the URL Vobiz calls exactly. Try VOBIZ_WEBHOOK_SIGNATURE=verify_if_present.

Hosted sign-in says the link expired

The sign-in page is valid for 15 minutes. Start the connection again from your client.

Built by Team Vobiz

Vobiz is a global programmable telephony platform: SIP trunking, voice APIs, SMS, WhatsApp and AI voice agent integrations in 130+ countries.

Support: support@vobiz.ai · Documentation · Issues · Contributing · Security · Code of Conduct

License

MIT © Vobiz

Available Tools

106 tools
add_ip_acl_entryAdd trunk IP ACL entryA
Destructive
Inspect

Allow-list a public IPv4 address or CIDR range (e.g. 198.51.100.42 or 10.20.30.0/24) so a static-IP PBX, SBC or carrier can use Vobiz trunks without digest credentials. Attach it to a trunk with update_sip_trunk (ipacl_uuid). Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel, e.g. Office PBX. Returned as `description`.
confirmYesMust be true, set only after the user explicitly approved: allow-listing this IP address for SIP traffic.
ip_addressYesIPv4 address or IPv4 CIDR block.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the write/high-impact nature is covered. The description adds genuinely new behavior: an environment-flag gate (VOBIZ_ENABLE_PROVISIONING) and the required confirm: true, plus the security effect of removing digest-credential needs. It stops short of describing duplicate handling or response shape.

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

Conciseness4/5

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

Three dense sentences with the purpose front-loaded, then the linkage instruction, then the gating prerequisites. No filler, though the confirm/gate sentences could be tightened.

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 3-param mutation with no output schema, the description covers purpose, linkage, and gating prerequisites adequately. It omits what happens on duplicates or the returned identifier (schema hints name is returned as `description`), which an agent might want, 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?

Schema description coverage is 100%, so name/ip_address/confirm are already documented in the schema (including the CIDR format and the name→description mapping). The description's example addresses add little 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 (allow-list) plus resource (public IPv4/CIDR for trunk ACL) and explains the concrete outcome: PBX/SBC/carrier trunks usable without digest credentials. It is clearly distinguishable from siblings like update_ip_acl_entry, delete_ip_acl_entry and list_ip_acl_entries.

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 operating context: use it to attach an IP to a trunk via update_sip_trunk (ipacl_uuid), and notes it is gated by VOBIZ_ENABLE_PROVISIONING and confirm: true. It does not explicitly state when NOT to use it (e.g. reusing an existing entry vs. create), but the usage path is unambiguous.

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

add_opt_outAdd an opt-outA
DestructiveIdempotent
Inspect

Block a phone number from receiving messages on a channel (for example after a customer asks to stop). Requires confirm: true and VOBIZ_ENABLE_MESSAGING=true. Safe to repeat.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoNote stored on the record, e.g. 'customer request'.
channelNosms (default; also covers mms), mms or rcs.
confirmYesMust be true after the user approved blocking this number.
phone_numberYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=true). The description adds real value beyond them by disclosing the environment-flag prerequisite (VOBIZ_ENABLE_MESSAGING=true) and the confirm gate, and by restating the idempotency guarantee in plain terms ('Safe to repeat'). It does not mention how the block is reversed or any permission model, which keeps it at a 4.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and effect, followed by prerequisites and the idempotency note. 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 4-parameter mutation with no output schema, the description covers effect, example trigger, prerequisites, and repeat-safety. The only meaningful omission is how to undo the block, though the sibling remove_opt_out partially signals that.

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 75%, so the schema already documents reason, channel, and confirm well. The description only restates the confirm requirement and implies channel scoping without adding format or syntax detail, so it adds little beyond the structured fields.

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

Purpose5/5

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

The description states a specific verb and resource: 'Block a phone number from receiving messages on a channel.' That phrasing distinguishes it cleanly from the sibling check_opt_out (query), list_opt_outs (enumerate), and remove_opt_out (reverse), without needing to open any 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?

It gives a concrete usage context ('for example after a customer asks to stop') and a hard precondition (confirm: true), so the agent knows when this tool is appropriate. It stops short of explicitly naming the alternatives or stating when NOT to use it, so it falls just short of a 5.

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

assign_number_to_subaccountAssign a number to a sub-accountA
DestructiveIdempotent
Inspect

Move a number from this Vobiz account's pool to one of its sub-accounts (POST /account/{id}/numbers/{e164}/assign-subaccount). The sub-account then uses the number for its calls. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: assigning this number to this sub-account.
phone_numberYes
sub_account_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context: the environment-flag gating, the confirm gate, and the fact that the number leaves the account pool and is then used by the sub-account for its calls. It does not state reversibility or what happens on repeated calls despite the idempotent 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 tight sentences with the core action front-loaded and preconditions trailing. Including the raw endpoint path is slight overhead, but every sentence carries signal and nothing is redundant.

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 mutation with no output schema, the description covers the essential context - gating flag, explicit confirmation, and the state change to both accounts. A note on reversibility (that unassign_number_from_subaccount exists) would close the remaining 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 only 33%: confirm is documented in the schema, but phone_number and sub_account_id have no descriptions. The description compensates partially by restating the 'confirm: true' requirement and hinting at E.164 format via the {e164} path segment, but it adds nothing about the sub_account_id parameter or the phone number pattern.

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+resource with directionality: 'Move a number from this Vobiz account's pool to one of its sub-accounts.' The effect on both parties (parent pool loses, sub-account uses it for calls) and the underlying endpoint are given, so an agent can immediately distinguish it from the sibling unassign_number_from_subaccount.

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 real preconditions: the tool is 'Gated by VOBIZ_ENABLE_PROVISIONING' and requires 'confirm: true'. The direction of the move implicitly selects it over unassign_number_from_subaccount, but there is no explicit when-not-to-use statement or note about when the number must first be in the pool.

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

buy_phone_numberBuy a phone numberA
DestructiveIdempotent
Inspect

Buy one number from Vobiz inventory (POST /numbers/purchase-from-inventory). This charges setup + monthly fee immediately. Server checks: provisioning enabled, the number is in inventory, cost within VOBIZ_MAX_NUMBER_COST, enough balance, daily purchase cap, not already owned. Requires confirm: true (after showing the user the number and its fees) and an idempotency_key; repeating the key never buys twice.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: buying this number at the quoted fees.
currencyNo
phone_numberYesNumber from search_available_numbers, E.164.
idempotency_keyYesUnique key for this intended operation (e.g. a UUID). Repeating it replays the first result instead of acting again.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only flag destructive/idempotent/openWorld; the description adds substantive behavior the agent could not infer: immediate setup + monthly charges, five server-side preconditions (provisioning, inventory, cost cap, balance, daily cap, ownership), and idempotency replay semantics. This is exactly the beyond-annotation context a mutation tool needs.

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 cost consequence and the confirm prerequisite are front-loaded before the server-check list, which is the right ordering for a destructive purchase. It is a dense run-on block rather than cleanly separated sentences, but no clause is filler.

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

Completeness5/5

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

With no output schema, the description still covers what an agent needs: the charge model, all gating checks, the mandatory confirmation flow, and replay behavior. Nothing material for correct invocation is left unstated.

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 description reinforces the two riskiest parameters: why confirm must be true and that repeating idempotency_key 'never buys twice'. The currency parameter is left entirely to the schema's regex, so it adds meaning on most but not all 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 ('Buy one number from Vobiz inventory') and even pins the underlying endpoint. An agent can distinguish this from search_available_numbers and release_phone_number without opening any schema, since the purchase action and its inventory source are named.

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 specifies the operative condition for calling it — 'Requires confirm: true (after showing the user the number and its fees)' — which is real when-to-use guidance tied to a user-approval step. It does not explicitly name the sibling to run first (search_available_numbers) or state when not to use it, so it stops 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.

cancel_number_releaseCancel a pending number releaseA
DestructiveIdempotent
Inspect

Keep a number that is in pending_release (POST /account/{id}/numbers/{e164}/cancel-release): Vobiz restores it to active and refunds the release fee to the balance. Works only during the 24-hour cooldown. Any trunk or application the release detached must be re-linked with update_phone_number. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: cancelling the release of this number.
phone_numberYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare it a non-read-only, idempotent, open-world mutation, and the description adds substantial context beyond them: the restore-to-active effect, the fee refund, the 24-hour cooldown window, the env-var and confirm gating, and the side effect that detached trunks/applications must be re-linked. The destructiveHint=true flag is not explicitly reconciled, but the described restorative behavior is not contradicted by it.

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 dense sentences, front-loaded with the action and its effect, then preconditions, then side effects. The parenthetical endpoint and env-var gating add useful precision rather than filler, though the middle sentences are packed tightly enough to be slightly heavy.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema, the description covers the essential gates, time window, state effects and follow-up remediation. The only real gap is that phone_number's expected format is left to the endpoint placeholder and the schema pattern.

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%: confirm is fully documented in the schema ('Must be true, set only after the user explicitly approved'), while phone_number carries only a pattern. The description partially compensates by embedding the {e164} placeholder in the endpoint path and reiterating the confirm: true gate, but adds no meaning beyond what schema plus endpoint already convey.

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 precise verb and resource ('Keep a number that is in pending_release'), names the exact API endpoint, and spells out the resulting state change (restored to active, fee refunded). It is unmistakably the inverse of the sibling release_phone_number, so an agent can select it 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?

Gives clear preconditions for use: only valid during the 24-hour cooldown, requires VOBIZ_ENABLE_PROVISIONING and confirm: true. It also routes the agent to update_phone_number for the follow-up re-linking of detached trunks/apps, but it never names release_phone_number as the counterpart decision, so alternative routing is only implied.

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

check_opt_outCheck opt-outA
Read-only
Inspect

Check whether a phone number has opted out of messages on a channel. Vobiz refuses sends to opted-out numbers. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNosms (default; also covers mms), mms or rcs.
phone_numberYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and 'Read-only' merely restates them. The description does add one piece of real platform behavior — that sends to opted-out numbers are refused — but omits what happens on an invalid/unknown number and what the result looks like.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the operational reason, then the safety profile. Nothing is padded or repeated.

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 read-only lookup with no output schema, the description should indicate the shape of the answer (boolean, status object, etc.) and it does not. With annotations covering the safety profile and only two simple parameters, the omission is a gap but not a severe one.

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%: the channel enum carries a description while phone_number only has a regex pattern. The description mentions 'a phone number' and 'a channel' but adds no format, default-value, or channel-selection meaning beyond what the schema already states.

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

Purpose4/5

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

States a specific verb (check) plus a precise resource (opt-out status of one phone number on a channel), which implicitly separates it from the sibling list_opt_outs. It never names an alternative sibling explicitly, so it falls short of the top band.

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?

'Vobiz refuses sends to opted-out numbers' supplies a rationale for checking, implying the tool is used before sending. However, it never states when to use this versus list_opt_outs, add_opt_out, or remove_opt_out, so guidance remains implied rather than explicit.

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

create_applicationCreate voice applicationB
Destructive
Inspect

Create a Vobiz application (app_name and answer_url required). URLs must be on approved hosts. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: creating this application.
app_nameYes
answer_urlYes
hangup_urlNo
answer_methodNo
hangup_methodNo
fallback_methodNo
default_number_appNo
fallback_answer_urlNo
default_endpoint_appNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the mutation/safety profile is covered. The description adds genuinely useful context beyond that - feature-flag gating via VOBIZ_ENABLE_PROVISIONING, the approved-host URL constraint, and the explicit confirm gate - but does not explain the side effects implied by destructiveHint (e.g., what provisioning actually creates or whether it can be rolled back).

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

Conciseness5/5

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

Two dense sentences, front-loaded with the action and required fields, then the host constraint, then the gating rules. No filler or repetition of the tool name.

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 10-parameter, non-idempotent mutation tool with no output schema and near-zero schema coverage, the description leaves most parameter semantics undocumented and never describes what the created application looks like or what is returned. The gating and host constraints are valuable but not enough to make the definition self-sufficient.

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 10%, with just 'confirm' documented, so the description carries the burden for the other nine parameters. It restates the two required fields (already in the schema's required array) and adds the approved-host rule for URLs, but leaves hangup_url, the three *_method enums, fallback_answer_url, and both default_*_app booleans completely unexplained.

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 ('Create a Vobiz application') and names the two required fields, which cleanly separates it from get_application, update_application, and delete_application in the sibling list. It stops short of explicitly routing the agent away from those siblings, but the create semantics are unambiguous.

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

Usage Guidelines4/5

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

Gives concrete preconditions for invocation: the VOBIZ_ENABLE_PROVISIONING flag must be enabled and confirm: true is required, and the description also states the approved-host constraint on URLs. What is missing is any statement of when to prefer update_application over a new create, or exclusions for cases where creation should not be attempted.

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

create_origination_uriCreate trunk origination URIA
Destructive
Inspect

Add a SIP destination (origination URI) such as sip:sbc.example.com:5060 that Vobiz trunks route outbound calls to. Use priority 1 for the primary and 2+ for failover; attach it to a trunk with update_sip_trunk (primary_uri_uuid or fallback_uri_uuid). The host must be public. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel, e.g. Primary SBC. Returned as `description`.
confirmYesMust be true, set only after the user explicitly approved: adding this outbound SIP destination.
sip_uriYessip:host, sip:host:port, sip:user@host or sip:user@host:port. Returned as `uri`.
priorityYesRouting priority: lower is tried first (1 = primary, 2+ = failover).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the operation is gated by VOBIZ_ENABLE_PROVISIONING, requires confirm: true, and the host must be public. It stops short of describing failure modes or what happens on duplicate URIs.

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 with zero filler; the core purpose is front-loaded, followed by priority semantics, attachment workflow, and gating preconditions in descending order of importance.

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 4-required-param mutation tool with 100% schema coverage, full annotation coverage, and no output schema, the description supplies everything an agent needs: purpose, routing convention, attachment workflow, environment gate, and confirmation requirement. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description goes further by linking sip_uri and priority semantics to downstream behavior and explaining that the created URI is consumed via update_sip_trunk's primary_uri_uuid/fallback_uri_uuid fields. That cross-tool relationship is not visible in the schema, so it adds real value.

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

Purpose5/5

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

States a concrete verb and resource ('Add a SIP destination (origination URI)') with an example value and the business purpose (outbound call routing for Vobiz trunks). This clearly separates it from list_origination_uris, update_origination_uri, and delete_origination_uri in the sibling set.

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 usage guidance: priority 1 for primary and 2+ for failover, plus the follow-up step of attaching via update_sip_trunk (primary_uri_uuid or fallback_uri_uuid). It does not explicitly state when NOT to use it or name a competing tool to prefer, so it stops short of a full when/when-not routing statement.

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

create_sip_endpointCreate SIP endpointA
Destructive
Inspect

Create a Vobiz SIP endpoint so a soft-phone, desk phone or WebRTC client can register at registrar.vobiz.ai with its own username and password. Attach an application to handle its calls (otherwise the account's default endpoint application applies, if set). The username cannot be changed later. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true. The password is write-only and never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYesFriendly name, e.g. Front desk phone.
confirmYesMust be true, set only after the user explicitly approved: creating this SIP endpoint.
passwordYesSECRET: the endpoint's SIP password (8+ characters; 12+ with mixed case, digits and symbols recommended). It is sent to Vobiz once and never shown again.
usernameYesSIP username, unique on the account and permanent. Letters and digits are safest.
application_idNoApplication that handles this endpoint's calls (sent as `application`).

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing irreversible traits (username cannot be changed later), the secret handling model (password write-only and never returned), and the activation gate (VOBIZ_ENABLE_PROVISIONING plus confirm: true). These are exactly the behavioral facts an agent needs and none are in the annotation block.

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

Conciseness5/5

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

Three dense sentences with zero filler: purpose first, then the application-attachment behavior and its default, then the gate and secret-handling caveats. Front-loaded and each sentence earns its place.

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

Completeness5/5

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

For a 5-parameter creation tool with no output schema and a rich annotation block, the description covers what an agent needs: what gets created, the immutable field, the secret's lifecycle, the environment gate, and the confirm requirement. Nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, including username permanence and password secrecy. The description largely restates those facts (immutable username, write-only password) rather than adding new syntax or format meaning, 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 ('Create a Vobiz SIP endpoint') plus the concrete outcome (a soft-phone, desk phone or WebRTC client registering at registrar.vobiz.ai with its own credentials). This clearly separates it from siblings like create_sip_trunk, update_sip_endpoint and delete_sip_endpoint.

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 when this tool applies (provisioning a registering endpoint) and explains the fallback when no application is attached ('otherwise the account's default endpoint application applies, if set'). It also names the gating conditions. It does not, however, explicitly contrast itself with create_sip_trunk or state when not to use it.

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

create_sip_trunkCreate SIP trunkA
Destructive
Inspect

Create a SIP trunk (POST /trunks). Authenticate with credential_uuid and/or ipacl_uuid; route outbound via primary_uri_uuid with fallback_uri_uuid for failover. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
secureNo
confirmYesMust be true, set only after the user explicitly approved: creating this SIP trunk.
cps_limitNo
recordingNo
transportNo
ipacl_uuidNo
descriptionNo
webhook_urlNoReceives CallInitiated and Hangup events (public https).
trunk_statusNo
webhook_methodNo
credential_uuidNo
trunk_directionNo
primary_uri_uuidNoOrigination URI used first (failover order: primary, then fallback).
fallback_uri_uuidNo
inbound_destinationNo
enable_transcriptionNo
concurrent_calls_limitNo
recording_webhook_enabledNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructive/non-idempotent/open-world, so the bar is lowered, and the description adds real context beyond them: an environment-flag gate and a mandatory confirmation precondition, plus the auth-model choice (credential vs IP ACL). It does not explain consequences of the destructiveHint (e.g. what provisioning changes), leaving a small gap.

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 operation and endpoint, then preconditions, then the gate. Every clause carries information that is not repeated elsewhere.

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 19-parameter create tool the description covers the decision-critical pieces — validation gate, confirm requirement, auth wiring, failover ordering — and with no output schema it does not need to describe returns. It is somewhat under-specified for the many optional configuration parameters the agent may need to populate on a real provisioning call.

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 16% across 19 params, so the description must compensate; it explains the two auth options (credential_uuid and/or ipacl_uuid), the routing pair (primary_uri_uuid with fallback_uri_uuid as failover) and the confirm gate, adding role semantics the bare schema lacks. The remaining majority of params (transport, secure, cps_limit, trunk_direction, recording, inbound_destination, etc.) get no explanation in either place.

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+resource and even names the underlying endpoint (POST /trunks), which pins down the operation unambiguously among create_* siblings like create_sip_endpoint and create_trunk_credential. It does not explicitly contrast itself with update_sip_trunk, but the resource/verb pair is distinctive enough that an agent can select it without opening schemas.

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?

Gives concrete preconditions — supply credential_uuid and/or ipacl_uuid, and set confirm: true behind VOBIZ_ENABLE_PROVISIONING — which tell the agent when the call will succeed. It stops short of stating when to use this tool versus create_sip_endpoint or create_trunk_credential, so routing among provisioning siblings 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.

create_sub_accountCreate sub-accountA
Destructive
Inspect

Create a Vobiz sub-account under this main account (only name is required). kyc_mode customer_use needs email, and the new sub-account places calls only after its own KYC (see create_sub_account_kyc_session). The new sub-account's credentials are not returned here; the user copies them from the Vobiz console. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for the sub-account.
emailNoContact email. Required for kyc_mode customer_use.
phoneNo
confirmYesMust be true, set only after the user explicitly approved: creating this sub-account.
enabledNoWhether the sub-account can be used (default true).
kyc_modeNopersonal_use (default) uses the parent's KYC; customer_use means the sub-account completes its own KYC before placing calls (needs email).
rate_limitNoAPI rate limit for the sub-account (Vobiz default 1000).
descriptionNo
permissionsNoAccess flags. Omitted on create: the sub-account inherits the parent's default access.
business_typeNoLegal constitution of the customer; decides which KYC documents are collected.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=true, non-idempotent), and the description adds genuinely non-obvious behavior: credentials are NOT returned and must be copied from the console, calls are blocked until the sub-account completes its own KYC, and the operation requires an environment flag plus confirm. That is material context an agent cannot get from 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.

Conciseness4/5

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

Four sentences, front-loaded with the creation action, then requirements, then the credentials caveat, then the gating condition. Dense but efficient; each sentence carries a distinct fact. Minor cost is that parentheticals and the trailing gating clause make it slightly hard to scan.

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 10-parameter, non-idempotent provisioning tool with no output schema, the description covers prerequisites (KYC, env flag, confirm), the required-parameter minimum, and the surprising absence of returned credentials. Only secondary semantics like permission inheritance on omission are left to the schema.

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

Parameters3/5

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

Schema coverage is 80%, so the schema already documents name, email, confirm, enabled, kyc_mode, rate_limit, and permissions. The description mostly restates the required-parameter rule ('only name is required', email for customer_use, confirm gating) rather than adding format, defaults, or interactions beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Create a Vobiz sub-account under this main account') and immediately scopes it with the resource hierarchy. It also names the adjacent KYC-session sibling, letting an agent separate it from create_sub_account_kyc_session and from update_sub_account/delete_sub_account without opening other 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?

Gives clear conditions: name alone suffices, email is needed when kyc_mode is customer_use, and provisioning is gated by VOBIZ_ENABLE_PROVISIONING plus confirm: true. It points to create_sub_account_kyc_session for the follow-on KYC step, but never explicitly frames when to prefer this over update_sub_account or when not to create at all.

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

create_sub_account_kyc_sessionInitialize sub-account KYCA
Destructive
Inspect

Start a Vobiz-hosted KYC session for a sub-account. flow_type email (default) has Vobiz email the customer a secure verification link (customer_email required); flow_type redirect returns a widget_url to send the customer to (redirect_url required). Optional webhook_url receives KYC events. Track progress with get_sub_account_kyc_status. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: starting KYC for this sub-account (the email flow emails the customer).
flow_typeNoDefault email.
sub_auth_idYesThe sub-account's Auth ID (SA_...), from list_sub_accounts.
webhook_urlNoPublic https endpoint that receives KYC events. Omit for no callbacks.
redirect_urlNoRequired for flow_type redirect: where the customer's browser goes after verification (public https).
customer_emailNoRequired for flow_type email: Vobiz sends the KYC link here.
expires_in_daysNoDays until the link expires (Vobiz default 7).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true and openWorld=true, so the write/external-effect profile is covered. The description adds valuable context those annotations don't: the VOBIZ_ENABLE_PROVISIONING gate, the confirm:true requirement, and the fact that the email flow actually contacts the customer—important for a side-effecting operation.

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, each carrying distinct information (purpose, email flow, redirect flow, webhook/tracking/gating) with no repetition or filler. The primary action is front-loaded.

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

Completeness4/5

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

For a 7-param mutation with no output schema, the description covers flow selection, prerequisites, gating, and the redirect widget_url return. It doesn't state what the email flow returns or expiry defaults beyond expires_in_days, leaving a small gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds conditional logic the schema states only per-field: customer_email is required for email flow, redirect_url for redirect flow, and webhook_url/webhook semantics. This conditional pairing genuinely helps correct invocation.

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 ('Start a Vobiz-hosted KYC session for a sub-account') and implicitly distinguishes itself from the read-only sibling get_sub_account_kyc_status, which is named as the tracking counterpart. An agent can identify the operation 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?

Explicitly describes the two flow_type modes and their prerequisites (email requires customer_email; redirect requires redirect_url), and routes the agent to get_sub_account_kyc_status for progress. It lacks an explicit 'when not to use' or eligibility conditions beyond the gating flags, so it falls just short of a 5.

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

create_trunk_credentialCreate trunk credentialA
Destructive
Inspect

Create a SIP digest credential (username and password) on this Vobiz account for trunk authentication, for dynamic-IP PBXs, remote sites or voice agents. Attach it to a trunk afterwards with update_sip_trunk (credential_uuid). The username is permanent. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true. The password is write-only and never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: creating this trunk credential.
passwordYesSECRET: the trunk credential's SIP password (8+ characters; 12+ with mixed case, digits and symbols recommended). It is sent to Vobiz once and never shown again.
usernameYesSIP username, unique on the account and permanent. Letters and digits are safest.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag this as non-idempotent, open-world and destructive, and the description adds materially beyond them: the username is permanent, the password is write-only and never returned, and the call is gated by VOBIZ_ENABLE_PROVISIONING plus confirm: true. These are exactly the irreversible/secret-handling facts an agent needs before invoking a destructive write.

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 tight sentences, front-loaded with the action and scope, then the follow-up step, then the irreversibility and gating constraints. No filler or repetition of the title.

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 3-required-param mutation with no output schema, the description covers everything an agent needs: what it creates, the required approval gate, the permanence of the username, and the fact that the password is never returned (so nothing is expected back in 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?

Schema coverage is 100% and the schema already documents all three parameters including the SECRET warning on password and the permanence of username. The description restates permanence and write-once behavior but adds no syntax, 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 ('Create a SIP digest credential ... on this Vobiz account for trunk authentication') and immediately scopes its purpose to dynamic-IP PBXs, remote sites or voice agents, which cleanly separates it from list/update/delete_trunk_credential siblings.

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 follow-up workflow explicitly ('Attach it to a trunk afterwards with update_sip_trunk (credential_uuid)') and implies the use case boundary by scoping to dynamic-IP rather than static-IP alternatives. It never states an explicit 'do not use this when...' exclusion, so it falls short of a 5.

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

deafen_conference_memberDeafen a conference memberA
DestructiveIdempotent
Inspect

Deafen members of a live Vobiz conference (POST /Conference/{name}/Member/{id}/Deaf/) so they stop hearing the room; others still hear them. Use it for listen-only setups or private side conversations. Pass one member_id, a comma-separated list, or all. Undo with undeafen_conference_member.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true. The description adds reversibility context ('Undo with undeafen_conference_member') and the underlying endpoint, which is useful. It doesn't restate idempotency or describe error behavior, but the annotations carry that load.

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 effect before the use cases and the undo path. No filler.

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

Completeness4/5

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

For a two-parameter mutation with full annotation coverage and no output schema, the description covers effect, parameters, use cases and reversal. Minor omission is any auth/permission requirement or confirmation of response shape, but nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are fully documented in the schema, including the 'all'/comma-list pattern. The description's 'Pass one member_id, a comma-separated list, or all' only restates 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 (deafen) and resource (conference member) and explains the exact effect: the member stops hearing the room while others still hear them. This distinguishes it from mute, the closest sibling, without requiring 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?

Gives concrete when-to-use cases (listen-only setups, private side conversations) and names the inverse operation (undeafen_conference_member) as the undo. It does not explicitly contrast with mute_conference_member, but the 'others still hear them' clause lets an agent infer the distinction.

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

delete_applicationDelete voice applicationA
DestructiveIdempotent
Inspect

Delete a Vobiz application. Linked numbers are unlinked (inbound calls to them stop being handled). Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYes
confirmYesMust be true, set only after the user explicitly approved: deleting this application.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the cascade side effect: linked numbers are unlinked and inbound calls to them stop being handled. Combined with the feature-flag gate and the explicit confirm requirement, the agent knows the irreversible consequences before invoking.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the side effect, then the gating conditions. Every clause carries information the agent needs; nothing is padding.

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, non-readonly mutation with no output schema, the description covers the side effects, the feature-flag prerequisite, and the confirmation gate. It omits whether the deletion is permanent/recoverable and what a successful response contains, but the annotations and the required confirm parameter cover most of the remaining risk.

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%: confirm is documented in the schema while app_id is not, and the description only reinforces the confirm: true requirement rather than explaining the app_id pattern (^\d{5,25}$) or how to obtain one. Baseline 3 is appropriate given the schema carries half the load.

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

Purpose5/5

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

States a specific verb and resource ('Delete a Vobiz application') and immediately scopes the blast radius ('Linked numbers are unlinked'). An agent can distinguish it from delete_sip_trunk, delete_recording, or delete_sub_account without opening any 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 an explicit precondition pair — the VOBIZ_ENABLE_PROVISIONING gate and confirm: true — which tells the agent when the call is even permitted. It does not name alternative tools or spell out when deletion is preferable to update_application, so it stops 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.

delete_ip_acl_entryDelete trunk IP ACL entryA
DestructiveIdempotent
Inspect

Remove an IP ACL entry from this Vobiz account. SIP traffic from that address or range is no longer trusted and needs other authentication. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: deleting this IP ACL entry.
ip_acl_idYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint/idempotentHint, but the description adds genuine value beyond them: the consequence of deletion (SIP traffic from that address is no longer trusted and needs other authentication) and the feature-flag precondition. It does not restate idempotency or error behavior, but the added consequence is substantive.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the consequence, then the gating. No ceremonial or redundant phrasing; every sentence 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?

For a destructive mutation with no output schema, the description covers the effect, prerequisites, and the confirm gate, while annotations carry the safety profile. Only minor gaps remain (error/idempotency behavior when the entry is absent, which the idempotentHint partly covers).

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%: confirm is well documented in the schema, but ip_acl_id has only a pattern and no prose. The description mentions confirm: true (repeating the schema) and says nothing about what ip_acl_id selects, so it does not compensate for the coverage gap. 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 ('Remove an IP ACL entry from this Vobiz account') and immediately clarifies the downstream effect on SIP trust. The add/update/list/delete_ip_acl_entry sibling family makes the scope 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?

Gives real prerequisites (gated by VOBIZ_ENABLE_PROVISIONING and confirm: true), which is more than implied usage. But it never states when to prefer this over update_ip_acl_entry or what to do instead if the entry should merely be untrusted, so routing guidance is incomplete.

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

delete_origination_uriDelete trunk origination URIA
DestructiveIdempotent
Inspect

Delete an origination URI from this Vobiz account. Trunks stop routing outbound calls to that destination; add a replacement first if it is a trunk's only route. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
uri_idYes
confirmYesMust be true, set only after the user explicitly approved: deleting this origination URI.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered; the description adds value beyond that by disclosing the downstream effect (trunks stop routing outbound calls to that destination), the prerequisite for trunk-only routes, and the environment/confirmation gate. It does not say whether the deletion is reversible or what error surfaces when the gate is closed, which keeps it below a 5.

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

Conciseness5/5

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

Three short sentences with zero filler: effect first, prerequisite second, gates third. Every clause carries actionable information and the most important constraint is front-loaded.

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

Completeness4/5

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

For a destructive, gated mutation with no output schema, the description covers consequence, prerequisite, environment gate and confirmation semantics — enough for an agent to call it correctly. The remaining gap is the absence of any statement about failure behavior or irreversibility.

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%: confirm is already documented in the schema and its full meaning is restated here, but uri_id carries no description beyond a UUID regex pattern. The description clarifies the confirm requirement in prose but adds nothing about uri_id, so it only partially compensates for the 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 specific verb and resource (delete an origination URI) scoped to the Vobiz account, which cleanly separates it from list_origination_uris, create_origination_uri and update_origination_uri in the sibling set. An agent knows exactly which operation this is 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?

Gives a real precondition ('add a replacement first if it is a trunk's only route') and a gating condition (VOBIZ_ENABLE_PROVISIONING plus confirm: true), which tells the agent when this call is permissible. It stops short of naming the alternative tool (update_origination_uri / create_origination_uri) as an explicit fallback, so it is context rather than full routing guidance.

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

delete_recordingDelete a call recordingA
DestructiveIdempotent
Inspect

Permanently delete one call recording from this Vobiz account (DELETE /Recording/{id}/). The audio file cannot be restored afterwards. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: permanently deleting this recording.
recording_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: the deletion is permanent, the audio cannot be restored, and the call is gated by an environment flag plus an explicit confirm. It does not describe behavior on a nonexistent/already-deleted id or the response, keeping it at 4.

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

Conciseness5/5

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

Three short sentences, each carrying distinct load: action and scope, irreversibility, and gating. The most decision-critical facts (permanent, unrecoverable) are front-loaded.

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

Completeness4/5

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

For a two-parameter destructive tool with no output schema and safety already covered by annotations, the description supplies the irreversibility warning and the feature/confirm gating an agent needs before calling. It omits only error/edge-case behavior, which is a minor gap.

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

Parameters3/5

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

Schema coverage is 50% – the confirm parameter is well documented in the schema, but recording_id has only a regex pattern and no prose. The description's 'DELETE /Recording/{id}/' hints at the id parameter and restates the confirm gate, adding modest meaning but not compensating for the undocumented recording_id.

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

Purpose5/5

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

The description states a specific verb and resource ('Permanently delete one call recording'), names the scope ('from this Vobiz account'), and even gives the underlying endpoint DELETE /Recording/{id}/. An agent can immediately distinguish it from list_recordings or get_call_recording among the siblings.

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 states two concrete preconditions for use: the VOBIZ_ENABLE_PROVISIONING gate and confirm: true. That is clear when-to-use guidance, but it never names alternatives (e.g., use get_call_recording to inspect before deleting) or says when not to use it, so it falls short of a full 5.

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

delete_sip_endpointDelete SIP endpointA
DestructiveIdempotent
Inspect

Permanently delete a Vobiz SIP endpoint. Devices registered with it disconnect immediately and its SIP URI stops working. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: deleting this SIP endpoint.
endpoint_idYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the destructiveHint/idempotentHint annotations, the description discloses exactly what is destroyed and what breaks: registered devices disconnect immediately and the SIP URI stops working. It also reveals a non-obvious operational gate (VOBIZ_ENABLE_PROVISIONING), which an agent could not infer from structured fields.

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

Conciseness5/5

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

Three short sentences, front-loaded with the operation and its irreversible nature, followed by side effects and prerequisites. No redundant or filler content.

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

Completeness4/5

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

For a 2-parameter destructive tool with no output schema, the essentials are covered: irreversibility, downstream impact, and the env-var/confirm gate. It omits post-deletion behavior (e.g., whether the ID can be reused or what error a missing/invalid ID returns), which is minor but leaves a small gap.

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

Parameters3/5

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

Schema coverage is 50%; the 'confirm' parameter is fully documented in the schema (and the description's 'confirm: true' only restates it). endpoint_id is never described in prose — only a regex pattern hints at its format — so the description does not compensate for the uncovered half.

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 ('Permanently delete') and a precisely named resource ('Vobiz SIP endpoint'), which is enough to distinguish it from the adjacent delete_sip_trunk and delete_trunk_credential siblings. 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?

The word 'Permanently' plus the disclosed consequence (registered devices disconnect immediately) makes the usage context clear: only for irreversible removal. It names no explicit alternative (e.g., update_sip_endpoint) and gives no when-not guidance, so it stops short of a 5.

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

delete_sip_trunkDelete SIP trunkA
DestructiveIdempotent
Inspect

Delete a SIP trunk (soft delete). Numbers routed to it are unlinked and stop receiving calls through it. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: deleting this SIP trunk.
trunk_idYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare destructive/idempotent/openWorld, but the description adds material context they don't: this is a soft delete, routed numbers are unlinked and stop receiving calls through it, and the call is gated by an environment flag plus an explicit confirm. Those downstream consequences are exactly what an agent needs before a destructive call.

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

Conciseness5/5

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

Three short sentences, each earning its place, with the operation, its side effects, and its gating requirement front-loaded. No filler or restatement of the 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 two-parameter destructive tool with no output schema, the description covers side effects, gating, and confirmation adequately. It stops short of saying whether a soft-deleted trunk can be restored or what the response returns, a minor omission given the annotations already carry the safety profile.

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 only 50% — confirm is documented in the schema, trunk_id only via a pattern. The description reinforces 'confirm: true' but adds no format or constraint detail for trunk_id beyond the schema's regex, so it does not fully compensate for the 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 specific verb and resource ('Delete a SIP trunk') and immediately qualifies the operation as a soft delete, which separates it from hard-delete siblings and from delete_sip_endpoint/delete_application by resource. An agent knows exactly what entity is affected and how.

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 a prerequisite ('Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true') but never states when to choose this over alternatives such as update_sip_trunk or release_phone_number, nor any when-not condition. Usage is implied by the destructive nature rather than explained.

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

delete_sub_accountDelete sub-accountA
DestructiveIdempotent
Inspect

Permanently delete a Vobiz sub-account and revoke its credentials. This removes the sub-account and cannot be undone: anything using its Auth ID stops working. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: permanently deleting this sub-account and revoking its credentials.
sub_auth_idYesThe sub-account's Auth ID (SA_...), from list_sub_accounts.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true, so the safety profile is partly covered. The description goes further by disclosing the concrete consequences: credentials are revoked, the action cannot be undone, and anything using the sub-account's Auth ID stops working, plus the runtime gating conditions. That is real behavioral context beyond the structured fields.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the destructive action and its irreversibility before the gating conditions. Every clause earns its place; nothing is redundant padding.

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

Completeness5/5

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

For a two-parameter mutation with no output schema, the description covers the essentials an agent needs: permanence, credential revocation, downstream impact, and required preconditions. Annotations cover the safety hints, so nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (confirm, sub_auth_id) are already fully documented in the schema. The description restates the confirm: true gate but adds no new syntax, format, or sourcing detail for sub_auth_id. Baseline 3 is appropriate when the schema carries the parameter burden.

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

Purpose5/5

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

States a specific verb and resource ('Permanently delete a Vobiz sub-account and revoke its credentials') with the exact scope of the operation. An agent can distinguish it from get_sub_account, update_sub_account, and create_sub_account without opening any 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 clear preconditions for invocation: the tool is gated by the VOBIZ_ENABLE_PROVISIONING environment flag and requires confirm: true. It does not explicitly name a safer alternative (e.g. update_sub_account or unassign_number_from_subaccount), so it stops short of full routing guidance, but the when-to-use context is clear.

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

delete_trunk_credentialDelete trunk credentialA
DestructiveIdempotent
Inspect

Delete a trunk credential from this Vobiz account. Any PBX or device authenticating with it is refused from then on; Vobiz may refuse while it is in use by active calls. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: deleting this trunk credential.
credential_idYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the destructive/idempotent annotations, it discloses concrete effects: any PBX or device authenticating with the credential is denied afterward, and the operation may be refused mid-call. It also exposes the feature-flag gate and the confirm requirement, which are non-obvious runtime behaviors.

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

Conciseness5/5

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

Three short sentences, no padding: purpose, blast radius, then gating requirements. The most decision-relevant fact (devices are refused) is front-loaded right after the verb.

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 tool with no output schema, it covers effects, preconditions and the feature gate, which is most of what an agent needs. The remaining omission is how to source the credential_id and whether related trunk/ACL state is affected.

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%: confirm is documented in the schema and the description only restates 'confirm: true'. The credential_id parameter has no description and the tool text never explains where to obtain it (e.g., list_trunk_credentials) or its UUID format, so the gap is only partly compensated.

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 gives a specific verb plus resource ('Delete a trunk credential') and names the account scope, so it is trivially separable from create_trunk_credential, update_trunk_credential, and the SIP-endpoint deletes.

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 states the two preconditions (VOBIZ_ENABLE_PROVISIONING and confirm: true) and the operational consequence that authenticating devices are refused, which signals when the call is appropriate. It stops short of naming alternatives (e.g., use update_trunk_credential to rotate instead of delete) or an explicit when-not-to-use.

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

end_all_conferencesEnd every live conferenceA
DestructiveIdempotent
Inspect

Hang up EVERY running conference room on this Vobiz account at once (DELETE /Conference/): all members of all rooms are disconnected. Use it only for account-wide cleanup or maintenance; to close one room, use end_conference. Requires confirm: true after the user explicitly agrees to end all conferences.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to end every live conference on the account.

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations already mark the tool destructive and idempotent, the description adds the concrete consequence: all members of all rooms are disconnected at once. It also discloses the confirmation protocol, which is important behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is front-loaded with the action and scope, then immediately provides the alternative and confirmation requirement. Every clause adds useful selection or safety information with no wasted text.

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 account-wide bulk operation with one parameter and no output schema, the description supplies scope, consequence, alternative routing, and confirmation requirements. An agent has enough information to decide when and how to call it safely.

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

Parameters3/5

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

Schema coverage is 100%, so the single `confirm` parameter is already fully documented by the schema. The description reinforces the `confirm: true` requirement but does not add new parameter semantics beyond what the schema already states.

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 gives a specific verb and resource: "Hang up EVERY running conference room on this Vobiz account at once," and states the scope as account-wide. It also explicitly distinguishes this from the sibling tool `end_conference`, which handles a single room.

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 states the intended use precisely: "only for account-wide cleanup or maintenance," and names the alternative for closing one room. The confirmation requirement is tied to explicit user agreement, giving clear invocation conditions.

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

end_callHang up a callA
DestructiveIdempotent
Inspect

Terminate an active or queued call (DELETE /Account/{auth_id}/Call/{call_uuid}/). Checks first that the call is live or queued on this account. Required: call_uuid and confirm: true after the user explicitly asked to end this call. Returns call_not_active if the call already ended.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to end this call.
call_uuidYesUUID of the call to end.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructive=true, idempotent=true and readOnly=false, so safety is covered structurally. The description adds genuine extra behavior: a precheck that the call is live or queued on this account, and the call_not_active error result when the call already ended.

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

Conciseness5/5

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

Three dense sentences: the action and endpoint come first, followed by the precheck, the required inputs, and the failure result. No filler or repetition.

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

Completeness5/5

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

For a two-parameter mutation with no output schema, the description covers the action, preconditions, required confirmation guardrail, and the one notable error return. Annotations handle the safety profile, so nothing an agent needs is missing.

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

Parameters3/5

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

Schema coverage is 100%, so call_uuid and confirm are already fully documented in the schema, including the same confirm-after-explicit-request wording. The description repeats rather than extends that meaning, 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 (terminate) and resource (active or queued call) and even names the underlying endpoint. An agent can distinguish this from hangup_conference_member and end_conference, which act on conference participants or whole conferences.

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 a clear usage condition: confirm:true must be set only after the user explicitly asked to end this call, which is real routing/guardrail guidance. It stops short of naming alternatives (e.g. hangup_conference_member for conference members), 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.

end_conferenceEnd a live conferenceA
DestructiveIdempotent
Inspect

Hang up one running Vobiz conference room (DELETE /Conference/{name}/): every member is disconnected at once and the room ends. Use it to close a meeting on time or clean up an abandoned room; to remove only some people, use kick_conference_member or hangup_conference_member. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to end this conference for everyone in it.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds value by clarifying that the blast radius is the entire room and that confirm:true is mandatory, which is behavior beyond the raw flags.

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 scope, then the usage case, then the alternative, then the prerequisite. Every clause earns its place and nothing is redundant padding.

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

Completeness5/5

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

For a two-parameter destructive tool with full schema coverage and annotations covering the safety profile, the description supplies everything needed: scope, effect, alternatives, and the confirm gate. No output schema is needed or expected.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema, including the confirm gating semantics. The description only restates the confirm requirement, adding no syntax or naming detail beyond the schema. 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 ('Hang up one running Vobiz conference room'), gives the HTTP endpoint, and describes the exact effect (all members disconnected, room ends). An agent can distinguish it from sibling conference tools without opening a schema.

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?

Names two concrete scenarios (close a meeting on time, clean up an abandoned room) and explicitly routes partial removal to kick_conference_member or hangup_conference_member. The when/when-not split is complete.

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

gather_dtmfCollect keypad inputA
Destructive
Inspect

Create a hosted IVR step that plays a prompt and collects DTMF digits (Vobiz ). Digits are posted back to this server, verified and stored; read them with get_gather_result. Give call_uuid (+ confirm: true) to move a LIVE call into it now (transfer), or use the returned url as make_call answer_url. HTTP mode with VOBIZ_PUBLIC_URL only.

ParametersJSON Schema
NameRequiredDescriptionDefault
thenNoXML actions to run after input is received (default: 'Thank you' and hang up).
confirmNoRequired (true) with call_uuid: this replaces the live call's current flow.
languageNo
call_uuidNoLive call to move into this step now.
num_digitsNo
prompt_textNoSpoken prompt, e.g. 'Press 1 for sales'.
finish_on_keyNo
prompt_audio_urlNoOr an https .mp3/.wav prompt.
digit_end_timeoutNo
execution_timeoutNoSeconds to wait for input (default 15).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true; the description adds real context beyond them, notably that supplying call_uuid replaces the live call's current flow (a transfer), and that digits are posted back, verified, and stored server-side. It stops short of describing failure/timeout behavior for a live-call transfer.

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 what it creates, then the read path, then the two invocation modes and the environment constraint. No filler despite the density of 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?

No output schema exists, but the description redirects the agent to get_gather_result for the collected digits, covering the return-value gap. With annotations carrying the safety profile, only minor detail on defaults (num_digits, timeout) is absent.

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

Parameters3/5

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

Schema coverage is 60%; the description explains call_uuid, confirm, and the answer_url/returned-url distinction, but adds nothing for num_digits, finish_on_key, digit_end_timeout, prompt_text/prompt_audio_url selection, or the 'then' post-input flow. Baseline 3 is right with partial schema coverage.

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

Purpose5/5

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

Specific verb and resource: 'Create a hosted IVR step that plays a prompt and collects DTMF digits (Vobiz <Gather>)'. It also names the companion read tool get_gather_result, so an agent can separate creation from retrieval without opening a schema.

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

Usage Guidelines5/5

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

Explicitly gives the two usage modes: pass call_uuid (+ confirm: true) to transfer a LIVE call now, or use the returned url as make_call answer_url. It also states the HTTP-mode prerequisite (VOBIZ_PUBLIC_URL), so the condition for each path is unambiguous.

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

generate_answer_xmlGenerate Vobiz call XMLA
Read-only
Inspect

Build a validated Vobiz XML document from a list of actions: speak, play, wait, gather (DTMF/speech), record, dial (number or sip_uri), redirect, hangup. Text is XML-escaped; callback/redirect URLs must be on approved hosts; actions after redirect/hangup are rejected. With host: true (HTTP mode) the server also serves it and returns a URL usable as make_call answer_url or transfer_call aleg_url. Pure generation otherwise (no API call).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoServe the XML from this server and return its URL (HTTP mode only).
actionsYesOrdered actions, e.g. [{type:'speak',text:'Hello'},{type:'hangup'}]

TDQS

A4.3/5.0
Behavior4/5

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

Adds real behavioral context beyond the readOnlyHint/openWorldHint annotations: XML-escaping of text, an approved-host requirement for callback/redirect URLs, rejection of actions after redirect/hangup, and the fact that non-host mode makes no API call. Return behavior (URL string vs raw XML) is only lightly covered.

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, then validation constraints, then the mode switch. Every clause carries information, though the middle sentence is run-on and slightly compresses several distinct rules together.

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 nested oneOf action schema with no output schema, the description covers action vocabulary, constraints, and the dual output mode well. It stops short of describing the returned XML/URL shape in detail, but the key invocation decisions are all supported.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds meaning beyond it: it clarifies what host: true does (serve and return a URL), the allowed action vocabulary, and ordering constraints on the actions array that the schema does not express.

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 ('Build a validated Vobiz XML document') and enumerates the exact action types it accepts (speak, play, wait, gather, record, dial, redirect, hangup). It also positions itself against siblings by naming make_call answer_url and transfer_call aleg_url as the consumers of its output.

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

Usage Guidelines4/5

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

Clearly distinguishes the two operating modes ('With host: true ... Pure generation otherwise') and explains where the produced URL is consumed. It lacks an explicit when-not-to-use or direct alternative comparison, but the mode split and downstream routing give an agent enough to choose correctly.

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

get_account_balanceGet account balanceA
Read-only
Inspect

Return the account balance: balance, available balance, reserved funds, credit limit and postpaid flag. Without currency it returns every wallet on the account (accounts can be billed in INR, USD or other currencies). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO currency code, e.g. INR or USD. Omit to list every wallet.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the trailing 'Read-only.' is redundant. The description does add real behavioral context the annotations cannot: the tool fans out across multiple currency wallets when no currency is supplied, which affects both result shape and size.

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 tight sentences with the field list up front and the multi-wallet caveat second. 'Read-only.' earns nothing given the annotation, but the waste is a single word.

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

Completeness5/5

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

There is no output schema, and the description compensates by naming the returned fields (balance, available balance, reserved funds, credit limit, postpaid flag) plus the multi-wallet behavior. An agent knows both what it will get and when it will get many records.

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 the ISO pattern and the omit-to-list-all behavior. The description's restatement of the currency omission is consistent but adds no syntax or format detail beyond the schema, so this sits at the baseline.

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 ('Return the account balance') and enumerates the returned fields. It does not differentiate itself from the nearby sibling get_account_details, so an agent could hesitate between the two.

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 currency-omission behavior gives an implicit usage rule ('omit to list every wallet'), but there is no explicit when-to-use guidance, no exclusion, and no pointer to get_account_details as the alternative for profile-level data.

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

get_account_detailsGet account detailsA
Read-only
Inspect

Return this Vobiz account's profile: name, account type, status, CPS and concurrent-call limits, enabled features. Credentials are redacted. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the 'Read-only' sentence is largely redundant, but 'Credentials are redacted' adds a genuinely useful behavioral fact about the response that the annotations do not convey.

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

Conciseness5/5

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

A single sentence, front-loaded with the verb and resource, listing the salient fields and the redaction caveat with no filler.

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

Completeness5/5

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

With no output schema and no parameters, the description must carry the return-value burden itself, and it does so by naming the profile fields and noting credential redaction; nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to document; baseline 4 applies. The field list describes return content rather than inputs, which is fine given no schema parameters exist.

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 (Return) and resource (Vobiz account's profile) and enumerates the returned fields (name, account type, status, CPS/concurrent-call limits, features), which clearly separates it from siblings like get_account_balance or get_sub_account.

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 zero-parameter, profile-fetching nature of the tool, but the description never says when to call it versus get_account_balance or get_sub_account, and there are no exclusions or prerequisites stated.

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

get_applicationGet voice applicationC
Read-only
Inspect

Return one Vobiz application's configuration. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, and 'Read-only' merely restates that. With annotations carrying the safety profile, the description should add value such as what happens on an unknown app_id or what 'configuration' includes, but it adds nothing beyond the annotation.

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

Conciseness5/5

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

Two short sentences, front-loaded with the verb and resource, with zero filler. Nothing could be trimmed without losing content.

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-parameter read tool with no output schema this is minimally adequate, but 'configuration' is vague about what is returned and the description says nothing about error behavior for an invalid or missing app_id.

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% and there is a single required app_id parameter. The description says nothing about app_id — its meaning, source, or that it must be a 5-25 digit numeric ID as implied by the pattern — so it fails to compensate for the schema 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?

States a specific verb (Return) and resource (one Vobiz application's configuration), and the word 'one' implicitly distinguishes it from the sibling list_applications. It stops short of naming that sibling or spelling out the single-vs-list distinction explicitly.

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 guidance and no mention of alternatives such as list_applications or the id source. The only hint is the word 'one', which is purpose framing rather than usage guidance.

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

get_audio_streamGet an audio streamA
Read-only
Inspect

Return one audio stream on a Vobiz call (GET /Call/{uuid}/Stream/{stream_id}/): status, WebSocket URL, track, audio format, start and end time. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYes
stream_idYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' in the description earns no credit. The enumeration of returned fields (status, WebSocket URL, track, audio format, timestamps) adds genuine context given no output schema, but there is no mention of auth requirements, error behavior for unknown/ended streams, or whether the stream must be active.

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

Conciseness5/5

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

A single front-loaded sentence that leads with the action, resource, and scope before the endpoint and field list. No filler.

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

Completeness4/5

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

For a read-only getter with two required path params and no output schema, listing the response fields is exactly what's needed. It falls short only on failure modes and any precondition about the stream's state.

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 0%, so the description carries the burden; it does map call_uuid and stream_id into the URL path template, clarifying they are path identifiers on a call's stream. However it adds no format, length, or validity guidance beyond the regex patterns already in the schema, leaving the required-parameter contract thin.

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 ('Return one audio stream'), the resource, the underlying endpoint (GET /Call/{uuid}/Stream/{stream_id}/), and enumerates the fields returned. The singular 'one' implicitly separates it from the sibling list_audio_streams.

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: retrieving a single known stream, versus list_audio_streams for enumeration or start_audio_stream/stop_audio_stream for lifecycle changes. No explicit when-to-use or when-not-to-use statement routes the agent among those siblings.

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

get_broadcastGet a broadcastA
Read-only
Inspect

Return one broadcast with its template, schedule, send rate and stats (total, sent, delivered, failed). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
broadcast_idYesBroadcast ID.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so "Read-only" is largely redundant, but the description adds genuine value by disclosing the shape of the returned payload down to the individual stat counters. It stops short of describing behavior for an unknown or expired broadcast_id.

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?

One front-loaded sentence lists the returned components efficiently, with no preamble. The trailing "Read-only." adds little beyond the readOnlyHint annotation already present, a minor redundancy rather than a flaw.

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 the return value, and it does so by naming the composite fields and the four stat counters. The only gap is error/edge-case behavior, which is minor for a simple getter.

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 broadcast_id parameter is fully documented in the schema (100% coverage), including a regex pattern, so the description needn't repeat it. No added semantic detail on the identifier is offered, which matches the baseline for a fully covered schema.

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?

"Return one broadcast" is a specific verb+resource, and the enumeration of what comes back (template, schedule, send rate, stats) further pins it down. The singularity of "one broadcast" implicitly separates it from list_broadcasts, though no sibling is named outright.

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 can infer this is for fetching a single broadcast's detail rather than enumerating them. There is no explicit when-to-use statement, no guidance on which identifier form to pass, and no alternative tool named.

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

get_call_detailsGet call detailsA
Read-only
Inspect

Return the full call detail record (CDR) of a COMPLETED call: direction, numbers, start/answer/end time, duration, billed seconds, hangup cause, cost, quality (MOS, jitter). For a call still in progress use get_call_status. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYesUUID of the call.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description's 'Read-only' line largely repeats that. However it adds a genuinely useful behavioral constraint not in the annotations — the record only exists for COMPLETED calls — and enumerates the returned fields in lieu of an output schema.

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

Conciseness5/5

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

Front-loads what the tool returns, then the routing rule, then the safety note — three short clauses with no filler. The field enumeration is dense but each item earns its place given there is no output schema.

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

Completeness5/5

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

For a single-parameter read tool with no output schema, the description compensates by listing the CDR fields returned and by gating on call completion state. An agent has everything needed to call it correctly.

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

Parameters3/5

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

Only one parameter (call_uuid) with 100% schema description coverage, so the schema carries the semantics. The description adds no format, validation, or sourcing detail beyond what the schema already states, which is the expected baseline for this case.

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 (return the full call detail record) and scopes it to COMPLETED calls. It explicitly distinguishes itself from the sibling get_call_status, so an agent can route 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 Guidelines5/5

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

Explicitly names the alternative (get_call_status) and the condition that selects it (call still in progress). The when-to-use boundary is fully specified rather than inferred.

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

get_call_recordingGet call recordingA
Read-only
Inspect

Find the recording(s) of a call on this account and return their metadata and recording_url. Provide exactly one of call_uuid or recording_id. Not every call is recorded: an empty result means no recording exists. Recording URLs give access to call audio, so share them only with the account owner. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidNoUUID of the call whose recordings to find.
recording_idNoA specific recording ID.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuinely useful context beyond them — empty-result semantics (no error, just nothing found) and a privacy caution about sharing audio URLs. The trailing 'Read-only' is redundant with the annotation, and it omits things like rate limits or pagination.

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 purpose, then constraints, then behavioral notes, in four tight sentences. Minor waste in repeating 'Read-only' after the readOnlyHint annotation, but overall appropriately sized with no digressions.

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

Completeness4/5

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

For a two-parameter read tool with no output schema, the description adequately covers what is returned ('metadata and recording_url'), the exactly-one input rule, and empty-result behavior. Enough for correct invocation; only engagement-level details (pagination, URL expiry) are absent.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: the 'exactly one of call_uuid or recording_id' mutual-exclusion constraint is not expressed by the schema's two independent optional properties. That makes the parameter guidance additive rather than redundant.

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 ('Find ... and return') and resource ('the recording(s) of a call') with account scope, and distinguishes itself from the generic list_recordings/delete_recording siblings by being a point lookup keyed on a call or recording. It is clear, but never names the alternative tools, so it stops short of full sibling differentiation.

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

Usage Guidelines4/5

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

Gives clear invocation context: 'Provide exactly one of call_uuid or recording_id' and warns that 'an empty result means no recording exists,' which steers correct usage and interpretation. It does not, however, tell the agent when to prefer this over list_recordings or other recording tools.

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

get_call_statusGet call statusA
Read-only
Inspect

Return the current lifecycle state of one call: queued (accepted, not yet dialed), live (ringing / in-progress), or completed (from the call detail record). Use the request_uuid returned by make_call, or any call_uuid. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYesCall UUID or the request_uuid from make_call.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuinely new behavioral context by defining what each state means and signalling that 'completed' comes from the call detail record (i.e., after the fact). It stops short of describing polling/eventual-consistency behavior, so it is not a 5.

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

Conciseness4/5

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

One dense sentence front-loads the action and the state vocabulary, followed by a short qualifier. The trailing 'Read-only' restates the readOnlyHint annotation and is the only mild 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 single-parameter read tool with no output schema, the description conveys the core return semantics (three lifecycle states) that the schema cannot. It omits whether additional fields are returned and how often to poll, which are minor but real gaps.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter description already states that request_uuid from make_call is accepted. The description repeats that information rather than adding format, charset, or error semantics, 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 precise verb and resource ('Return the current lifecycle state of one call') and enumerates the possible states, which distinguishes it from get_call_details and list_live_calls. It does not name those siblings explicitly, which is the only thing separating 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 description implies when to use it (after make_call, using its request_uuid) but never states when NOT to use it or points to get_call_details / list_live_calls as alternatives. Usage is inferable rather than explicit.

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

get_concurrencyGet call concurrencyA
Read-only
Inspect

Return how many calls are running right now versus the account's maximum concurrent calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' merely restates that. Its real added value is disclosing the return content (current running calls vs. account maximum), which matters since there is no output schema. It says nothing about scope (account vs. subaccount) or any rate limits.

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

Conciseness5/5

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

Two short sentences with the substantive payload (current vs. maximum concurrency) front-loaded and no filler.

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

Completeness4/5

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

With no output schema, the description usefully carries the return-value meaning. It omits scope (which account/subaccount the limit applies to) and does not distinguish itself from neighboring live-call tools, which is the only real gap for such a simple read.

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 the baseline is 4. There are no arguments whose semantics could be misread, and the description correctly introduces none.

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: returns current running calls versus the account's maximum concurrency. It is distinguishable from call-listing siblings because it reports a capacity ratio rather than calls themselves. It does not explicitly name a sibling it differs from, 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 Guidelines3/5

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

No explicit when-to-use or when-not-to-use statement, and no alternative tools are referenced (e.g., list_live_calls for the actual call list). The purpose implies a capacity-check use case, but the agent must infer it.

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

get_conferenceGet a live conferenceA
Read-only
Inspect

Get one running Vobiz conference room by name (GET /Conference/{name}/): run time, member count and each member's member_id, call_uuid, caller, mute and deaf state. Use it to find the member_id values that the mute, deafen, kick, hang-up and play tools need.

ParametersJSON Schema
NameRequiredDescriptionDefault
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower, and the description still adds real context: it constrains the lookup to a 'running' conference and itemizes the response payload, which matters since no output schema exists. It does not mention failure behavior for a non-existent or ended conference.

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

Conciseness5/5

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

Two sentences, no filler, with the retrieval action and endpoint front-loaded and the workflow guidance second. 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?

For a single-parameter read tool with no output schema, the description adequately covers what is returned and how the result is consumed downstream. Only minor gaps remain around error/empty-result behavior.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already states the name must match the <Conference> XML element exactly. The description adds only the phrase 'by name,' so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Get one running Vobiz conference room by name') with the underlying endpoint, and enumerates the returned fields (run time, member count, member_id, call_uuid, caller, mute/deaf state). This clearly distinguishes it from the sibling list_conferences, which enumerates rather than retrieves a single room.

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 a concrete downstream purpose: 'Use it to find the member_id values that the mute, deafen, kick, hang-up and play tools need,' naming the sibling tools that consume its output. It lacks an explicit when-not clause (e.g., use list_conferences to enumerate rooms), so it falls just short of a 5.

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

get_conversation_messagesGet conversation messagesA
Read-only
Inspect

Return the messages of one conversation (from list_conversations or a message's conversationId), oldest first. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100 (default 50).
offsetNo
conversation_idYesConversation ID.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' adds nothing new; the ordering guarantee ('oldest first') is genuine added behavioral context. It does not describe pagination behavior, result volume, or the limits of the openWorld data source.

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 that are entirely front-loaded: the action first, then the sourcing hint, then the safety/ordering note. No filler.

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

Completeness4/5

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

For a simple read tool with an output schema absent, the definition covers identity, sourcing, and ordering, and the schema covers the page-size parameter. Missing only a note on how paging/offset works in practice, which is a minor gap.

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

Parameters3/5

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

Schema coverage is 67%: limit and conversation_id are documented inline, offset is not. The description adds only the provenance of conversation_id and says nothing about paging, so it neither compensates for the gap nor overrides the schema.

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

Purpose5/5

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

States a specific verb and resource ('Return the messages of one conversation'), and the parenthetical identifies the ID's provenance, distinguishing it from siblings like list_messages and get_message. An agent knows exactly what this returns 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?

Explicitly tells the agent where the required conversation_id comes from (list_conversations or a message's conversationId), which is real routing guidance. It does not, however, state when not to use it or contrast it with get_message for a single message.

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

get_gather_resultGet collected keypad inputB
Read-only
Inspect

Return the DTMF input received for a gather_dtmf / hosted flow (digits, call_uuid, whether the callback signature was verified). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
flow_idYes

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 and openWorldHint=false, so 'Read-only.' in the description adds nothing. What does add value is the enumeration of the return payload, which is useful given there is no output schema. However, it omits important behavior: what is returned when no input was captured, whether the result is retained/consumable once read, and any retention or race conditions.

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 the resource first and the return payload in a compact parenthetical; nothing is redundant. The trailing 'Read-only.' is the one wasted clause since it merely restates the annotation.

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, the description must carry the return contract, and listing the three result fields is a reasonable start. But for a retrieval tool tied to an asynchronous gather, an agent still lacks the key lifecycle facts: when a result becomes available, whether calling too early returns empty or errors, and how flow_id is sourced.

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?

There is exactly one parameter, flow_id, with 0% schema description coverage and only a hex pattern constraint. The description never mentions flow_id, its origin, or how to obtain it from gather_dtmf, so it does not compensate for the empty schema documentation.

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 ('Return') plus a specific resource ('the DTMF input') and even enumerates the returned fields (digits, call_uuid, signature verification). It distinguishes itself implicitly from the sibling gather_dtmf, which initiates the gather rather than retrieving its result, though it never states that contrast outright.

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?

Linking the tool to 'a gather_dtmf / hosted flow' gives an implied usage context, but there is no explicit guidance on when to call it (e.g. after the gather completes), no statement of what happens if the gather is still pending, and no alternatives named.

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

get_messageGet a messageA
Read-only
Inspect

Return one message by ID with its current status, error details and status history (sent → delivered / failed). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the 'Read-only' line is largely redundant, but the description goes beyond the annotations by disclosing the return payload (status, error details, status history) and the lifecycle states sent → delivered / failed, which tells the agent what meaningful states to expect.

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

Conciseness5/5

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

A single front-loaded sentence with the resource, return contents, and state flow, plus a two-word safety tag. No wasted words.

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-resource read with no output schema, the description adequately conveys what comes back and the entity's lifecycle. It omits only edge behavior such as not-found handling and whether history is paginated or bounded.

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 1 parameter and the schema description coverage is 0%, so the description must carry the load; it only says 'by ID', which conveys that message_id is an identifier but adds no format, source, or lookup guidance beyond the schema's own regex pattern.

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 (Return) and resource (one message by ID) and enumerates what the payload contains: current status, error details, and status history. The singular 'one message by ID' implicitly and clearly distinguishes it from list_messages and get_conversation_messages.

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 read-only nature and the ID-based lookup; there is no explicit statement of when to use this versus list_messages or get_conversation_messages, nor any mention of prerequisites or failure behavior.

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

get_number_healthGet phone number healthB
Read-only
Inspect

Return usage and health of one phone number on this account: spam flag, usage status and daily/hourly call statistics (answer rate, failed calls, minutes). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of history for daily granularity (default 30, max 90).
granularityNoDefault daily.
phone_numberYesThe number in E.164.

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 and openWorldHint=true, so 'Read-only' in the description is largely a repeat of structured data. The description does add value by scoping the call to 'one phone number on this account' and by disclosing the shape of the returned metrics, but it says nothing about rate limits, data freshness, or error behavior for unknown numbers.

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 tool's purpose and the returned fields in a single dense sentence, with no filler. The trailing 'Read-only.' is marginally redundant given the annotations, but it is short and harmless.

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

Completeness4/5

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

With no output schema, the description compensates by enumerating the key return fields, and annotations already carry the safety profile, so an agent has enough to call it correctly. It is only slightly incomplete on the historical window (days) and the meaning of 'usage status'.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents phone_number (E.164), granularity (daily/hourly) and days (default 30, max 90); baseline is 3. The description's mention of 'daily/hourly' statistics loosely mirrors the granularity enum but adds no window, default, or format detail beyond the schema.

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 ('Return usage and health of one phone number') and enumerates the returned data (spam flag, usage status, answer rate, failed calls, minutes), which meaningfully separates it from the similarly named sibling get_phone_number_details. It stops short of naming or contrasting that sibling explicitly, so it lands at 4 rather than 5.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over get_phone_number_details or list_phone_numbers, and no stated prerequisites or exclusions. The only usage signal is 'Read-only', which is a safety note rather than selection guidance.

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

get_phone_number_detailsGet phone number detailsB
Read-only
Inspect

Return the details (status, capabilities, application, sub-account, fees, billing dates) of ONE phone number on this account. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
phone_numberYesThe number in E.164, e.g. +919876543210.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, and the description's only behavioral statement, 'Read-only', merely repeats that. It adds nothing about error cases (e.g., number not on this account, unowned numbers) or any constraints on repeated calls, so there is no value beyond the structured hints.

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

Conciseness5/5

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

A single front-loaded sentence that names the resource first and the scoping constraint immediately after. No filler, no restatement of the 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?

With no output schema, the enumerated field list usefully tells the agent what comes back, and annotations cover the safety profile for a simple read. The only gap is what happens when the number is invalid or not owned by the account.

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 with 100% schema description coverage, so the schema already documents the E.164 format and example. The phrase 'on this account' slightly implies the number must belong to the caller's account, but no format or syntax detail is added beyond the schema baseline.

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 (return) and resource (details of a phone number) and enumerates the returned fields (status, capabilities, application, sub-account, fees, billing dates), which sharply separates it from get_number_health and update_phone_number. The 'ONE phone number on this account' scoping also contrasts it with the list_* siblings, 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 Guidelines2/5

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

No when-to-use or when-not-to-use guidance. It never says to prefer this over list_phone_numbers when you need a single number's configuration, nor does it point to get_number_health for health metrics or list_phone_numbers for enumeration.

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

get_sip_endpointGet SIP endpointA
Read-only
Inspect

Return one Vobiz SIP endpoint: username, alias, SIP URI, attached application and, when a device is registered, its registration details (contact, expiry, user agent). Use it to check whether a soft-phone or WebRTC client is online. Read-only. Passwords are never shown here. The user can view or reset them in the Vobiz console.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpoint_idYes

TDQS

A4/5.0
Behavior4/5

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

Confirms 'Read-only', consistent with readOnlyHint=true, and adds context beyond the annotations: registration details appear only when a device is registered, and passwords are never returned here (reset via the Vobiz console). Useful negative and conditional disclosure; error/permission behavior is still unstated.

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 tight sentences, front-loaded with what is returned, then the use case, then the two caveats. Nothing redundant, though it is close to the maximum useful length for a single-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?

With no output schema, the description carries return-value burden and does so by listing the fields, plus the online-status and password caveats. Only the endpoint_id semantics/value source is left uncovered.

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% and the description never explains the sole required parameter endpoint_id — no mention of its format (the schema enforces ^\d{4,25}$) or where to obtain it. The description does not compensate for the 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 specific verb and resource ('Return one Vobiz SIP endpoint') and enumerates the returned fields: username, alias, SIP URI, attached application, registration details. This distinguishes it cleanly from the sibling list_sip_endpoints, which returns many.

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 a concrete use case: 'Use it to check whether a soft-phone or WebRTC client is online.' No explicit when-not or named alternative, but the task context is clear and actionable.

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

get_sip_trunkGet SIP trunkA
Read-only
Inspect

Return one SIP trunk's configuration (domain, status, direction, limits, transport, recording). SIP credentials are redacted. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
trunk_idYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior the annotations do not: SIP credentials are redacted, and it lists which configuration facets are returned. It does not discuss auth requirements or error behavior, but for a single read that is a minor gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the returned surface, then the redaction caveat. No filler and nothing buried.

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 compensates by naming the returned fields, which is what an agent needs for a single-resource GET. Missing only error/not-found behavior and any note that the trunk must belong to the caller's account.

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 0%, and the description says nothing about trunk_id beyond its name. The name is self-explanatory and the schema's UUID pattern carries the format constraint, so this is adequate but adds no meaning beyond structured data.

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 ('Return one SIP trunk's configuration') and enumerates the fields returned (domain, status, direction, limits, transport, recording). The singular 'one' implicitly separates it from list_sip_trunks, but no sibling is named explicitly, 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 Guidelines2/5

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

There is no statement of when to use this tool versus list_sip_trunks, get_sip_endpoint, or list_trunk_credentials, and no prerequisites or exclusions. The only contextual cue is the trailing 'Read-only', which is a safety claim rather than usage guidance.

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

get_sub_accountGet sub-accountA
Read-only
Inspect

Return one Vobiz sub-account's details: name, contact, status, KYC mode, rate limit, permissions and timestamps. Credentials are redacted. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sub_auth_idYesThe sub-account's Auth ID (SA_...), from list_sub_accounts.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the bar is lower, but the description adds a genuinely useful disclosure beyond them: credentials are redacted, so the agent knows the response will not contain secrets and must not be relied on for auth material. It still omits what happens when the ID does not exist or is not accessible.

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

Conciseness5/5

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

Three short sentences, front-loaded with the return contents, then the redaction caveat, then the read-only note. No filler, no repetition of the tool name, and every clause carries information.

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

Completeness5/5

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

For a single-parameter read tool with no output schema, the description enumerates the returned fields (name, contact, status, KYC mode, rate limit, permissions, timestamps) plus the redaction behavior, which covers the return contract the schema omits. Nothing an agent needs to call 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?

Only one parameter, and schema description coverage is 100% — the schema already documents the SA_... pattern and even points to list_sub_accounts as the source. The description adds nothing about the ID's format or provenance, 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 ('Return one Vobiz sub-account's details') and enumerates the fields returned, so the agent knows exactly what it retrieves. It implicitly distinguishes itself from list_sub_accounts via 'one', but never names the sibling, so differentiation is left to inference.

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

Usage Guidelines3/5

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

The description implies the natural use case (fetch a single sub-account's details) and the schema points at list_sub_accounts as the source of the ID, which implies a list-then-get flow. However there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. get_sub_account_kyc_status for KYC detail).

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

get_sub_account_kyc_statusGet sub-account KYC statusA
Read-only
Inspect

Return a Vobiz sub-account's aggregated KYC state: overall status, per-document status (PAN, GST, CIN, Aadhaar), business type and whether calls are paused pending KYC. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sub_auth_idYesThe sub-account's Auth ID (SA_...), from list_sub_accounts.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the trailing 'Read-only' largely restates structured data. The description does add real behavioral context beyond the annotations by disclosing the aggregation shape (overall + per-document + pause flag), which is the kind of information an agent needs to interpret the call without an 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?

One dense sentence front-loads the return payload, followed by a terse two-word annotation echo. Nothing is padded, though 'Read-only' is redundant against readOnlyHint=true and could be dropped.

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 enumerating the returned fields, and the single required parameter is fully covered by the schema. It is nearly complete for a read-only lookup; only the relationship to the KYC session tool is left 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 there is a single parameter, so the schema already fully documents sub_auth_id including its SA_ pattern and its source (list_sub_accounts). The description adds no parameter-level detail, which is the expected baseline when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb+resource (returns a Vobiz sub-account's aggregated KYC state) and enumerates exactly what comes back: overall status, per-document status for PAN/GST/CIN/Aadhaar, business type, and call-pause state. An agent can immediately distinguish this from the sibling get_sub_account (general account data) and create_sub_account_kyc_session (which creates a session rather than reading status).

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 purpose: an agent can infer it should call this to check KYC status. There is no explicit statement of when to prefer this over get_sub_account or the KYC session tool, and no prerequisites (e.g., needing a completed session first) are mentioned.

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

get_vobiz_skillLoad a Vobiz skillA
Read-only
Inspect

Return the instructions of one Vobiz Agent Skill (endpoints, request shapes, VobizXML rules, pitfalls). Pass section to load only one ## section (names come from list_vobiz_skills). Read-only, no API call.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name from list_vobiz_skills, e.g. vobiz-voice-calls.
sectionNoOptional `##` heading to return instead of the whole skill (case-insensitive prefix match).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=false, and the description adds genuinely useful behavior beyond them: 'Read-only, no API call' clarifies this is a local content lookup with no network side effects, and it discloses the return payload shape. It does not cover edge cases such as an unmatched or empty section value, so it is good but not exhaustive.

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, front-loaded with the tool's output purpose, then the optional parameter nuance and the safety note. No filler and nothing buried.

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 carries the burden by describing what is returned (endpoints, request shapes, VobizXML rules, pitfalls), and it explains the section-filtering behavior. Minor gaps exist around invalid/empty section handling, 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.

Parameters3/5

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

Schema coverage is 100%: the `name` enum and the `section` prefix-match semantics are already documented in the schema. The description only restates that `section` loads one `##` section and that names come from list_vobiz_skills, which is marginally useful cross-tool context but adds little beyond the schema baseline.

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

Purpose5/5

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

States a specific verb and resource ('Return the instructions of one Vobiz Agent Skill') and immediately enumerates the content type (endpoints, request shapes, VobizXML rules, pitfalls). It also contrasts with list_vobiz_skills by noting where skill names come from, so an agent can distinguish the two 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?

The description gives clear usage context: use `section` to fetch a single `##` section, and names list_vobiz_skills as the source of valid names. It stops short of an explicit when/when-not rule (e.g. 'call list_vobiz_skills first, then load only the skill you need'), so it is strong context but not full routing guidance.

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

hangup_conference_memberHang up a conference memberA
DestructiveIdempotent
Inspect

End the calls of members in a live Vobiz conference (DELETE /Conference/{name}/Member/{id}/): they leave the room and their call hangs up. Use it to drop a participant completely; to keep their call going after they leave, use kick_conference_member. Pass one member_id, a comma-separated list, or all. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to hang up this member's call.
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, but the description adds real value beyond them: it explains that the member leaves the room AND their call terminates, and that confirm: true is required. It does not cover what happens on partial failure when a comma-separated list contains an invalid ID, which keeps it short of a 5.

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

Conciseness4/5

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

Three compact sentences, front-loaded with the action and effect, then routing to the sibling, then parameter notes. The trailing 'Pass one member_id, a comma-separated list, or all. Requires confirm: true.' is somewhat redundant with the schema and the embedded DELETE path adds little, but nothing is bloated.

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, annotation-covered conference tool with full schema coverage and no output schema, the description supplies the necessary effect, sibling routing and confirmation gate. Only edge-case behavior (mixed valid/invalid member lists, idempotent repeat behavior) is unaddressed, which is minor here.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents conference_name, member_id and confirm, including the 'all' keyword and the comma-separated pattern. The description's restatement ('one member_id, a comma-separated list, or all' and 'Requires confirm: true') largely duplicates that, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource — 'End the calls of members in a live Vobiz conference' — and clarifies the effect (they leave the room and their call hangs up). It explicitly distinguishes itself from the closest sibling, kick_conference_member, so an agent can choose correctly 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 Guidelines5/5

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

Gives an explicit when-to-use ('drop a participant completely') plus a named alternative and the condition that selects it ('to keep their call going after they leave, use kick_conference_member'). It also states the confirm: true prerequisite, so the invocation gate is clear.

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

hold_callPut a live call on holdA
DestructiveIdempotent
Inspect

Puts a leg on hold by transferring it to a hosted flow that plays hold music (or silence) in a loop. Resume with unhold_call and the XML URL that should take over. HTTP mode with VOBIZ_PUBLIC_URL only. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoWhich call leg: aleg (default), bleg or both.
confirmYesMust be true, set only after the user explicitly asked to put this call on hold.
call_uuidYes
music_urlNoHold music (https .mp3/.wav). Silence if omitted.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructive/openWorld/idempotent hints, so the bar is lower, but the description still adds real behavioral context: the hold works by transferring the leg to a hosted flow, music loops until resume, and it only works in HTTP mode with VOBIZ_PUBLIC_URL. It does not detail the effect on the live call state during the hold, a minor gap.

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 with no filler; the mechanism, the resume path, the mode constraint, and the confirm requirement each carry information. Slightly choppy phrasing ('and the XML URL that should take over') but nothing wasteful.

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 mutation tool with no output schema but full annotation coverage, the description supplies the mechanism, resumption path, mode constraint, and confirmation requirement an agent needs to invoke it correctly. Only the state effect on the call during hold is unaddressed.

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 75%, so the schema already documents legs, confirm, and music_url well. The description reinforces the confirm requirement and that music is optional (silence if omitted), but adds little syntax or meaning beyond what the schema fields already say. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('Puts a leg on hold') and explains the mechanism (transferring to a hosted flow playing hold music or silence on loop). It also names the counterpart action, unhold_call, so the agent can distinguish this from its resume sibling without opening 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?

Explicitly names unhold_call as the way to resume, and states two preconditions: 'HTTP mode with VOBIZ_PUBLIC_URL only' and 'Requires confirm: true.' This gives clear context for when the tool is valid, though it stops short of stating when-not-to-use or distinguishing from play_audio/stop_audio alternatives.

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

kick_conference_memberKick a conference memberA
Destructive
Inspect

Remove members from a live Vobiz conference while keeping their call up (POST /Conference/{name}/Member/{id}/Kick/): their call continues with the next VobizXML element after , so you can play them a message or route them elsewhere. To end their call instead, use hangup_conference_member. Pass one member_id, a comma-separated list, or all. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to remove this member from the conference.
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, idempotent=false, but the description adds the crucial nuance that the member's call is NOT terminated and instead continues to the next VobizXML element. It also flags the confirm:true requirement. This clearly exceeds the annotation layer, though rate-limit/return details are absent.

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 what the operation does and its key behavioral trait (call stays up), then routes to the alternative and covers the confirm requirement. No wasted sentences; 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?

For a 3-param mutation tool with full schema coverage and no output schema, the description supplies the behavioral context an agent needs (call persistence, confirm requirement, alternative tool). Return-value detail is unnecessary here, so coverage is nearly 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%, so the schema already documents member_id formats (single, comma-separated, or 'all') and the confirm requirement. The description restates these but adds no syntax or format detail beyond what structured data provides — 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 (Remove/Kick) and resource (members of a live conference), and explicitly distinguishes itself from the sibling hangup_conference_member. An agent can tell the two apart 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 Guidelines5/5

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

Names the alternative tool explicitly ('To end their call instead, use hangup_conference_member') and gives the selecting condition, which is exactly the when-to-use guidance required. It also describes the positive outcome of using this tool (call continues with next VobizXML element).

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

list_applicationsList voice applicationsA
Read-only
Inspect

List Vobiz applications (answer/hangup URLs used for inbound calls on linked numbers). Max 20 per page (Vobiz limit). Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
app_nameNoFilter: name contains

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, and the description adds real behavioral context beyond them: a hard 20-per-page Vobiz cap and stateless pagination with nothing persisted between calls. The trailing 'Read-only' merely restates the annotation, so it is not a full 5.

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 sentences, front-loaded with the resource definition and then the operational constraints; nothing is padded. The final 'Read-only.' sentence is the only element that does not earn its place, since it duplicates the annotation.

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 need not explain return values, and it adequately covers the pagination contract and page-size ceiling. The one gap is the app_name filter semantics, which is left entirely to the schema's brief note.

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 33%, so the description must compensate, and it partly does by explaining that page/per_page or limit/offset must be passed on every call. However, it never explains the app_name 'name contains' filter, and it names page/per_page parameters that do not exist in the schema, which could mislead.

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 ('List Vobiz applications') and immediately glosses the domain object as 'answer/hangup URLs used for inbound calls on linked numbers'. This distinguishes it from get_application, create_application, update_application and delete_application without the agent opening any schema.

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

Usage Guidelines3/5

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

The description explains how to paginate but never says when to reach for this tool versus get_application or the create/update/delete siblings. Usage is only implied by the word 'List' and the enumeration scope, so the agent must infer the selection condition.

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

list_audio_streamsList audio streams on a callA
Read-only
Inspect

List the audio streams on a Vobiz call (GET /Call/{uuid}/Stream/), both active and stopped, with status, WebSocket URL, track and audio format. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 20.
offsetNo
call_uuidYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' is redundant. However, the description adds genuinely useful context beyond the annotations: pagination is stateless, nothing is persisted between calls, and results span both active and stopped streams. It stops short of describing return ordering or rate limits.

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 front-loaded sentences with the purpose first and no filler. Minor redundancy between 'Pagination is stateless' and 'Nothing is saved between calls' costs a point.

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 so ('status, WebSocket URL, track and audio format'). Read-only and pagination behavior are covered; only the call_uuid parameter and ordering semantics are left unexplained.

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 low (33%); only limit has a schema description. The description explains limit/offset as stateless pagination, which adds value, but it also references page/per_page that do not exist in the schema, which risks confusion, and it never explains call_uuid.

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

Purpose5/5

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

States a specific verb (List) and resource (audio streams on a Vobiz call), and scopes it as 'both active and stopped'. This clearly distinguishes it from the singular get_audio_stream sibling and from the mutation siblings start_audio_stream/stop_audio_stream.

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 (enumerate all streams, active and stopped), which is enough to distinguish it from get_audio_stream, but no sibling is named and no explicit when-to-use/when-not guidance is given.

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

list_broadcastsList broadcastsB
Read-only
Inspect

List bulk-message broadcasts on this account with status (draft, scheduled, running, paused, completed, cancelled) and delivery stats. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-500 (default 50).
offsetNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the appended 'Read-only' is largely redundant. The description does add real value by enumerating the possible status values and promising delivery stats, but says nothing about ordering, pagination limits, or total-count behavior for what is clearly a paged read.

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

Conciseness5/5

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

A single dense sentence with the resource, the returned fields, and the status vocabulary front-loaded. Nothing extraneous; the only waste is the redundant 'Read-only' clause.

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?

There is no output schema, so the description is the only place the agent learns the return shape — it does name status and delivery stats, which helps, but gives no sense of the record structure or how to page through large result sets. Adequate but leaves real gaps for a paged list tool.

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 coverage is only 50%: limit is documented in the schema but offset has no description at all. The description never mentions paging, page size, or the 500 cap, so it fails to compensate for the undocumented offset parameter.

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 bulk-message broadcasts') and goes further by naming the status states and delivery stats returned. It does not, however, distinguish itself from the sibling get_broadcast, so the agent must infer that this is the collection-level read.

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 listing intent is implied clearly by 'List ... on this account', but there is no explicit guidance on when to call this versus get_broadcast for a single broadcast, and no mention of paging through results. Usage is inferable but not routed.

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

list_call_recordsList call recordsA
Read-only
Inspect

List completed call records (CDRs) for this account, newest first, with pagination and a summary (total, answered, answer rate, duration, cost). Optional filters: start_date/end_date (YYYY-MM-DD, max 92 days apart), call_direction, from_number, to_number, hangup_cause, min/max duration. Filter by hangup_cause (e.g. NORMAL_CLEARING for answered, NO_ANSWER, USER_BUSY) to find answered, missed or busy calls. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1).
end_dateNoEnd of range, YYYY-MM-DD (inclusive).
per_pageNoRecords per page, max 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
to_numberNoDestination number (partial match on the backend).
start_dateNoStart of range, YYYY-MM-DD.
from_numberNoCaller number (partial match on the backend).
hangup_causeNo
max_durationNoMaximum duration in seconds.
min_durationNoMinimum duration in seconds.
call_directionNo
include_summaryNoInclude the aggregate summary block (default true).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds genuinely useful behavior beyond that — newest-first ordering, a stateless pagination model with 'nothing is saved between calls', and the contents of the summary block. It does not cover rate limits or the default date range.

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: the core operation, ordering, pagination model and summary contents come before the optional-filter detail. It is a single run-on paragraph rather than a violation of length.

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 enumerates the summary fields (total, answered, answer rate, duration, cost) and explains the stateless pagination contract for an 11-parameter tool. It omits default date-range behavior when dates are absent, which is the main remaining gap.

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 82%, so baseline is 3, and the description adds real meaning: the 92-day max span for start_date/end_date and concrete hangup_cause values (NORMAL_CLEARING = answered, NO_ANSWER, USER_BUSY) that the schema only constrains by pattern. Minor confusion is introduced by advertising 'limit/offset' when the schema exposes only page/per_page.

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 with scope: 'List completed call records (CDRs) for this account, newest first.' The word 'completed' implicitly separates it from list_live_calls and get_call_details, but no sibling is named explicitly, so an agent must infer the boundary.

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?

Gives filter-oriented guidance ('Filter by hangup_cause ... to find answered, missed or busy calls'), which implies usage, but never states when to choose this tool over list_live_calls, get_call_details, or get_call_recording, and offers no exclusions.

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

list_conferencesList live conferencesA
Read-only
Inspect

List the names of conference rooms currently running on this Vobiz account (GET /Conference/). Use it to find a room before inspecting it with get_conference or controlling its members. Keep a record of the rooms you start so you can check or end each one by name with get_conference and end_conference.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine behavioral scope beyond that: only names are returned, and only rooms currently running as opposed to all rooms ever created. It stops short of noting pagination or ordering, so it is not a 5.

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

Conciseness4/5

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

Two sentences, front-loaded with the operation and its endpoint, and every clause points somewhere useful. The trailing record-keeping advice is slightly instructional filler, which keeps it out of the top band.

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

Completeness4/5

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

For a zero-parameter read-only list with no output schema, the description covers what is returned (room names) and what to do next, which is enough to invoke it correctly. It does not mention result ordering, pagination, or failure modes, so a little is missing.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool is 4. No parameter claims are made or needed.

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

Purpose5/5

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

States a specific verb (List) plus resource (conference rooms) plus scope (currently running on this Vobiz account), even citing the underlying endpoint GET /Conference/. That is enough to separate it from list_live_calls and the single-conference get_conference without opening any 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?

Explicitly routes the agent: use it to find a room before inspecting with get_conference or acting on members, and names end_conference as the follow-up. It gives clear positive usage context but never states a when-not condition (e.g., ended conferences or historical rooms are not returned).

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

list_conversationsList conversationsB
Read-only
Inspect

List message threads (one per pair of numbers and channel), most recently active first, with message and unread counts. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100 (default 20).
offsetNo

TDQS

B3.2/5.0
Behavior3/5

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

'Read-only' merely restates readOnlyHint=true, so it earns no credit. It does add ordering information ('most recently active first') and the returned counts, which are useful context beyond the annotations, but says nothing about pagination behavior or the openWorldHint implication.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the granularity, ordering and payload are all packed in without 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?

With no output schema, the description usefully characterizes the return shape (threads, activity ordering, message and unread counts) and the annotations carry the safety profile. The main remaining gap is offset/pagination behavior, which neither schema nor description explains.

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 coverage is only 50%: limit is documented in the schema, but offset is left bare and the description adds no semantics for either. The description supplies no paging guidance, so it does not compensate for the uncovered parameter.

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+resource ('List message threads') and clarifies the granularity ('one per pair of numbers and channel') plus ordering and contents. It is clear what the tool returns, though it never names the sibling tools (list_messages, get_conversation_messages) it must be distinguished from.

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 or when-not-to-use guidance, and no alternative named among the many listing siblings (list_messages, list_broadcasts, get_conversation_messages). Usage is only implied by the fact that it is a list operation.

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

list_ip_acl_entriesList trunk IP ACL entriesA
Read-only
Inspect

List the IP access control entries on this Vobiz account: the IPv4 addresses and CIDR ranges allowed to send SIP traffic to trunks without digest credentials. Use it to audit which PBXs, SBCs or carriers are trusted. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
offsetNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description still adds real context by explaining stateless pagination ("pass page/per_page (or limit/offset) on every call. Nothing is saved between calls") and restating the read-only nature. The only blemish is naming page/per_page parameters that do not exist in the 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?

Four tight sentences, front-loaded with what the tool returns and who it's for, then the operational pagination caveat. Slightly marred by the extraneous page/per_page reference, but no filler.

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

Completeness4/5

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

With no output schema, the description usefully characterizes the returned data (IP addresses and CIDR ranges) and covers pagination behavior. It stops short of saying whether paging metadata or a total count is returned, but that is a minor gap for a simple list endpoint.

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% (limit documented, offset bare). The description mentions limit/offset but adds no format, defaults, or range semantics beyond what the schema already says, and it introduces page/per_page params that aren't in the schema, which adds confusion rather than meaning.

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

Purpose5/5

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

States a specific verb (List) and resource (IP access control entries) and then defines what the resource actually is — IPv4 addresses/CIDR ranges permitted to send SIP traffic to trunks without digest credentials. That definition cleanly separates it from sibling tools like add_ip_acl_entry, update_ip_acl_entry, delete_ip_acl_entry and from list_trunk_credentials.

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?

"Use it to audit which PBXs, SBCs or carriers are trusted" gives a clear usage context. It does not explicitly name alternatives or state when-not-to-use (e.g., use list_trunk_credentials for digest-authenticated senders), so it falls short of the 5 bar.

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

list_live_callsList live callsA
Read-only
Inspect

List the UUIDs of calls currently in progress on this account, and optionally calls still queued. Read-only. Use get_call_status for details of one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_queuedNoAlso list queued (accepted, not yet dialed) calls. Default false.

TDQS

A4/5.0
Behavior3/5

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

The annotation readOnlyHint=true already declares the safe-read profile, and the description's 'Read-only' merely repeats it. It does add genuine context by narrowing the return to UUIDs only ('currently in progress', 'still queued'), but says nothing about permissions, result size, or freshness. Adequate against an already-covered safety profile.

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

Conciseness5/5

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

Two short sentences, no waste, and the core scope ('calls currently in progress') is front-loaded before the optional queued behavior and the sibling pointer.

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 specifies the return payload (UUIDs), and annotations carry the safety profile, so an agent has enough to call it. Minor gap: no guidance on whether subaccount calls are included or how fresh the in-progress list is.

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 boolean is fully documented in the schema, so baseline is 3. The phrase 'optionally calls still queued' restates the parameter's meaning without adding format, default, or interaction detail beyond the schema.

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

Purpose5/5

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

States a specific verb (list) and resource (calls currently in progress) plus the exact payload returned (UUIDs), and explicitly scopes to 'this account'. It also names the sibling (get_call_status) it is distinct from, so an agent can separate the two 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?

Routes the agent to get_call_status when it needs details of a single call, which is exactly the alternative an agent would otherwise confuse this with. It does not mention list_call_records as the alternative for completed/historical calls, so the when-not coverage is incomplete.

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

list_messagesList messagesA
Read-only
Inspect

List SMS, MMS and RCS messages on this account, newest first, with filters (status, channel, direction in/out, to, from, tag, date range) and limit/offset paging. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
tagNo
fromNo
limitNoPage size, 1-100 (default 20).
offsetNo
statusNo
channelNo
end_dateNoCreated at or before, ISO 8601.
directionNoin = received, out = sent.
start_dateNoCreated at or after, ISO 8601.

TDQS

A3.7/5.0
Behavior3/5

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

The description repeats the read-only safety profile already declared by annotations and adds useful behavioral details: newest-first ordering and limit/offset paging. With annotations covering readOnlyHint and openWorldHint, the bar is lower, but it still lacks details on rate limits, result pagination behavior, or what the response fields look like.

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

Conciseness5/5

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

The description is a single front-loaded sentence that efficiently states purpose, ordering, filter surface, paging, and safety. Every clause earns its place with no redundant or vague phrasing.

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 list tool with no output schema and 10 largely undocumented parameters, the description provides enough to call it correctly: what is listed, ordering, paging, and the full filter surface. It could go further by explaining default page size or response shape, but it is substantially complete.

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

Parameters4/5

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

Schema description coverage is only 40%, so the description must compensate. It names every filter parameter (status, channel, direction in/out, to, from, tag, date range) and clarifies direction semantics and paging, adding meaning beyond the schema for several undocumented parameters.

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

Purpose4/5

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

The description states a clear verb and resource ('List SMS, MMS and RCS messages'), the scope ('on this account'), and the ordering ('newest first'). It distinguishes itself from single-message tools like get_message, but does not explicitly name sibling alternatives such as get_conversation_messages or list_conversations for more specific use cases.

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 filter list and paging description, but there is no explicit guidance on when to use this tool versus related tools like get_conversation_messages for a single thread or list_conversations for conversation-level views. The description does not state exclusions or prerequisites.

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

list_messaging_numbersList messaging numbersA
Read-only
Inspect

List the numbers on this account that can send and receive SMS/MMS, with capabilities and their latest message. Use one as send_message from. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, and the trailing 'Read-only.' merely restates readOnlyHint without credit. The description does add genuine behavioral value by disclosing the result shape (capabilities plus latest message per number), which is not in the annotations, but it says nothing about account scope or pagination.

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 padding. The only wasted clause is 'Read-only.', which duplicates the readOnlyHint annotation rather than adding information.

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

Completeness4/5

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

For a zero-parameter read tool with no output schema, the description covers what the tool returns (numbers, capabilities, latest message) and the intended next step. What is missing is scoping detail such as whether results are paginated or limited to the primary account versus sub-accounts.

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 the baseline of 4 applies. There is no parameter surface the description needs to compensate for, and it correctly does not invent or imply any inputs.

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 numbers on this account that can send and receive SMS/MMS') plus the returned payload (capabilities and latest message). However, it never distinguishes itself from the closely named sibling list_phone_numbers, so an agent must guess which list is which.

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?

'Use one as send_message `from`' gives a concrete workflow trigger that ties this tool to a downstream sibling. It stops short of stating when not to use it (e.g., versus list_phone_numbers or search_available_numbers), so it is clear context without exclusions.

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

list_opt_outsList opt-outsB
Read-only
Inspect

List numbers that opted out (by STOP keyword or added manually), with channel, reason and source. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100 (default 20).
offsetNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' merely restates that. It does add useful context about what the records represent (STOP keyword vs manual entry) and which fields accompany each entry, but says nothing about pagination behavior or ordering, which matters for a list 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?

One tight front-loaded sentence with no padding. The trailing 'Read-only.' is slightly redundant given the annotation, but it costs almost nothing.

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?

No output schema exists, so the description should carry the return-value burden; it partially does by naming the per-record fields (channel, reason, source). However it omits pagination/result-set behavior and any ordering, leaving meaningful gaps for a paged listing tool.

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 coverage is only 50%: limit is documented in-schema but offset is not, and the description adds nothing about pagination semantics (page size, max, offsets, default). With a documented-but-unexplained paging pair, the description leaves the agent to guess how to paginate.

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

Purpose5/5

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

States a specific verb (list) and resource (numbers that opted out), and further disambiguates with the origin detail '(by STOP keyword or added manually)' plus the fields returned (channel, reason, source). This clearly separates it from check_opt_out, add_opt_out and remove_opt_out among the siblings.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no mention of the alternative check_opt_out (single-number lookup) vs this bulk listing, and no prerequisites. Usage must be inferred entirely from the name and verb.

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

list_origination_urisList trunk origination URIsA
Read-only
Inspect

List the origination URIs on this Vobiz account: the SIP destinations trunks deliver outbound calls to, with priority (failover order), weight (load split), transport and enabled state. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
offsetNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' is redundant, but the description adds real behavioral context beyond them: pagination is stateless, nothing is retained between calls, and the returned fields (priority/failover order, weight/load split, transport, enabled state) are enumerated.

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

Conciseness5/5

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

Three tightly packed sentences: identity, payload, pagination contract. Front-loaded with the noun that matters and no filler.

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

Completeness4/5

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

With no output schema, the description correctly takes on the burden of describing the returned fields and the pagination model, which is sufficient for a simple read list. The only gap is the undocumented offset parameter and the mention of page/per_page params absent from the schema.

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

Parameters3/5

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

Schema coverage is 50%: limit is documented in the schema (max 100, default 20) while offset is not. The description compensates by explaining page/per_page and limit/offset semantics and the statelessness contract, which is useful, but it also references page/per_page parameters that do not exist in the schema, creating mild ambiguity.

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

Purpose5/5

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

States a specific verb (List) and resource (origination URIs on this Vobiz account) and then defines what the resource actually is: the SIP destinations trunks deliver outbound calls to. This cleanly separates it from the create/update/delete_origination_uri siblings.

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

Usage Guidelines3/5

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

The scoping ('on this Vobiz account') is clear, but there is no explicit when-to-use versus alternatives guidance (e.g. reading a single trunk's URIs via get_sip_trunk). The pagination instruction ('pass page/per_page or limit/offset on every call') is operational guidance rather than tool-selection guidance.

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

list_phone_numbersList phone numbersA
Read-only
Inspect

List the phone numbers on this Vobiz account (and its sub-accounts) with status, capabilities, linked application and fees. Supports status filter and search. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNoFilter by (part of) a phone number.
statusNo
per_pageNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so 'Read-only' adds nothing. The description does add real behavioral context the annotations lack: pagination is stateless, page/per_page (or limit/offset) must be passed on every call, and nothing persists between calls. That is the kind of call-pattern disclosure that prevents an agent from assuming server-side cursor state.

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 sentences, front-loaded with what is listed and immediately followed by filtering and pagination constraints. The only waste is the trailing 'Read-only,' which merely restates the readOnlyHint annotation.

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 enumerates the returned fields and covers the stateless-pagination contract, so an agent can call it correctly. The remaining gap is the undefined 'page' parameter and status enum semantics, which are left entirely to the schema.

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

Parameters3/5

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

Schema coverage is 50%: search and per_page are documented in the schema, while page and status are not. The description partially compensates by naming the status filter and the pagination pair, and even reveals an undocumented limit/offset alternative. However, it gives no semantics for 'page' or for the status enum values, so it lands at the baseline-plus level rather than fully compensating.

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 ('List') plus resource ('phone numbers on this Vobiz account and its sub-accounts') plus the returned fields (status, capabilities, linked application, fees). This cleanly separates it from the sibling list_messaging_numbers, which targets a different number type, so an agent can route without opening schemas.

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 notes the supported filters ('Supports status filter and search'), which implies how to narrow results, but never says when to use this list versus get_phone_number_details, get_number_health, or search_available_numbers. No exclusions or prerequisites are stated, so usage is only implied.

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

list_recordingsList recordingsA
Read-only
Inspect

List call recordings on this account (including its sub-accounts), newest first, with recording_url, call_uuid, numbers and duration. Optional from_date/to_date (YYYY-MM-DD). Vobiz returns at most 20 per page. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Recording URLs give access to call audio, so share them only with the account owner. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 20 (Vobiz limit). Default 20.
offsetNo
to_dateNoLatest recording date, YYYY-MM-DD.
from_dateNoEarliest recording date, YYYY-MM-DD.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=true, openWorldHint=true), but the description adds substantive behavior: newest-first ordering, the 20-item server cap, stateless pagination with nothing persisted between calls, and a security warning that recording URLs expose call audio. That is real context beyond the annotations; only rate-limit/error behavior is absent.

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 and front-loaded: purpose, filters, pagination contract, and the security caveat appear in a logical order with almost no filler. The single run-on paragraph and the redundant trailing 'Read-only' (already an annotation) keep it from a 5.

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

Completeness5/5

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

With no output schema, the description correctly enumerates the returned fields, and it covers the pagination model, page-size ceiling, date filtering, account scope, and the sensitive nature of recording URLs. An agent has everything needed to call this list tool correctly.

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 75% schema coverage the baseline is 3, but the description introduces 'page/per_page' as pagination parameters that do not exist in the schema, while the schema exposes only limit/offset. This mismatch can mislead the agent about which arguments are valid, and it adds nothing about offset semantics. The date-format repetition merely mirrors the schema patterns.

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 ('List call recordings'), scopes it ('on this account including its sub-accounts'), and specifies ordering plus the fields returned (recording_url, call_uuid, numbers, duration). This clearly separates it from get_call_recording, delete_recording and list_call_records without the agent opening a 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 usable operational context: optional from_date/to_date filters, a 20-per-page cap, and the requirement to pass pagination params on every call because state is not retained. It does not explicitly route the agent to siblings (e.g. get_call_recording for a single recording), so it stops short of the when/when-not/alternatives bar.

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

list_sip_endpointsList SIP endpointsA
Read-only
Inspect

List the SIP endpoints on this Vobiz account: soft-phones, desk phones and WebRTC clients that register at registrar.vobiz.ai. Shows each endpoint's username, alias, SIP URI, attached application and registration state. Filter by username, alias, application or sub-account. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only. Passwords are never shown here. The user can view or reset them in the Vobiz console.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
offsetNo
sub_accountNoFilter: endpoints of this sub-account.
alias_containsNoFilter: alias contains this text.
application_idNoFilter: endpoints attached to this application.
username_containsNoFilter: username contains this text.
without_applicationNotrue = only endpoints with no application attached.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' is redundant, but the description adds genuinely new behavior: stateless pagination with no server-side state between calls, and an explicit disclosure that passwords are never returned here and must be managed in the console. That data-exposure boundary is real value beyond the structured fields.

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

Conciseness4/5

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

Front-loaded with purpose and scope, then filters, then pagination, then the password caveat — a logical order with no filler sentences. The closing console-redirect sentence is marginally long but does carry the credential-handling 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 enumerates the returned fields (username, alias, SIP URI, application, registration state), so an agent knows what comes back. Only the undocumented without_application flag and the mismatched page/per_page reference keep it 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 86%, so the schema already documents the parameters and baseline is 3. The description adds the filter dimensions in prose but omits without_application entirely and mentions 'page/per_page' options that do not exist in the schema, which is mildly misleading rather than additive.

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 ('List the SIP endpoints on this Vobiz account') and immediately scopes it with concrete examples (soft-phones, desk phones, WebRTC clients) plus the registrar domain. An agent can distinguish this from list_sip_trunks and get_sip_endpoint without opening any schema.

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

Usage Guidelines3/5

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

The description tells the agent which filters are available (username, alias, application, sub-account), which implies the intended usage pattern, but never says when to reach for this tool versus get_sip_endpoint or the sibling trunk tools, and names no exclusions.

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

list_sip_trunksList SIP trunksA
Read-only
Inspect

List SIP trunks on this account: name, domain, status, direction, CPS and concurrent-call limits. SIP credentials are redacted. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
offsetNo
directionNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description earns credit for going beyond them: it discloses that SIP credentials are redacted in the payload and that pagination is stateless with nothing persisted between calls. These are real behavioral constraints an agent could not infer 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?

Front-loaded with the resource and returned fields, then pagination behavior, then the read-only tag. Tight and dense; the trailing 'Read-only' restates the readOnlyHint annotation and the page/per_page aside adds confusion rather than value.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned fields and covers the stateless pagination contract, which is the main operational trap. It stops short of explaining how the direction filter behaves or what ordering results come back in.

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 33%, but the description compensates partially by telling the agent to pass pagination params on every call and by naming the direction field among returned values. However, it references 'page/per_page' aliases that do not exist in the input schema, which could lead an agent to send unsupported 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 ('List SIP trunks on this account') and enumerates the returned fields (name, domain, status, direction, CPS and concurrent-call limits), which immediately separates it from get_sip_trunk. An agent knows exactly what this tool produces 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 Guidelines3/5

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

The description explains how to paginate ('pass page/per_page (or limit/offset) on every call'), which is operational guidance, but never states when to prefer this tool over get_sip_trunk for a single trunk or whether it needs any prerequisites. Usage is implied by the resource name rather than explicitly framed.

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

list_sub_accountsList sub-accountsA
Read-only
Inspect

List the sub-accounts under this Vobiz main account: name, Auth ID (SA_...), status, KYC mode, rate limit and permissions. Credentials are redacted. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNoResults per page, max 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
active_onlyNotrue returns only active sub-accounts.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description's restatement of 'Read-only' adds little. However, it does add genuinely useful behavioral context beyond the annotations: that credentials are redacted from results and that pagination is stateless with nothing persisted between calls.

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 and tight: purpose first, then return fields, redaction, pagination semantics, and the read-only signal in four compact sentences. The pagination sentence is the only one that earns negative value because its parameter names are wrong.

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 enumerates the returned fields, which is exactly the kind of compensation needed. It covers redaction and statelessness, but omits the active_only filter and misnames the pagination parameters, leaving a small but real gap.

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 coverage is only 67% (page is undocumented), so the description should compensate, but instead it names parameters that do not exist: 'pass page/per_page (or limit/offset)' while the schema defines page/size. This is actively misleading and the active_only filter is never mentioned, so the description would steer an agent toward invalid arguments.

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 gives a specific verb+resource ('List the sub-accounts under this Vobiz main account') and enumerates the returned fields (name, Auth ID, status, KYC mode, rate limit, permissions), which cleanly separates it from get_sub_account and create/update/delete_sub_account. An agent can identify the 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 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 scope but never stated: there is no explicit guidance on when to prefer this over get_sub_account (single record) or why to call it rather than another listing tool. No exclusions or prerequisites are given, so it lands at the 'implied usage' level rather than explicit routing.

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

list_transactionsList account transactionsA
Read-only
Inspect

List this Vobiz account's billing ledger, newest first: call charges, number rentals, recharges and adjustments, with a summary of total debit/credit over the whole filtered set. Filters: from_date/to_date (inclusive; YYYY-MM-DD is a whole UTC day, or pass an ISO timestamp with offset), type (credit/debit or an exact type), status, currency, reference_type (see list_transaction_types), description/reference (substring) and transaction_id. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
typeNocredit, debit, or an exact transaction type.
statusNo
to_dateNo
currencyNo
per_pageNoMax 1000.
from_dateNo
referenceNoCase-insensitive substring of the reference.
descriptionNoCase-insensitive substring of the description.
reference_typeNoSpend source, e.g. cdr or did_rental.
transaction_idNoFetch one ledger entry by its ID.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint, so the trailing 'Read-only' is mild repetition, but the description adds genuinely valuable traits: newest-first ordering, inclusion of a debit/credit summary over the filtered set, and the stateless-pagination contract (nothing persisted between calls). This is meaningful behavior beyond the annotations, though it doesn't cover result size or rate limits.

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 dense sentences, front-loaded with what is returned before the filter list. Every clause carries information, though the filter enumeration reads as a run-on that could be tightened slightly.

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 11-param, no-output-schema read tool this is close to complete: the description surfaces the summary aggregate that the schema cannot express, explains the two pagination conventions, and documents date semantics. Missing only minor items such as default page size or the shape of the returned summary.

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 55% schema coverage, the description compensates well: it clarifies from_date/to_date inclusivity and the dual 'whole UTC day vs ISO timestamp with offset' semantics that the schema pattern alone does not convey, and it names every remaining filter (type, status, currency, reference_type, description/reference substring, transaction_id, page/per_page or limit/offset). Some filters like status and currency get no added meaning beyond their names.

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 ('List this Vobiz account's billing ledger') and enumerates the record types returned (call charges, number rentals, recharges, adjustments), which cleanly separates it from siblings like get_account_balance and list_call_records. The ordering ('newest first') and summary behavior are stated up front.

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 operating context: filters available, the requirement to send pagination on every call ('stateless... Nothing is saved between calls'), and routes reference_type lookups to the list_transaction_types sibling. It does not explicitly state when to prefer this over get_account_balance for a balance question, so it stops short of full alternative routing.

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

list_transaction_typesList transaction reference typesA
Read-only
Inspect

List the reference_type values present on this Vobiz account's ledger (for example cdr, did_rental, recording), for use as the list_transactions reference_type filter. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the trailing 'Read-only' merely restates that, earning no credit. The description does add useful context about what the values are and where they come from (this account's ledger), but no depth on return format or behavior 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.

Conciseness5/5

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

A single well-formed sentence with the resource and its downstream use front-loaded, plus parenthetical examples. No filler; the redundant 'Read-only' is the only near-waste but it is one word.

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 so by naming the values returned and giving examples. A slightly fuller enumeration of possible reference_type values would make it complete, but an agent has enough to call 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?

The tool takes zero parameters, so per the rubric the baseline is 4. The description appropriately spends no space on parameter semantics and instead explains the returned values.

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

Purpose5/5

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

States a specific verb (List) and resource (reference_type values on the account ledger) with concrete examples (cdr, did_rental, recording). It also implicitly distinguishes itself from the sibling list_transactions by explaining that its output feeds that tool's filter.

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

Usage Guidelines4/5

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

Explicitly frames the tool's purpose: 'for use as the list_transactions reference_type filter,' which tells the agent when to reach for it. It lacks an explicit when-not-to-use statement or a named alternative, but for a simple enumeration tool the context is clear.

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

list_trunk_credentialsList trunk credentialsA
Read-only
Inspect

List the SIP digest credentials on this Vobiz account that trunks use to authenticate a PBX, carrier or voice agent: username, realm and enabled state. Use the credential id as credential_uuid on a trunk. Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only. Passwords are never shown here. The user can view or reset them in the Vobiz console.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax 100. Defaults to the server's VOBIZ_DEFAULT_PAGE_SIZE (20).
offsetNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool read-only and open-world, but the description adds meaningful behavioral context beyond them: passwords are never shown, stateless pagination requires passing page/per_page or limit/offset on every call, nothing is saved between calls, and password resets happen in the Vobiz console.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and then adds usage, pagination, privacy and management details in compact sentences. Every sentence serves a purpose and there is no redundant or filler text.

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

Completeness5/5

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

For a simple read-only list tool with no output schema and two optional parameters, the description covers what is returned, how to use the credential id, how pagination works, and what is intentionally hidden. It gives the agent enough to call and interpret the tool correctly.

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

Parameters4/5

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

With only 50% schema description coverage, the description meaningfully compensates by explaining stateless pagination, requiring pagination parameters on every call, and mentioning the page/per_page alternative alongside limit/offset. It does not define offset semantics in detail, but it adds substantial usage meaning beyond the schema.

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

Purpose5/5

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

The description gives a specific verb and resource: list SIP digest credentials for this account, along with the returned fields username, realm and enabled state. It clearly distinguishes this tool from list_sip_trunks and create/update/delete_trunk_credential by focusing on the credential records themselves.

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

Usage Guidelines4/5

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

The description gives clear context by explaining that the credential id is used as credential_uuid on a trunk, and it covers pagination behavior. It does not explicitly state when-not to use the tool or name alternative sibling tools, so it falls short of full when/when-not guidance.

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

list_vobiz_skillsList Vobiz skillsA
Read-only
Inspect

List the Vobiz Agent Skills bundled with this server: expert playbooks for each Vobiz product (voice calls, VobizXML, SIP trunking, phone numbers, CDRs, audio streams, AI voice agents, SMS/MMS/RCS, WhatsApp, sub-accounts, Partner API, Plivo migration, solution scoping). Each one can be loaded with get_vobiz_skill when planning a multi-step task or writing integration code. Read-only, no API call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds the genuinely new fact that this listing makes 'no API call' and is purely local metadata, which tells the agent it is cheap and side-effect free.

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 action and ending with the constraint. The long parenthetical enumerating ten product areas consumes most of the length, but it is informative load-bearing content that tells the agent what is discoverable.

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 must sketch the return contents — and it does so by enumerating the product coverage of the bundled skills, plus the follow-up path via get_vobiz_skill. Adding an identifier/key detail for what each list entry contains would make it fully self-sufficient.

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 per the baseline there is nothing for the description to disambiguate. The schema is empty and fully covered; no parameter gaps exist.

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 ('List the Vobiz Agent Skills bundled with this server') and immediately characterizes what those skills are ('expert playbooks for each Vobiz product'), which cleanly separates it from the sibling get_vobiz_skill.

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?

Names the companion tool and the situation that selects it ('Each one can be loaded with get_vobiz_skill when planning a multi-step task or writing integration code'), giving a clear trigger for the follow-up call. It stops short of an explicit when-not-to-call or a statement that this listing should precede skill loading.

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

list_webhook_eventsList received Vobiz callbacksA
Read-only
Inspect

List callbacks Vobiz delivered to this server's /webhooks/vobiz endpoint and hosted flows (call answered/hung up, Gather digits, recording events), newest first. Duplicates are collapsed and unsigned/invalid requests are rejected per VOBIZ_WEBHOOK_SIGNATURE. HTTP mode only. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoe.g. StartApp, Hangup, Redirect
limitNo
call_uuidNo

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses meaningful behavior: duplicates are collapsed, unsigned/invalid requests are rejected per VOBIZ_WEBHOOK_SIGNATURE, results are newest-first, and the tool only applies in HTTP mode. Pagination behavior (given a limit param) is not covered, keeping it short of a 5.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action and scope, followed by behavioral traits and constraints. Efficient, though the parenthetical event list and mode/read-only notes could be tightened slightly.

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 list tool with no output schema, the description covers purpose, ordering, dedup, signature validation, and mode restriction well. The main gap is parameter guidance, but the structured schema partially covers the event filter.

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 33% – just 'event' is annotated, while limit and call_uuid are undocumented in the schema. The description lists event types parenthetically but never explains filtering by event, the limit bound, or call_uuid scoping, 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.

Purpose5/5

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

States a specific verb (List) with the exact resource and scope: callbacks Vobiz delivered to the /webhooks/vobiz endpoint and hosted flows, with concrete event types enumerated. An agent can distinguish this received-callback log from config-oriented siblings like list_webhooks 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 Guidelines3/5

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

The 'HTTP mode only' clause is a real usage constraint, and the enumerated event types imply the intended inspection use case. However, it never explicitly states when to reach for this versus alternatives such as list_webhooks or list_call_records, so routing 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.

list_webhooksList configured webhooksA
Read-only
Inspect

Vobiz webhooks are configured on Applications (answer/hangup/fallback/message URLs, used for inbound calls on linked numbers) and on SIP trunks (webhook_url: CallInitiated and Hangup events, optional recording.completed). This lists all of them. Per-call URLs are set in make_call. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the closing "Read-only" merely restates the structured hint rather than adding value. The description does add useful scope transparency by enumerating which webhook categories exist (application URLs, SIP trunk webhook_url events). It does not describe pagination or return behavior, so a 3 is appropriate given annotations already carry the safety profile.

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

Conciseness4/5

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

Four compact sentences, each contributing context about where webhooks live and what this call returns. The only waste is "Read-only," which duplicates the readOnlyHint annotation, and the core action is not front-loaded.

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

Completeness4/5

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

For a parameterless list tool with no output schema, the description supplies enough context: what webhooks are, where they are configured, and that all are returned. Nothing essential for calling it correctly is missing, though return format is unspecified (acceptable since no output schema exists).

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 nothing for the description to disambiguate; the baseline for a parameterless tool is 4. No semantic gap exists on the input side.

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 clear verb ("lists") and resource (webhooks), and it distinguishes scope by explaining webhooks live on Applications and SIP trunks while per-call URLs are set elsewhere (make_call). An agent can identify what is being enumerated, though the actual action ("This lists all of them") is buried in the middle of the passage rather than front-loaded.

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 mention that "Per-call URLs are set in make_call" implicitly routes the agent away from expecting per-call URLs here, and naming make_call gives an alternative reference point. However, there is no explicit when-to-use or when-not-to-use statement; usage is only implied.

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

make_callPlace an outbound callA
Destructive
Inspect

Initiate ONE outbound call through Vobiz (POST /Account/{auth_id}/Call/). Required: to (destination, E.164), from (caller ID: must be an active number on this account), and confirm: true after the user has explicitly approved this exact call. answer_url is required unless the server has VOBIZ_DEFAULT_ANSWER_URL configured; Vobiz fetches call-control XML from it when the call is answered. Success means Vobiz ACCEPTED/QUEUED the request and returned a request_uuid; it does NOT mean the call connected. Follow up with get_call_status using the returned request_uuid as call_uuid. Never call this twice for the same intent: if the outcome is unknown, check list_live_calls / list_call_records instead. Pass a unique idempotency_key per intended call: repeating a key replays the first result instead of dialling again. Server policy (enforced, not negotiable by the model): allowed destination countries, blocked prefixes, max duration, per-minute/hour caps, max concurrent calls, minimum balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDestination number in E.164, e.g. +919876543210. One number only.
fromYesCaller ID: a Vobiz number on this account, E.164.
confirmYesMust be true, set only after the user explicitly confirmed this call (destination and caller ID).
answer_urlNoURL that returns Vobiz XML when the call is answered. Defaults to the server's VOBIZ_DEFAULT_ANSWER_URL.
hangup_urlNoURL notified when the call hangs up (defaults to answer_url).
time_limitNoMaximum call duration in seconds. Defaults to, and may not exceed, the server's VOBIZ_MAX_CALL_DURATION_SEC.
caller_nameNoCaller name shown where supported (max 50 chars).
ring_timeoutNoSeconds to ring before giving up (default 120).
answer_methodNoHTTP method for answer_url (default POST).
idempotency_keyNoUnique key for this intended operation (e.g. a UUID). Repeating it replays the first result instead of acting again.

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by defining success semantics ("ACCEPTED/QUEUED ... does NOT mean the call connected"), disclosing the real-world side effect of dialling a live number, the idempotency-key replay behavior, the answer_url dependency, and the enforced server policy (country/prefix caps, concurrency, balance). The replay note does not contradict idempotentHint=false: the tool still dials per key, which the description makes clear.

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 action, endpoint, and required parameters, and nearly every sentence carries actionable information. The final policy sentence is a dense enumeration that could be tightened, keeping it just short of a 5.

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, money-spending, open-world mutation with ten parameters and no output schema, the description supplies everything an agent needs: preconditions, success interpretation, follow-up, retry/idempotency rules, and policy constraints. Nothing material is left for the agent to infer.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds genuine meaning on top by stating that `from` must be an active number on the account, that `answer_url` is only conditionally required (server default fallback), and that confirm is a user-approval gate rather than a plain flag. It doesn't add much for the remaining optional parameters like hangup_url, ring_timeout, or answer_method, which is why this lands at 4 rather than 5.

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 ("Initiate ONE outbound call through Vobiz (POST /Account/{auth_id}/Call/)") and emphasizes the single-call scope. It is unmistakably distinct from siblings like list_live_calls, get_call_status, and end_call, which an agent can rule out without reading any schema.

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

Usage Guidelines5/5

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

Explicitly covers when to use it (after the user has approved this exact call), when not to ("Never call this twice for the same intent"), and the alternatives for the unknown-outcome case (list_live_calls / list_call_records). It also names the correct follow-up tool, get_call_status, with the exact argument to pass.

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

mute_conference_memberMute a conference memberA
DestructiveIdempotent
Inspect

Mute one or more members of a live Vobiz conference (POST /Conference/{name}/Member/{id}/Mute/) so others cannot hear them; they still hear the room. Pass one member_id, a comma-separated list, or all (for example presenter mode). Undo with unmute_conference_member.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real meaning beyond them: the asymmetry 'they still hear the room' separates mute from deafen, and the POST path plus scope ('one or more members') clarifies blast radius. It does not mention permission requirements or partial-failure behavior for comma-separated lists.

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 dense sentence: behavior and scope first, then input forms, then the undo route. No filler, nothing repeated across sentences, and the most decision-relevant clause is front-loaded.

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

Completeness4/5

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

For a two-parameter, no-output-schema mutation tool, the description supplies scope, semantics, destination endpoint and the inverse operation, which is nearly everything an agent needs. It omits auth/permission prerequisites and error behavior, so it is strong but not exhaustive.

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 member_id as a single ID, a comma-separated list, or `all`, so the description largely restates it. The only added gloss is the 'presenter mode' rationale for `all`, which is marginal. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

Specific verb + resource ('Mute one or more members of a live Vobiz conference') plus the concrete REST path, and it explicitly contrasts mute with the sibling unmute. An agent can distinguish it from deafen_conference_member, kick_conference_member and the other member-level tools.

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

Usage Guidelines4/5

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

Names the companion operation ('Undo with unmute_conference_member') and gives a concrete usage scenario ('presenter mode'), which tells the agent when mass-muting is appropriate. It stops short of stating when NOT to use it (e.g. mute vs deafen for a noisy line), so it is context-rich but not fully routing.

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

play_audioPlay audio on a live callA
Destructive
Inspect

Play one or more audio files (https .mp3/.wav) into a LIVE call (POST /Call/{uuid}/Play/). mix: true (default) plays over the conversation; false replaces it. Stop with stop_audio.

ParametersJSON Schema
NameRequiredDescriptionDefault
mixNoMix with the call audio (default true).
legsNoWhich call leg: aleg (default), bleg or both.
loopNoRepeat until stopped.
urlsYesAudio files to play in order.
lengthNoStop after this many seconds.
call_uuidYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description supplements this by explaining that `mix: false` replaces the conversation audio, which gives the destructive hint concrete meaning, and by constraining inputs to https .mp3/.wav. However, it omits consequences like the max-5-files limit and what happens to audio already playing.

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

Conciseness5/5

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

A single front-loaded sentence covers purpose, file constraints, the endpoint, and the key parameter default, followed by one short clause naming the stop tool. No sentence is wasted.

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 6-param, no-output-schema action tool with safety annotations already present, the description supplies the essential call behavior (live call, mix semantics, stop tool). Minor gaps remain around loop/length behavior and the 5-file cap, 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.

Parameters4/5

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

Schema coverage is already 83%, so the baseline is 3, but the description adds real value: it clarifies mix's semantics (overlay vs. replace) beyond the schema's terse 'Mix with the call audio', and adds the https/.mp3/.wav format constraint and ordering behavior not stated in the `urls` schema entry. legs, loop, and length are left 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?

States a specific verb (play) and resource (audio files) with scope ('into a LIVE call'), which clearly separates it from speak_text and play_audio_to_conference_member. It also cites the underlying endpoint (POST /Call/{uuid}/Play/), removing ambiguity. It stops short of explicitly naming the sibling tools it is not.

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 operating context ('LIVE call') and routes the agent to the terminating tool by naming stop_audio, which is the natural follow-up. It does not state when this tool is preferred over speak_text or play_audio_to_conference_member, so no explicit exclusion guidance is present.

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

play_audio_to_conference_memberPlay audio to a conference memberA
Destructive
Inspect

Play an audio file (https .mp3/.wav) privately to members of a live Vobiz conference (POST /Conference/{name}/Member/{id}/Play/); other members do not hear it. Use it for whispered prompts or announcements, or pass member_id all to reach the whole room. Stop with stop_audio_to_conference_member.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAudio file to play (https .mp3 or .wav).
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true; the description adds genuinely new behavioral context — that playback is private to the targeted member(s) and that playback persists until explicitly stopped. It stops short of describing what happens if the member leaves mid-playback or whether playback replaces existing audio.

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: the privacy guarantee is front-loaded, followed by use cases and the stop pointer. Nothing is redundant or buried.

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 mutating action with no output schema and full schema coverage, the description covers privacy semantics, use cases, and the stop counterpart. Minor gaps remain around failure behavior (invalid or departed member ID) and whether the play call is synchronous.

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 all three parameters (url format, member_id pattern/list, conference_name) are already fully documented in structured fields. The description only reinforces the 'all' broadcast meaning, adding little beyond what the schema states.

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 plus resource ('Play an audio file ... privately to members of a live Vobiz conference'), including the underlying endpoint and the key distinguishing property that other members do not hear it. This cleanly separates it from the sibling play_audio (call-level) and from the stop 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?

Gives concrete usage contexts ('whispered prompts or announcements') and explains the member_id=all broadcast case, plus points at stop_audio_to_conference_member for termination. It lacks an explicit contrast with plain play_audio/play_audio, so the agent must infer when the call-level tool is preferable.

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

preview_message_costPreview message costA
Read-only
Inspect

Price one message before sending: segment count, unit cost, total cost and currency for a sender, recipient and text (GET /api/v1/sms/messages/cost-preview). Sends nothing. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient, E.164.
fromYesYour Vobiz messaging number, E.164.
textNoMessage body; its length decides the segment count.
channelNosms (default) or mms.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' and 'Sends nothing' are somewhat redundant, but the explicit no-side-effect guarantee for a messaging-adjacent tool is worth reinforcing. More valuable is the disclosure of return content (segment count, unit cost, total, currency), which no output schema provides.

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 dense sentence with the outcome stated first, the inputs second and the safety caveat last. Every clause carries information; nothing to trim.

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?

Because there is no output schema, describing the returned fields is exactly what the description needed to do, and it does so. It leaves the channel (sms vs mms) dimension unaddressed, which matters since pricing differs by channel, but the schema covers it.

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 E.164 formats, the 1600-char limit and the sms/mms enum. The description only restates sender/recipient/text and omits the channel parameter entirely, so it adds little beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ('Price one message') followed by an exact enumeration of what it returns (segment count, unit cost, total cost, currency). The endpoint path and the 'Sends nothing' clause make it unambiguously distinct from the sibling send_message.

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?

'before sending' gives a clear temporal context that implicitly routes the agent here ahead of send_message, and the inputs are scoped to sender/recipient/text. There is no explicit naming of the alternative tool or of when-not to use it (e.g. for bulk or broadcast costing), so it stops short of a 5.

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

release_phone_numberRelease a phone numberA
Destructive
Inspect

Release a phone number from this Vobiz account (DELETE /numbers/{e164}). This charges the account's number-release fee (returned as release_fee) and the number stops serving calls. By default it enters pending_release for a 24-hour cooldown, during which cancel_number_release restores it and refunds the fee; after that window the number leaves the account and may not be recoverable. immediate: true skips the cooldown and cannot be cancelled. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: releasing this number and paying the release fee.
immediateNoSkip the 24-hour cancellable cooldown. The release then cannot be cancelled.
phone_numberYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true / idempotentHint=false annotations: it discloses that a release_fee is charged, that the number stops serving calls immediately, that the default state is a recoverable 24-hour cooldown with a refund path, and that after the window the number may not be recoverable. The irreversibility of immediate:true and the env-var gate are exactly the side effects an agent must know before invoking 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?

Four tightly packed sentences with the resource and endpoint front-loaded, followed by cost, state transition, reversal window, and gating. Every clause carries decision-relevant information; nothing is filler.

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

Completeness5/5

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

For a destructive, non-idempotent, no-output-schema tool, the description covers cost, state transitions, reversibility window, the cancel alternative, and the two preconditions. It even names the release_fee field returned, so nothing an agent needs in order to call this safely is missing.

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

Parameters4/5

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

Schema coverage is 67% — confirm and immediate are documented in the schema, but phone_number is only constrained by a pattern. The description compensates by explaining the semantic distinction between the two modes (default cooldown vs. non-cancellable immediate) and why confirm is required. It does not add format/syntax detail for phone_number beyond the pattern, so it falls short of a 5.

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 precise verb and resource ('Release a phone number from this Vobiz account') plus the underlying endpoint DELETE /numbers/{e164}. This clearly separates it from siblings like cancel_number_release, buy_phone_number, and update_phone_number without needing to open any schema.

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

Usage Guidelines5/5

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

Explicitly describes the default path (pending_release with a 24-hour cooldown) and names the alternative that reverses it ('cancel_number_release restores it and refunds the fee'), plus the condition that selects the other mode ('immediate: true skips the cooldown and cannot be cancelled'). It also states the two gates (VOBIZ_ENABLE_PROVISIONING and confirm: true) so an agent knows the call will fail without them.

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

remove_opt_outRemove an opt-outA
DestructiveIdempotent
Inspect

Allow messages to a number again. Only do this when the person has explicitly opted back in (for example by texting START); messaging someone who opted out breaks consent rules. Requires confirm: true and VOBIZ_ENABLE_MESSAGING=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNosms (default; also covers mms), mms or rcs.
confirmYesMust be true after the user confirmed this person opted back in.
phone_numberYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the safety profile is partly covered. The description adds consequential context beyond them: the consent violation risk, the required confirm flag, and the environment-flag precondition that can make the call fail. It does not describe the response, but no output schema exists and the preconditions are the higher-value disclosure.

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

Conciseness5/5

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

Three front-loaded sentences: effect, condition, then mechanical prerequisites. Every sentence carries distinct information and no sentence is 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 destructive, idempotent messaging-consent mutation with no output schema, the description supplies the consent rationale, the when-to-use condition, and both execution preconditions. An agent has everything needed to decide and to call it correctly.

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

Parameters3/5

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

Schema coverage is 67%; confirm is fully documented in the schema and the description only echoes it, while phone_number has a pattern but no description in either place. The description clarifies the confirm semantics at a workflow level (user confirmed opt-in) but adds no format or routing detail for phone_number or channel, so it sits at the baseline for a mid-coverage schema.

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

Purpose5/5

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

The description states a specific action and its effect in one line: 'Allow messages to a number again.' The word 'again' makes clear this reverses a prior opt-out, distinguishing it from add_opt_out, check_opt_out and list_opt_outs without the agent needing to open any schema.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use guidance: only after the person has explicitly opted back in (e.g. texting START), with the consequence spelled out ('messaging someone who opted out breaks consent rules'). It also names the preconditions (confirm: true, VOBIZ_ENABLE_MESSAGING=true), leaving nothing to inference.

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

search_available_numbersSearch numbers to buyA
Read-only
Inspect

Search Vobiz inventory for numbers available to buy, with setup/monthly fees. Filters: country (e.g. IN), region, contains (digits), series (Indian number series after +91). Pagination is stateless: pass page/per_page (or limit/offset) on every call. Nothing is saved between calls. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
regionNo
seriesNoIndia only: digits right after +91, e.g. 80.
countryNo
containsNoDigits the number must contain (vanity/pattern search).
per_pageNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely new behavioral context: pagination is stateless and must be re-passed on every call, with nothing persisted between calls. This is exactly the kind of operational detail annotations cannot convey. 'Read-only' merely restates the annotation, but the pagination disclosure carries the score.

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-loads purpose, then filters, then pagination semantics in four tight sentences with no filler. The trailing 'Read-only' is mildly redundant against the annotation, but overall sizing is appropriate for a 6-param search 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 read-only search tool with no output schema, the description covers inventory scope, the fee content, all meaningful filters and pagination behavior. It does not explain result ordering or result-set size limits, which is a small remaining gap.

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 33%, so the description must compensate, and it does: it enumerates country (with example IN), region, contains (digits) and series (Indian series after +91), and explains the pagination params. It even surfaces a limit/offset alternative not present in the schema. Minor gap: page/per_page bounds are left to the schema.

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

Purpose5/5

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

States a specific verb (Search) and resource (Vobiz inventory of numbers available to buy) and even notes the fee information returned. It is clearly distinguishable from sibling buy_phone_number (purchase) and list_phone_numbers (owned numbers) 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 Guidelines3/5

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

The phrase 'available to buy' implies this is the discovery step preceding buy_phone_number, so usage is implied, but no explicit when/when-not guidance or named alternative is given. The agent must infer the search-then-purchase flow rather than being routed to it.

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

send_dtmfSend DTMF digitsA
Destructive
Inspect

Send keypad tones on a LIVE call (POST /Account/{auth_id}/Call/{call_uuid}/DTMF/). Digits 0-9, *, #; w = 0.5s pause, W = 1s pause. Use only when the user asked to press keys on an active call (e.g. navigating an IVR).

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoWhich call leg hears the tones (default aleg).
digitsYesDigits to send, e.g. 1w2#
call_uuidYesUUID of the live call.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the mutation profile (destructiveHint=true, non-idempotent, openWorld). The description adds value beyond them by requiring a LIVE call, which is the key precondition an agent must verify before invoking. It does not mention auth requirements, failure modes, or rate limits, so it is solid but not exhaustive.

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 compact sentences, front-loaded with verb+resource+endpoint, followed by digit syntax and the usage condition. No filler.

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

Completeness4/5

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

No output schema exists, and the description sensibly does not invent return details for what is a fire-and-command operation. The live-call precondition and digit/pause syntax are the critical context and are present; a note on failure behavior on a non-live call would complete it.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema lacks: the meaning of `w` (0.5s pause) and `W` (1s pause), which the pattern alone does not convey. The `legs` parameter is left entirely to the schema, which covers it adequately.

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 (send), resource (keypad tones / DTMF digits), the endpoint, and the LIVE-call scope. An agent can distinguish it from related call tools. It stops short of naming its closest sibling (gather_dtmf, which collects rather than sends digits), so differentiation requires inference.

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?

"Use only when the user asked to press keys on an active call (e.g. navigating an IVR)" gives a clear triggering condition and a concrete example. It does not state the when-not case (e.g. use gather_dtmf to collect input instead), leaving the boundary with the sibling unstated.

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

send_messageSend an SMS, MMS or RCS messageA
DestructiveIdempotent
Inspect

Send a real SMS, MMS or RCS message through Vobiz (POST /api/v1/sms/messages). Each recipient becomes its own message and is billed. Required: from, to, idempotency_key, and confirm: true after the user approved the exact sender, recipients and text. For sms/mms, from is one of your Vobiz messaging numbers (see list_messaging_numbers); for rcs it is your RCS sender name. Use preview_message_cost first to show the price and segment count. Opted-out recipients are refused by Vobiz (opted_out). status scheduled = held until scheduled_at; sent = handed to the network; delivery receipts update it to delivered or failed (check get_message). Repeating an idempotency_key never sends twice.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient numbers in E.164, e.g. ['+14155550123']. Capped by VOBIZ_MAX_RECIPIENTS_PER_SEND.
tagNoYour label, stored on every message; filter list_messages by it.
fromYesSender: an E.164 Vobiz messaging number (sms/mms), or your RCS sender name (rcs).
textNoMessage body. Required for sms and rcs. Long SMS are split into billed segments.
titleNoMMS subject line.
channelNosms (default), mms or rcs.
confirmYesMust be true, set only after the user explicitly approved this send.
media_urlsNoPublic https media URLs (MMS up to 10; RCS sends the first).
scheduled_atNoSend later at this RFC 3339 time, e.g. 2026-11-01T09:00:00Z.
dlt_entity_idNoIndia TRAI DLT Principal Entity ID.
dlt_header_idNoIndia TRAI DLT sender header ID.
dlt_template_idNoIndia TRAI DLT content template ID; text must match it.
failover_to_smsNoRCS only: send the text as SMS if RCS cannot be delivered.
idempotency_keyYesUnique key for this intended operation (e.g. a UUID). Repeating it replays the first result instead of acting again.

TDQS

A4.8/5.0
Behavior5/5

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

Far exceeds what the annotations convey. It discloses real-world side effects (each recipient becomes its own message and is billed), the approval/auth gate, opt-out refusal behavior ('refused by Vobiz (opted_out)'), the status lifecycle (scheduled/sent/delivered/failed) and where to observe it, and how idempotency replay behaves. The destructiveHint and idempotentHint annotations are consistent with, and enriched by, this text.

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 endpoint and the four required fields, then behavioral notes — good ordering. It is dense and semicolon-heavy in a single paragraph, which slightly hurts scannability, but essentially every clause carries operational information.

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

Completeness5/5

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

For a 14-parameter mutation tool with no output schema, the description covers requirements, costs, opt-out handling, scheduling semantics, delivery-receipt follow-up, and idempotency — everything an agent needs to invoke it correctly and safely.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: `to` is per-recipient and billed individually, `from` varies by channel, `confirm` is an approval gate rather than a plain boolean, and `idempotency_key` replay semantics are spelled out. Remaining parameters (dlt_*, media_urls, scheduled_at, tag, title) are left to the schema.

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

Purpose5/5

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

States a specific verb+resource ('Send a real SMS, MMS or RCS message through Vobiz') and even the underlying endpoint POST /api/v1/sms/messages. It is clearly distinguishable from siblings like list_messages, get_message, and preview_message_cost, which are named for the roles they play relative to it.

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

Usage Guidelines5/5

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

Explicitly names the prerequisite flow: 'Use preview_message_cost first to show the price and segment count' and requires 'confirm: true' only after the user approved the exact sender, recipients and text. It also gives the channel-conditioned rule for choosing `from` and the alternative path for checking delivery (get_message).

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

speak_textSpeak text on a live callA
Destructive
Inspect

Read text aloud into a LIVE call with Vobiz text-to-speech (POST /Call/{uuid}/Speak/). voice WOMAN or MAN; language e.g. en-US, en-IN, hi-IN; type ssml for SSML markup. Stop with stop_speaking.

ParametersJSON Schema
NameRequiredDescriptionDefault
mixNo
legsNoWhich call leg: aleg (default), bleg or both.
loopNo
textYesText (or SSML when type is ssml), max 3000 characters.
typeNo
voiceNo
languageNoDefault en-US.
call_uuidYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive/not-idempotent/openWorld, and the description adds real context beyond them: that the target must be a live call, the TTS voice/language/SSML options, and the stop_speaking counterpart. It does not disclose queuing/serialization behavior or what happens to in-progress speech, so a 4 rather than a 5.

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

Conciseness4/5

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

Front-loaded with the core action and endpoint, then compact parameter hints, then the stop routing. The trailing semicolon-delimited clause list is dense but every element is actionable; minor clutter from repeating enum values already in the schema.

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, no-output-schema mutation tool, the description covers the primary flow and stopping but omits semantics for mix/loop/legs, any note on non-idempotent behavior or playback queuing, and error conditions such as a non-live call.

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

Parameters3/5

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

Schema coverage is only 38%, and the description only echoes enum-level detail (voice WOMAN/MAN, language examples, type=ssml) while leaving mix, loop, and much of the behavior of legs unexplained. It adds moderate usage framing for SSML but does not compensate for the undocumented parameters.

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

Purpose5/5

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

Specific verb+resource+scope: 'Read text aloud into a LIVE call with Vobiz text-to-speech', plus the underlying endpoint POST /Call/{uuid}/Speak/. This clearly separates it from sibling file-playback tools (play_audio) and from control tools like stop_speaking.

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?

States the live-call context and routes the agent to stop_speaking for terminating playback, which is the main alternative an agent needs. It stops short of explicit when-not guidance (e.g., using play_audio for prerecorded files, or behavior on ended calls).

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

start_audio_streamStart an audio stream on a live callA
Destructive
Inspect

Fork the audio of a LIVE Vobiz call to your WebSocket server in near real time (POST /Call/{uuid}/Stream/), for example for live transcription or an AI voice agent. service_url must be wss:// on an approved host. bidirectional: true lets your server play audio back into the call and requires audio_track inbound (the default when bidirectional). content_type sets the inbound audio format (L16 8 kHz default, L16 16 kHz, or mu-law 8 kHz). Returns a stream_id for get_audio_stream / stop_audio_stream. This sends live call audio to an external server, so it requires confirm: true after the user approves the destination.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: sending this call's live audio to this WebSocket server.
call_uuidYes
audio_trackNoWhich audio to fork. Default both; must be inbound when bidirectional is true.
service_urlYeswss:// URL of your WebSocket server (approved host).
content_typeNoInbound audio format sent to your server. Default audio/x-l16;rate=8000.
bidirectionalNoAllow your server to send audio back into the call (playAudio). Default false.
extra_headersNoComma-separated header:value pairs (e.g. X-Session:abc123) passed with the stream. Use the wss:// URL path, not these headers, to authenticate the socket.
stream_timeoutNoStop the stream automatically after this many seconds. Default 86400.
status_callback_urlNohttps URL (approved host) that receives stream status events (StartStream, PlayedStream, StopStream...).
status_callback_methodNoDefault POST.

TDQS

A4.4/5.0
Behavior5/5

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

The annotations already flag the operation as destructive and open-world, but the description adds substantial context: audio is sent to an external server, service_url must be wss:// on an approved host, confirm gates the action, and bidirectional requires audio_track inbound. It also discloses the return value and content_type formats, giving the agent actionable behavioral detail.

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 dense paragraph front-loads the purpose and covers necessary constraints without obvious filler. It could be more scannable given ten parameters and multiple safety caveats, but the length is largely justified.

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, open-world streaming tool with ten parameters and no output schema, the description covers purpose, use cases, safety prerequisites, parameter interactions, and the returned stream_id. No critical invocation context is missing.

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

Parameters3/5

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

Schema description coverage is 90%, so nearly all parameters are already documented. The description restates the key constraints (wss/approved host, bidirectional/audio_track dependency, content_type options, confirm approval) but adds little parameter meaning beyond the schema; its main extra detail, the stream_id return, is output rather than parameter semantics.

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

Purpose5/5

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

States a specific verb (fork), resource (live Vobiz call audio), destination (WebSocket server), and timing (near real time), with the exact endpoint. It also names example use cases and notes the returned stream_id for get_audio_stream / stop_audio_stream, distinguishing it from sibling stream-management tools.

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

Usage Guidelines4/5

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

Gives clear context with example scenarios (live transcription, AI voice agent) and a critical usage prerequisite: confirm: true after user approval. It does not explicitly say when not to use the tool or contrast it with alternatives like start_recording or play_audio, so it stops 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.

start_conference_recordingStart recording a conferenceA
Destructive
Inspect

Start recording the mixed audio of a live Vobiz conference room (POST /Conference/{name}/Record/) in mp3 (default) or wav. Recording may require consent from every participant in your jurisdiction, so confirm with the user first (consider announcing it). Vobiz queues the recording; the reply carries no recording ID or file URL. Stop with stop_conference_recording. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to record this conference.
file_formatNoRecording format (default mp3).
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the mutation/destructive/non-idempotent profile, so the bar is lower. The description adds real value beyond them: consent/legal implications, that the recording is queued, and critically that the reply carries no recording ID or file URL so the agent knows not to expect handleable output.

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-loaded with the action and resource, then consent caveat, then queue/return behavior, then the stop counterpart. Dense but every sentence carries distinct, useful information with no filler.

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

Completeness5/5

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

With no output schema, the description compensates by stating the reply carries no recording ID or file URL, which is exactly the return-value context an agent needs. Consent guidance and the stop pairing complete the picture.

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

Parameters3/5

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

Schema coverage is 100%, with all three parameters documented including enum values and the confirm semantics, so the schema does the heavy lifting. The description restates format options (mp3 default) and confirm: true without adding syntax or constraints beyond the schema, fitting the 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 ('Start recording') plus resource ('the mixed audio of a live Vobiz conference room'), and even names the exact endpoint. It is clearly distinguishable from the sibling start_recording, which records a call rather than a conference room.

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: confirm with the user first due to consent requirements, and requires confirm: true. It also routes the agent to stop_conference_recording. It does not explicitly contrast with the near-neighbor start_recording, but the conference scoping makes the usage obvious.

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

start_recordingStart recording a live callA
Destructive
Inspect

Start recording a LIVE call (POST /Call/{uuid}/Record/). Recording may require consent from the other party in your jurisdiction; confirm with the user first. Returns the recording_id/url Vobiz reports. Stop with stop_recording; find the file afterwards with get_call_recording. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly asked to record this call.
call_uuidYes
time_limitNoMax seconds to record (Vobiz max 28800; default 60).
file_formatNo
record_channel_typeNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=false, and openWorld=true, so safety profile is covered. The description adds genuinely non-structured context: the legal consent requirement, the mandatory confirm:true gate, and the return shape (recording_id/url). It does not describe what happens to any existing recording or rate limits, so it stops short of a 5.

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

Conciseness4/5

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

Three compact sentences, front-loaded with the action and the endpoint, then precondition, then lifecycle routing. Every sentence earns its place; the endpoint path is marginally redundant but harmless.

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

Completeness4/5

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

No output schema exists, and the description usefully states what is returned (recording_id/url). It covers consent, confirmation, and follow-up tools for a mutation tool whose annotations already carry the safety profile. The main residual gap is the undocumented file_format/record_channel_type parameters.

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 40%, so the description should compensate, but it only repeats the confirm:true requirement already documented in the schema and ignores file_format, record_channel_type, and call_uuid. It adds almost nothing about parameter meaning or format beyond structured data.

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 ('Start recording a LIVE call') and even gives the exact endpoint. The 'LIVE call' qualifier implicitly separates it from start_conference_recording, and the agent can identify the target resource 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?

Names the two lifecycle siblings explicitly ('Stop with stop_recording; find the file afterwards with get_call_recording') and states the consent/confirmation precondition. It does not explicitly say when NOT to use this versus start_conference_recording, but the 'LIVE call' framing plus the confirm gate gives clear selection context.

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

stop_audioStop audio on a live callA
DestructiveIdempotent
Inspect

Stop audio started by play_audio on a LIVE call (DELETE /Call/{uuid}/Play/).

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds the live-call constraint and the play_audio linkage, but says nothing about behavior when no audio is playing (no-op vs error) or the response shape. Adds some value above annotations, hence a 3.

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

Conciseness5/5

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

A single front-loaded sentence that carries the verb, the object, the precondition, and the endpoint with zero filler.

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

Completeness4/5

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

For a simple one-parameter stop action whose mutating/idempotent nature is already declared in annotations and which returns no output schema, the description is nearly complete. Only edge-case behavior (what happens if nothing is playing) is unstated, which is a minor omission.

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 0% and the description provides no parameter detail, but there is only one parameter (call_uuid) whose meaning and format are self-evident from its name, the required flag, and the pattern in the schema. Minimal gap, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (stop), the resource it acts on (audio started by play_audio), and the scope constraint (LIVE call), plus the underlying endpoint. This cleanly separates it from siblings like stop_speaking and stop_audio_to_conference_member, which an agent could otherwise confuse.

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?

"started by play_audio on a LIVE call" implies the precondition for use and the pairing with play_audio, which is strong context. It stops short of naming an explicit alternative (e.g. use stop_speaking for TTS playback), so it is clear context without full routing guidance.

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

stop_audio_streamStop an audio streamA
DestructiveIdempotent
Inspect

Stop one audio stream on a LIVE Vobiz call (DELETE /Call/{uuid}/Stream/{stream_id}/). Other streams on the call keep running, and the call itself continues.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYes
stream_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true, openWorld=true, so the safety profile is covered. The description adds real value beyond them by clarifying the blast radius: only the targeted stream stops, other streams on the call keep running, and the call itself is unaffected. It does not cover error behavior (invalid/already-stopped stream_id) or auth requirements.

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

Conciseness5/5

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

A single sentence, front-loaded with the action and target, with the endpoint and the two scope caveats packed in without padding. Every clause earns its place.

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

Completeness4/5

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

For a two-param destructive operation with no output schema, the definition covers target, scope of effect, and the precondition that the call be live. Gaps remain around failure modes (nonexistent or already-terminated stream) and what the caller gets back, but nothing critical to 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?

Schema description coverage is 0%, so the description must carry parameter meaning. The URL template maps the two inputs to call_uuid and stream_id roles, which is modest added value, but it gives no format, source, or validity semantics (how to obtain a stream_id, that it must belong to that call, or the allowed character patterns already in the schema).

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

Purpose5/5

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

The description states a specific verb (Stop) and resource (one audio stream) with scope qualifiers: it acts on a single stream on a LIVE call, not the call or all streams. The REST endpoint (DELETE /Call/{uuid}/Stream/{stream_id}/) makes the target unambiguous and separates it from call-wide (end_call) and conference-scoped (stop_audio_to_conference_member) siblings.

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 context for when this applies: a live call with at least one running stream that you want to tear down selectively, while the call continues. It does not name an explicit alternative or state when-not to use it (e.g., to stop all streams or end the call), so routing is inferred rather than spelled out.

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

stop_audio_to_conference_memberStop audio to a conference memberA
DestructiveIdempotent
Inspect

Stop audio started by play_audio_to_conference_member for members of a live Vobiz conference (DELETE /Conference/{name}/Member/{id}/Play/). Pass one member_id, a comma-separated list, or all. It succeeds even when nothing is playing.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=true, and openWorldHint=true, and the description corroborates idempotency with the non-obvious note 'succeeds even when nothing is playing.' This adds useful behavioral context beyond the annotations, though it omits auth requirements and failure modes.

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 action and its counterparty, followed by the scoping rule and one behavioral caveat. The endpoint path is the only potentially redundant element and it is compact.

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

Completeness4/5

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

For a two-parameter mutation with no output schema and full annotation coverage, the description supplies the target, the counterparty, and the runtime behavior. It omits edge-case failure handling, which is minor given the annotations carry the safety profile.

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 parameters are already documented, including the 'all' and comma-separated forms. The description echoes the same member_id usage ('one member_id, a comma-separated list, or all') without adding format or constraint 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.

Purpose5/5

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

States a specific verb+resource ('Stop audio started by play_audio_to_conference_member') and scopes it to members of a live Vobiz conference. It explicitly ties itself to its counterpart sibling, making the direction of the operation unmistakable.

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?

Names the counterpart action (play_audio_to_conference_member) whose audio this undoes, giving clear context for when to call it. It does not state exclusions or explicitly contrast with other stopping tools like stop_audio or stop_speaking, so no full when/when-not routing.

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

stop_conference_recordingStop recording a conferenceA
DestructiveIdempotent
Inspect

Stop the recording of a live Vobiz conference room (DELETE /Conference/{name}/Record/). Use it when the part you needed is captured; the conference itself keeps running.

ParametersJSON Schema
NameRequiredDescriptionDefault
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so safety is largely covered. The description adds a genuinely useful non-obvious effect: the conference itself keeps running after the recording stops. It stops short of saying what happens to the captured file.

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

Conciseness5/5

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

Two sentences, zero filler, with the action and scope front-loaded and the side-effect note second. Nothing is redundant.

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

Completeness4/5

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

For a one-parameter tool with annotations and no output schema, the description covers what it does, when to use it, and the key side effect. The only minor gap is where the resulting recording ends up, which list_recordings/get_call_recording would cover.

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 parameter is fully documented with format constraints, so the schema does the heavy lifting. The description only shows the name slot in the URL path, adding no semantic detail beyond that.

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 (Stop) plus resource (conference recording) scoped to 'a live Vobiz conference room', with the underlying endpoint given. It is clearly distinguishable from siblings start_conference_recording and the call-level stop_recording.

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?

'Use it when the part you needed is captured' gives an explicit trigger condition. It does not name an alternative tool or a when-not condition, but the usage context is clear enough for an agent to act on.

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

stop_recordingStop recording a live callA
DestructiveIdempotent
Inspect

Stop recording on a LIVE call (DELETE /Call/{uuid}/Record/). Pass the recording url returned by start_recording to stop one recording; omit it to stop all recordings on the call.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoRecording file URL from start_recording.
call_uuidYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description still adds real behavioral context the annotations lack: the operation only applies to a LIVE call and the omit-url form fans out to all recordings on that call. It stops short of saying what happens to the audio once stopped.

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

Conciseness5/5

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

Two sentences, no filler. The action and its live-call constraint are front-loaded, followed immediately by the parameter branching rule.

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

Completeness4/5

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

For a 2-param mutation with no output schema and full annotation coverage, the description supplies the key precondition and parameter behavior an agent needs. Minor gap: no mention of error behavior when the call is not live or has no active recording.

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% (call_uuid is undocumented), but the description compensates for the url parameter by explaining its provenance (returned by start_recording) and its default behavior when omitted, which is more than the schema's terse field description provides.

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

Purpose5/5

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

States a specific verb (stop), resource (recording) and scope (on a LIVE call), plus the underlying endpoint DELETE /Call/{uuid}/Record/. This distinguishes it from siblings like stop_conference_recording and delete_recording without needing to open a 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 clear conditional guidance: pass the url returned by start_recording to stop one recording, omit it to stop all recordings on the call. It does not, however, explain when to prefer this over delete_recording (stopping a live capture vs. removing a stored file), leaving one sibling relationship to inference.

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

stop_speakingStop speech on a live callA
DestructiveIdempotent
Inspect

Stop text-to-speech started by speak_text on a LIVE call (DELETE /Call/{uuid}/Speak/).

ParametersJSON Schema
NameRequiredDescriptionDefault
call_uuidYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds the HTTP semantics (DELETE /Call/{uuid}/Speak/) and that it targets only speak_text-originated speech, but does not say what happens if no speech is playing or whether the operation is reversible.

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

Conciseness5/5

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

A single sentence with the action, source of the speech, scope, and endpoint packed in, with the core verb leading. No filler or redundant restatement of the 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?

With no output schema and rich annotations, the description covers purpose, triggering resource, call-state constraint, and endpoint. The only real gap is behavior when no speech is active, which is minor for a single-parameter stop operation.

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 0% for the single call_uuid parameter, so the description must carry the load. The path template DELETE /Call/{uuid}/Speak/ conveys that the uuid identifies the target call, which is marginally useful, but no format, constraint, or distinction from other call-scoped uuids is offered.

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 (stop), specific resource (text-to-speech started by speak_text), and a scoping condition (on a LIVE call). It also names the sibling that creates the speech, so an agent can distinguish this from stop_audio, which stops audio files rather than TTS.

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?

States the trigger condition clearly: use it on a live call to stop speech that speak_text initiated. The 'LIVE call' qualifier implicitly excludes ended calls, but there is no explicit when-not guidance or direct pointer to the alternative (stop_audio) for stopping other audio.

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

transfer_callTransfer a live callA
Destructive
Inspect

Blind-transfer a LIVE call (POST /Call/{uuid}/): Vobiz stops the current flow on the chosen leg and fetches new call XML. Give either destination (a phone number in E.164 or a sip: URI; the server hosts a flow for it, HTTP mode only) or aleg_url/bleg_url (your own XML URL on an approved host). For an attended (warm) transfer, build the flow in VobizXML (for example hold music, then ). Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoWhich call leg: aleg (default), bleg or both.
confirmYesMust be true, set only after the user explicitly asked to transfer this call.
aleg_urlNoXML URL for the A leg (approved host only).
bleg_urlNoXML URL for the B leg (approved host only).
call_uuidYes
caller_idNoCaller ID for the transferred leg (a number on this account).
aleg_methodNo
bleg_methodNo
destinationNoNumber or SIP URI to connect the call to.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (destructive/openWorld/non-idempotent) by disclosing the actual side effect ('stops the current flow on the chosen leg and fetches new call XML'), the confirm gate, the HTTP-mode-only constraint for server-hosted Dial flows, and the approved-host requirement for custom XML URLs.

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 operation and scope, then proceeds through mechanism, parameter choices, and the warm-transfer note in four dense sentences. Every sentence carries information, though the parenthetical clauses make it slightly heavy to parse at a glance.

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?

Covers the mechanics, prerequisites (confirm, approved host, HTTP mode), and the alternative transfer style for a destructive, open-world mutation tool with no output schema. Minor gaps remain around post-transfer call state and failure/error behavior.

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 over the 67%-covered schema: `destination` accepts E.164 or sip: URI and triggers a server-hosted <Dial> flow, while `aleg_url`/`bleg_url` must be on an approved host. Still leaves `aleg_method`, `bleg_method`, `caller_id`, and `legs` behavior largely to the schema.

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

Purpose5/5

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

States a specific verb and resource (blind-transfer a LIVE call) and pins the mechanism (POST /Call/{uuid}/), immediately separating it from the warm/attended-transfer path. An agent can distinguish this from siblings like make_call, end_call, or hold_call without opening a 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 conditional guidance: use `destination` OR `aleg_url`/`bleg_url`, and requires `confirm: true`. It also explains how to handle the attended/warm case, though it doesn't name sibling tools or state when this tool should not be chosen over them.

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

unassign_number_from_subaccountReturn a number from a sub-accountA
DestructiveIdempotent
Inspect

Move a number from a sub-account back to this Vobiz account's pool (DELETE /account/{id}/numbers/{e164}/assign-subaccount). A 15-day cool-off applies: a number with a call in the last 15 days is moved only after the cool-off ends. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: returning this number to the parent account pool.
phone_numberYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds genuinely new behavioral context: the 15-day cool-off rule keyed on recent call activity, the provisioning feature flag gate, and the explicit confirm requirement. These are non-obvious operational traits an agent could not infer 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?

Two tightly packed sentences that are front-loaded with the core action, followed by the constraints (cool-off, gate, confirm). Every clause carries information an agent needs; nothing is padded.

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 mutation with no output schema, the description covers safety-relevant prerequisites, timing behavior, and gating. It stops short of describing the response or the state of the number after the cool-off triggers, but annotations carry the safety profile and no output schema exists to explain 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%: confirm is documented in the schema, phone_number only via a regex pattern. The description reinforces that confirm must be true and adds the cool-off context for phone_number, but it does not explain the E.164 format expectation beyond what the pattern already conveys, so it neither compensates fully nor adds much beyond baseline.

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

Purpose5/5

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

States a specific verb and resource ('Move a number from a sub-account back to this Vobiz account's pool') and even pins the HTTP endpoint, making the direction of the operation unambiguous. An agent can immediately distinguish it from the reverse-direction sibling assign_number_to_subaccount 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 concrete prerequisites for invoking it: the VOBIZ_ENABLE_PROVISIONING gate and confirm: true, plus the cool-off condition that governs when the move actually happens. It does not explicitly name the inverse tool or state exclusions, so it falls short of a full when/when-not routing statement.

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

undeafen_conference_memberUndeafen a conference memberA
DestructiveIdempotent
Inspect

Let deafened members of a live Vobiz conference hear the room again (DELETE /Conference/{name}/Member/{id}/Deaf/). Pass one member_id, a comma-separated list, or all. Undeafening a member who is not deafened still succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=true, so the safety profile is largely covered. The description adds concrete value beyond them by disclosing the REST endpoint and the observable behavior that 'undeafening a member who is not deafened still succeeds', which tells the agent it is safe to call blindly.

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: action and endpoint first, parameter usage second, edge-case behavior last. No filler, and the most important information is front-loaded.

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

Completeness4/5

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

For a state-mutating conference tool with full annotation coverage and no output schema, the description supplies action, endpoint, accepted ID forms, and the no-op edge case. Only a clear pointer to the sibling deafen/mute tools is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both member_id formats and conference_name sourcing already documented in the schema. The description's 'Pass one member_id, a comma-separated list, or all' restates the schema pattern rather than adding new semantics, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource+scope: 'Let deafened members of a live Vobiz conference hear the room again.' This is immediately distinguishable from its inverse sibling deafen_conference_member 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 Guidelines3/5

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

Usage context is implied by 'deafened members ... hear the room again', and it notes the idempotent edge case. However, it never explicitly routes the agent between this and siblings like deafen_conference_member, mute/unmute, or kick, so the when-vs-alternative decision 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.

unhold_callResume a held callA
DestructiveIdempotent
Inspect

Takes a leg off emulated hold by transferring it to resume_url (XML on an approved host, e.g. a hosted flow from generate_answer_xml). Vobiz cannot return to the exact point the call was at before hold. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoWhich call leg: aleg (default), bleg or both.
confirmYesMust be true, set only after the user explicitly asked to take this call off hold.
call_uuidYes
resume_urlYesXML URL that should control the call after hold (approved host).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true. The description adds meaningful context beyond them: the irreversibility caveat (cannot return to the exact prior point), the requirement that resume_url be XML on an approved host, and the mandatory confirm:true gate.

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 action and the key constraint (approved-host XML) before the caveat and the confirm gate. No filler.

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

Completeness4/5

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

Covers the essential operational facts for a destructive, open-world mutation with no output schema: what it does, the irreversibility warning, host constraints, and the confirm gate. Complete enough to invoke correctly, though call-state prerequisites could be clearer.

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 75%, so the schema already documents legs, confirm and resume_url. The description echoes the confirm requirement and enriches resume_url with the generate_answer_xml/hosted-flow example, but adds little for call_uuid. A 3 is appropriate where the schema does most of the work.

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 ('takes a leg off emulated hold') and explains the mechanism (transfer to resume_url). It clearly distinguishes itself from the sibling hold_call by describing the reverse operation, and names generate_answer_xml as the source of a valid resume_url.

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?

Implies when to use it (to un-hold a call held via hold_call) and gives a critical caveat that Vobiz cannot return to the exact pre-hold point. However, it never explicitly states when to choose this over alternatives or the prerequisites for a valid call state, leaving usage partly to inference.

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

unmute_conference_memberUnmute a conference memberA
DestructiveIdempotent
Inspect

Unmute members of a live Vobiz conference (DELETE /Conference/{name}/Member/{id}/Mute/) so the room can hear them again. Pass one member_id, a comma-separated list, or all. Unmuting a member who is not muted still succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYesConferenceMemberID from the ConferenceEnter callback (or get_conference), a comma-separated list such as 17,45,82, or `all` for every member.
conference_nameYesConference room name, exactly as used in the <Conference> XML element.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, and the description reinforces this concretely with 'Unmuting a member who is not muted still succeeds', which is useful confirmation of the no-op behavior. It adds the HTTP method and the bulk-selection scope, though it says nothing about auth requirements or side effects on the conference state.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and scope, with the idempotency caveat last. No filler and nothing repeated.

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 and annotations carrying the safety profile, the description covers the action, target selection, and the important no-op case. Only minor gaps remain (auth/permission expectations, whether unmute affects other members), which are not critical for calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, including the 'all' option and ID formats. The description's restatement of single/list/all adds no syntax or format 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 (unmute) and resource (conference member) and even names the underlying endpoint. It is trivially distinguishable from siblings like mute_conference_member, deafen_conference_member, and undeafen_conference_member.

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?

Explains the intended effect ('so the room can hear them again') and the accepted member_id forms (single, comma list, all). It does not explicitly contrast with mute/undeafen alternatives or state when not to use it, so it stops 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.

update_applicationUpdate voice applicationA
DestructiveIdempotent
Inspect

Change a Vobiz application's URLs or flags. Note: Vobiz resets default_endpoint_app to false when it is omitted, so this tool re-sends its current value. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYes
confirmYesMust be true, set only after the user explicitly approved: changing this application.
app_nameNo
answer_urlNoXML URL fetched when a call reaches a number linked to this application (approved host).
hangup_urlNo
answer_methodNo
hangup_methodNo
fallback_methodNo
default_number_appNo
fallback_answer_urlNo
default_endpoint_appNo

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the annotations (destructive/openWorld/idempotent), it discloses a non-obvious side effect: Vobiz resets default_endpoint_app to false when omitted, so the tool re-sends the current value. It also discloses the feature-flag gate and confirm requirement, which annotations do not carry. This is exactly the kind of hidden mutation behavior an agent needs.

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

Conciseness5/5

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

Two tight sentences: the purpose leads, and the high-risk quirk plus gating follow. Every clause carries distinct information with no filler.

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, 11-parameter mutation with no output schema and very thin schema descriptions, the definition covers the riskiest behavior (the default_endpoint_app reset) and the auth gate but omits meaning for most parameters and any notion of what the call returns. Adequate but with clear gaps.

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 coverage is only 18% across 11 parameters, so the description must compensate and largely does not. It explains the semantics of one parameter (default_endpoint_app) and gestures at 'URLs or flags', but answer_url, hangup_url, the *_method enums, fallback_answer_url, and the default_* booleans are left undocumented in both places.

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 ('Change') and resource ('a Vobiz application's URLs or flags'), which is far more informative than a restatement of the name. It is clearly distinguishable in kind from create_application/delete_application, though it never names those siblings to route the agent 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 states the two invocation preconditions (VOBIZ_ENABLE_PROVISIONING must be enabled and confirm: true is required), which is real usage guidance. However, it never says when to choose this over create_application or update_phone_number, so the when/when-not framing is only implied.

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

update_ip_acl_entryUpdate trunk IP ACL entryA
DestructiveIdempotent
Inspect

Replace a Vobiz IP ACL entry's label and address. Both name and ip_address are required on every update; resend the current value of the one you keep. Traffic from the old address stops being trusted. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel for the entry (resend the current one to keep it).
confirmYesMust be true, set only after the user explicitly approved: changing this IP ACL entry.
ip_acl_idYes
ip_addressYesIPv4 address or IPv4 CIDR block (resend the current one to keep it).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, but the description adds value beyond them: it explains the actual consequence ('Traffic from the old address stops being trusted') and the environment/confirmation gate. This tells the agent what is destroyed and what authorization is needed, which annotations alone do not.

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 replace semantics, then the required-field rule, the destructive consequence, and the gate. No filler and no repetition of the tool name.

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, gated mutation tool with no output schema, the description covers the action, the mandatory parameters, the side effect on old-address trust, and the confirmation/environment prerequisites. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 75%, with name, confirm and ip_address already documented in the schema (including the 'resend the current one to keep it' note the description echoes). The description adds no new syntax or format detail, and ip_acl_id remains undocumented in both places, so the schema carries most of the burden.

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

Purpose5/5

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

States a specific verb (Replace) and resource (Vobiz IP ACL entry) plus the exact fields affected (label and address). An agent can immediately separate this from add_ip_acl_entry, delete_ip_acl_entry, and list_ip_acl_entries without opening any 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 concrete invocation guidance: both name and ip_address are required on every call, and the caller must resend the current value of the field being kept. It also names the gating conditions (VOBIZ_ENABLE_PROVISIONING and confirm: true). It stops short of stating when to prefer this over a delete-plus-add alternative, so not a full 5.

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

update_origination_uriUpdate trunk origination URIA
DestructiveIdempotent
Inspect

Replace a Vobiz origination URI's label and priority, for example to promote a failover destination to primary. Both name and priority are required; resend the current value you keep. To point at a different host, create a new origination URI and delete this one; weight and enabled are managed in the Vobiz console. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel (resend the current one to keep it).
uri_idYes
confirmYesMust be true, set only after the user explicitly approved: changing this origination URI.
priorityYesRouting priority: lower is tried first (1 = primary, 2+ = failover).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds non-obvious behavior: the env-var gating, the mandatory confirm flag, the fact that only label/priority are mutable here, and that resending current values preserves them. It stops short of describing failure modes or the immediate routing effect of a priority change, so it lands just under full marks.

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 tight sentences with the core action front-loaded, followed by requirements, the alternative path, and the gate condition. Every sentence carries a distinct, actionable fact and none is redundant.

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 4-parameter mutation tool with no output schema, the description covers the action, prerequisites (env gate and confirm), parameter obligations, and scope limits. An agent has everything needed to invoke it correctly and safely.

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 description reinforces requiredness for both name and priority and the 'resend the current value you keep' convention. It adds meaning over the schema by noting that weight and enabled are not editable through this tool, though it doesn't elaborate on uri_id or priority bounds beyond what the schema states.

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 ('Replace a Vobiz origination URI's label and priority') plus a concrete motivating scenario (promoting a failover destination to primary). It is clearly distinguishable from create_origination_uri/delete_origination_uri, which it explicitly routes away from for host changes.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use case (promote failover to primary), an explicit when-not with the alternative named ('To point at a different host, create a new origination URI and delete this one'), and the operational precondition (VOBIZ_ENABLE_PROVISIONING plus confirm: true). Nothing 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.

update_phone_numberConfigure a phone numberA
DestructiveIdempotent
Inspect

Change one owned number's configuration: replace its tags, link it to an application (inbound calls run that app's answer_url) or to a SIP trunk, or unlink them. A number can be linked to an application OR a trunk, not both. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
confirmYesMust be true, set only after the user explicitly approved: changing this number's routing.
trunk_idNoTrunk to route this number to (sent as trunk_group_id).
phone_numberYes
unlink_trunkNo
application_idNo
unlink_applicationNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint. The description adds genuinely non-obvious behavior: the mutual exclusion between application and trunk linkage, the feature-flag gate VOBIZ_ENABLE_PROVISIONING, and the mandatory confirm gate. It does not describe what happens to existing tags on replace or the error shape.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the operation set and scope. Every clause carries information, though the mutual-exclusion rule and the gating/confirm note are somewhat compressed into the back half.

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

Completeness4/5

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

For a 7-param mutation tool with no output schema, the description covers scope, the main operation modes, the exclusivity constraint, and the two safety gates. An agent has enough to call it correctly; only failure/return semantics and the phone_number argument are inferred.

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 29% across 7 params, so the description must compensate, and it largely does, explaining tags replacement, application linking semantics (inbound calls run that app's answer_url), trunk linking, and the unlink variants. Only phone_number itself is left to the regex pattern 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?

States a specific verb (change configuration) and resource (one owned number), then enumerates the actual operations: replace tags, link to an application, link to a SIP trunk, or unlink. This clearly separates it from update_sip_trunk, update_application, and assign_number_to_subaccount.

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 conditions for use (linking/unlinking an owned number) and a hard constraint: a number can be linked to an application OR a trunk, not both. It also names the gating flag and confirm requirement. It stops short of explicitly routing the agent away from sibling tools like update_sip_trunk, 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.

update_sip_endpointUpdate SIP endpointA
DestructiveIdempotent
Inspect

Change a Vobiz SIP endpoint's alias, password, attached application or voice/message/video permissions. Only the fields you pass change; the username is permanent. A new password signs out every registered device until it re-registers. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasNo
confirmYesMust be true, set only after the user explicitly approved: changing this SIP endpoint.
passwordNoSECRET: the endpoint's new SIP password (8+ characters; 12+ with mixed case, digits and symbols recommended). It is sent to Vobiz once and never shown again.
allow_videoNo
allow_voiceNo
endpoint_idYes
allow_messageNo
application_idNoApplication that should handle this endpoint's calls (sent as `application`).

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint, idempotentHint, openWorldHint) by disclosing that username is permanent, that only passed fields mutate, and that a new password force-signs-out every registered device until re-registration. These are exactly the side effects an agent needs and cannot infer from structured fields.

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

Conciseness5/5

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

Three tightly-packed sentences, front-loaded with what changes, followed by the immutability constraint, the password side effect, and the gating requirement. No filler sentences.

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 mutation tool with no output schema, the description covers mutability scope, irreversibility of specific fields, side effects, and prerequisites. An agent has everything needed to invoke it safely.

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 38% schema description coverage, the description compensates by naming nearly all eight parameters (alias, password, application, allow_voice/message/video) and the confirm gate. It doesn't clarify syntax for endpoint_id or the boolean semantics, but meaning is largely added beyond the schema.

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

Purpose5/5

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

States a specific verb (Change) and resource (Vobiz SIP endpoint), then enumerates exactly which fields are mutable: alias, password, application, and voice/message/video permissions. This cleanly distinguishes it from create_sip_endpoint, delete_sip_endpoint, and get_sip_endpoint siblings.

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

Usage Guidelines4/5

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

Clearly communicates partial-update semantics ('only the fields you pass change') and names the two gating prerequisites (VOBIZ_ENABLE_PROVISIONING and confirm: true). It lacks an explicit statement of when to prefer this over, say, delete/recreate, but the conditions for calling it are clear.

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

update_sip_trunkUpdate SIP trunkA
DestructiveIdempotent
Inspect

Change a SIP trunk's settings (PUT /trunks/{id}), including limits, auth references, failover URIs, recording and webhook_url. Only the fields you pass change. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
secureNo
confirmYesMust be true, set only after the user explicitly approved: changing this SIP trunk.
trunk_idYes
cps_limitNo
recordingNo
transportNo
ipacl_uuidNo
descriptionNo
webhook_urlNoReceives CallInitiated and Hangup events (public https).
trunk_statusNo
webhook_methodNo
credential_uuidNo
trunk_directionNo
primary_uri_uuidNoOrigination URI used first (failover order: primary, then fallback).
fallback_uri_uuidNo
inbound_destinationNo
enable_transcriptionNo
concurrent_calls_limitNo
recording_webhook_enabledNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true. The description adds genuinely new context beyond them: the provisioning feature flag, the explicit confirm:true approval gate, and the PUT-style merge behavior where unspecified fields are preserved. It still omits permission/scope requirements and what happens on gate failure.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the operation and endpoint, followed by the update semantics and the gating conditions. No filler and nothing redundant.

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

Completeness3/5

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

The mutation semantics, approval gate and environment gate are covered, but with 20 parameters at 15% schema coverage and no output schema, the definition leaves a large fraction of the input surface undocumented and says nothing about the response shape or failure modes.

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 20 parameters and only 15% schema description coverage, the description carries most of the burden, and it only gestures at categories ('limits, auth references, failover URIs, recording and webhook_url'). Many parameters (transport, trunk_status, trunk_direction, secure, inbound_destination, transcription flags) are unexplained in both places.

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 (change/update) plus resource (SIP trunk) plus the underlying endpoint PUT /trunks/{id}. It is trivially distinguishable from siblings create_sip_trunk, delete_sip_trunk, get_sip_trunk and list_sip_trunks.

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: 'Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true', and clarifies the partial-update model ('Only the fields you pass change'). It does not explicitly name alternatives (e.g. use get_sip_trunk to read, create/delete for other lifecycles), so it stops short of full when/when-not routing.

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

update_sub_accountUpdate sub-accountA
DestructiveIdempotent
Inspect

Change a Vobiz sub-account's name, contact details, rate limit, permissions, enabled flag or kyc_mode. Only the fields you pass change. Moving to customer_use needs an email on the sub-account and can pause its calls until its KYC is verified. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable name for the sub-account.
emailNoContact email. Required for kyc_mode customer_use.
phoneNo
confirmYesMust be true, set only after the user explicitly approved: changing this sub-account.
enabledNoWhether the sub-account can be used (default true).
kyc_modeNopersonal_use (default) uses the parent's KYC; customer_use means the sub-account completes its own KYC before placing calls (needs email).
rate_limitNoAPI rate limit for the sub-account (Vobiz default 1000).
descriptionNo
permissionsNoAccess flags. Omitted on create: the sub-account inherits the parent's default access.
sub_auth_idYesThe sub-account's Auth ID (SA_...), from list_sub_accounts.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing partial-update semantics, a KYC-related side effect that can pause calls, and the environment-variable plus confirm gate. Annotations already mark the tool as destructive, idempotent, and open-world, and the description adds the practical behavioral constraints an agent needs before invoking it.

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 sentences, each carrying distinct operational information: scope, partial update, KYC side effect, and gating. The core purpose is front-loaded and nothing is redundant.

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

Completeness4/5

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

Given a 10-parameter update tool with a nested permissions object, an enum, and no output schema, the description covers the most important behavioral caveats. It could be slightly richer on nested permissions replacement semantics, but the safety-relevant context is present.

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 80% schema description coverage, the baseline is 3, but the description adds meaningful update semantics by specifying that only supplied fields change. It also links kyc_mode customer_use to the email parameter, adding cross-parameter meaning beyond the schema.

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 (change a sub-account) and enumerates the mutable fields, so the agent knows exactly what class of operation this is. It does not explicitly differentiate itself from create_sub_account or delete_sub_account, but the update semantics are clear.

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 contextual guidance: only passed fields change, customer_use requires an email and may pause calls, and the operation is gated by VOBIZ_ENABLE_PROVISIONING and confirm. It does not name explicit alternatives or when not to use the tool, but the operational preconditions are well stated.

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

update_trunk_credentialUpdate trunk credentialA
DestructiveIdempotent
Inspect

Rotate a trunk credential's password, enable or disable it, or change its description on Vobiz. The username is permanent; to rename, create a new credential and delete the old one. A new password takes effect for the next SIP authentication. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true, set only after the user explicitly approved: changing this trunk credential.
enabledNofalse pauses authentication with this credential without deleting it.
passwordNoSECRET: the trunk credential's new SIP password (8+ characters; 12+ with mixed case, digits and symbols recommended). It is sent to Vobiz once and never shown again.
descriptionNo
credential_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the mutation profile is known. The description adds real context beyond them: the username is immutable, a new password only applies at the next SIP authentication, and the call is gated by an env flag plus confirm. It does not state permission requirements or reversibility, which would push 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.

Conciseness5/5

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

Three front-loaded sentences, each carrying distinct information: what can change, the rename workaround, and the password/gating behavior. No filler or repetition of the schema.

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

Completeness4/5

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

For a destructive mutation with no output schema and a 60%-documented schema, this covers the key concerns: mutability, password effect timing, and prerequisites. Missing details on auth/permission requirements 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 60%, so the schema documents confirm, enabled and password, but leaves description and credential_id bare. The description adds behavioral meaning for password (effective at next SIP auth) and clarifies the immutability of the username, but does not compensate for the undocumented description/credential_id parameters. Baseline-appropriate, not above it.

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

Purpose5/5

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

States a specific verb+resource (update/rotate a trunk credential) and enumerates exactly which fields can change: password, enabled state, description. This cleanly separates it from create_trunk_credential and delete_trunk_credential without opening any 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?

Explicitly routes the rename case to alternatives: 'to rename, create a new credential and delete the old one.' It also states the gating conditions for invoking (VOBIZ_ENABLE_PROVISIONING and confirm: true). No explicit anti-patterns or comparison against update_sip_trunk, but the operative guidance is clear.

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. 106 tool updatesv1.1.1
    • First observedadd_ip_acl_entry
    • First observedadd_opt_out
    • First observedassign_number_to_subaccount
    • First observedbuy_phone_number
    • First observedcancel_number_release
    • First observedcheck_opt_out
    • First observedcreate_application
    • First observedcreate_origination_uri
    • First observedcreate_sip_endpoint
    • First observedcreate_sip_trunk
    • First observedcreate_sub_account
    • First observedcreate_sub_account_kyc_session
    • First observedcreate_trunk_credential
    • First observeddeafen_conference_member
    • First observeddelete_application
    • First observeddelete_ip_acl_entry
    • First observeddelete_origination_uri
    • First observeddelete_recording
    • First observeddelete_sip_endpoint
    • First observeddelete_sip_trunk
    • First observeddelete_sub_account
    • First observeddelete_trunk_credential
    • First observedend_all_conferences
    • First observedend_call
    • First observedend_conference
    • First observedgather_dtmf
    • First observedgenerate_answer_xml
    • First observedget_account_balance
    • First observedget_account_details
    • First observedget_application
    • First observedget_audio_stream
    • First observedget_broadcast
    • First observedget_call_details
    • First observedget_call_recording
    • First observedget_call_status
    • First observedget_concurrency
    • First observedget_conference
    • First observedget_conversation_messages
    • First observedget_gather_result
    • First observedget_message
    • First observedget_number_health
    • First observedget_phone_number_details
    • First observedget_sip_endpoint
    • First observedget_sip_trunk
    • First observedget_sub_account
    • First observedget_sub_account_kyc_status
    • First observedget_vobiz_skill
    • First observedhangup_conference_member
    • First observedhold_call
    • First observedkick_conference_member
    • First observedlist_applications
    • First observedlist_audio_streams
    • First observedlist_broadcasts
    • First observedlist_call_records
    • First observedlist_conferences
    • First observedlist_conversations
    • First observedlist_ip_acl_entries
    • First observedlist_live_calls
    • First observedlist_messages
    • First observedlist_messaging_numbers
    • First observedlist_opt_outs
    • First observedlist_origination_uris
    • First observedlist_phone_numbers
    • First observedlist_recordings
    • First observedlist_sip_endpoints
    • First observedlist_sip_trunks
    • First observedlist_sub_accounts
    • First observedlist_transaction_types
    • First observedlist_transactions
    • First observedlist_trunk_credentials
    • First observedlist_vobiz_skills
    • First observedlist_webhook_events
    • First observedlist_webhooks
    • First observedmake_call
    • First observedmute_conference_member
    • First observedplay_audio
    • First observedplay_audio_to_conference_member
    • First observedpreview_message_cost
    • First observedrelease_phone_number
    • First observedremove_opt_out
    • First observedsearch_available_numbers
    • First observedsend_dtmf
    • First observedsend_message
    • First observedspeak_text
    • First observedstart_audio_stream
    • First observedstart_conference_recording
    • First observedstart_recording
    • First observedstop_audio
    • First observedstop_audio_stream
    • First observedstop_audio_to_conference_member
    • First observedstop_conference_recording
    • First observedstop_recording
    • First observedstop_speaking
    • First observedtransfer_call
    • First observedunassign_number_from_subaccount
    • First observedundeafen_conference_member
    • First observedunhold_call
    • First observedunmute_conference_member
    • First observedupdate_application
    • First observedupdate_ip_acl_entry
    • First observedupdate_origination_uri
    • First observedupdate_phone_number
    • First observedupdate_sip_endpoint
    • First observedupdate_sip_trunk
    • First observedupdate_sub_account
    • First observedupdate_trunk_credential

TDQS

A3.7/5.0

Scored across 106 tools

Disambiguation4/5

Despite 106 tools, most have clearly distinct resource+action purposes (e.g. end_conference vs end_all_conferences, kick vs hangup_conference_member, play_audio vs speak_text vs play_audio_to_conference_member), and descriptions actively disambiguate close pairs. The call-inspection cluster (get_call_status, get_call_details, list_call_records, get_call_recording) and the many stop_* tools are similar in spirit, but each is scoped well enough that misselection is unlikely.

Naming Consistency5/5

Names are uniformly snake_case and follow a predictable verb_noun pattern (list_*, get_*, create_*, update_*, delete_*, plus consistent start_/stop_ pairs). Verb choices are stable across domains (create/update/delete for CRUD, start/stop for streams, recordings and conference audio), so the pattern is easy to predict.

Tool Count2/5

106 tools is very heavy for any single surface and goes well beyond the typical well-scoped range. The breadth is partially justified by covering many genuine sub-domains (calls, messaging, conferences, SIP, sub-accounts, billing, audio streams, skills), but the sheer volume imposes high selection cost and tooling overhead.

Completeness4/5

Coverage is unusually thorough: full CRUD across calls, numbers, applications, trunks, endpoints, credentials, IP ACLs, origination URIs, sub-accounts and conferences, plus read-only analytics, billing and skills. Minor gaps remain, notably broadcast tooling (list/get exist but no create/update/send broadcast) and WhatsApp mentioned in the skills list with no corresponding tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to provision phone numbers, send SMS, place AI voice calls, and react to inbound events via the Dial communication stack, all through MCP tools.
    849 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Lets MCP clients such as Claude and ChatGPT read a WorkMobile account's jobs, job types, forms, submitted form records, approvals and mobile users, and, when writes are enabled, create and allocate jobs and approve or reject records.
    10
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP clients to manage AI voice assistants, place calls, run campaigns, handle contacts and knowledge bases, and read call transcripts. It also provides account, phone number, dialer, and analytics tools through a hosted or local MCP connection.
    25
    MIT