starlink-enterprise-mcp
This server acts as an MCP proxy for the Starlink Enterprise API, enabling AI agents to manage Starlink services through auto-generated tools and a secure OAuth flow. Key capabilities include:
Account & Billing
Retrieve account details, available products, and query data usage
Get billing partial periods for proration details
Service Lines
List, create, update, and deactivate service lines
Set nicknames, change products/subscriptions, manage public IP settings
Opt in/out of priority data, manage data top-ups and recurring data blocks
Add/remove user terminals, set pool consumption behavior
User Terminals (Dishes)
List, add, remove, and reboot terminals remotely
Assign configurations and manage L2VPN VLANs
Routers
Get router details; create, update, and assign router configs
Manage TLS certificates, local content files, sandbox clients, and reboot routers remotely
Addresses & Contacts
Create, read, update addresses
Create, read, update, and delete contacts
Data Pools (Pre-Release)
View data pools and usage; enable/disable automatic top-up
Specialized Features
Post aviation flight events (departure, arrival, metadata) for aviation accounts
Create managed customer accounts for provider/reseller accounts
Infrastructure
Secure OAuth proxy β credentials never touch the AI model's context
Persistent sessions with automatic token refresh
Flexible deployment (local, Cloud Run, Fly.io, Kubernetes) and multiple auth modes (multi-tenant, pass-through, single-account)
Operator controls to disable specific tools or destructive actions via environment variables
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@starlink-enterprise-mcplist my Starlink terminals and their status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Starlink Enterprise MCP Server
π°οΈ Hosted, multi-account MCP for the Starlink Enterprise API Any AI agent β Claude, ChatGPT, anything that speaks MCP β connects with a real Starlink V2 Service Account, drives the full Enterprise API, and stays connected indefinitely. The Client Secret never touches the model.
β‘ Features
π Hosted OAuth proxy with API-key login β The server is the OAuth 2.1 authorization server. But Starlink has no interactive OAuth and no MFA, so the browser login page doesn't ask for a username and password β it asks for a Service Account Client ID + Client Secret. The server validates them with a
client_credentialsgrant; credentials never enter the model's context.π Transparent token re-minting β Starlink bearer tokens are short-lived (~15 min) and have no refresh token. The server stores the service-account credentials alongside the issued MCP token and silently re-mints a fresh bearer before expiry, and again on any
401. AI sessions stay alive across long conversations.πͺ Stateless login state β OAuth pending state rides in HMAC-signed
HttpOnlycookies, so logins survive container restarts and Cloud Run instance switches.ποΈ Firestore persistence β Issued tokens and DCR client registrations survive deploys and scaling events when
MCP_PERSISTENCE=firestore.π€ Claude and ChatGPT support β Public-client dynamic registration (
token_endpoint_auth_method=none, PKCE only) means ChatGPT connects out of the box alongside confidential clients like Claude.𧬠55 auto-generated tools from the spec β The Starlink Enterprise v2 OpenAPI spec, regenerated on every build. Drop in a new spec and rebuild to pick up new endpoints.
π― No curated layer needed β At 55 operations the full tool surface fits comfortably in a model's working memory, so every tool is exposed directly with read/write/destructive annotations.
βΎοΈ Stateless by default β No
Mcp-Session-Id, no in-memory session map, no session affinity. Any instance can serve any request, so autoscaling and cold starts stop breaking mid-conversation.π§Ύ Typed results β Every tool declares an
outputSchemaderived from the OpenAPI response, and returns matchingstructuredContent. The model gets a typed object, not an opaque JSON blob.πͺ Operator-tunable β Disable globs (
MCP_DISABLED_TOOLS=delete_*,*reboot*), a semantic destructive toggle (MCP_DISABLE_DESTRUCTIVE=true), branded login page (MCP_LOGIN_HEADER,MCP_ICON_URL). No code change for per-deployment policy.π§ͺ A real test suite β 108 tests, including a draft-2020-12 JSON Schema guard that compiles every tool's input and output schema on every run, and end-to-end JSON-RPC over the actual transport.
Related MCP server: agentforge
π How auth differs from a username/password MCP
Username/password OAuth proxy | This server (Starlink) | |
Login page collects | username + password | Service Account Client ID + Client Secret |
Upstream grant |
|
|
MFA | yes | none (service accounts skip MFA) |
Refresh | upstream refresh token | re-run |
Token TTL | hours | ~15 min, re-minted on expiry / 401 |
The DCR + browser-redirect OAuth shell is identical β what changed is the login form and the upstream grant.
ποΈ Architecture
AI client (Claude/ChatGPT)
β OAuth 2.1 DCR + browser login (PKCE)
βΌ
[ Starlink MCP HTTP server (this repo) ] β OAuth proxy, login page (Client ID + Secret), cookies, Firestore
β per-account Starlink bearer (client_credentials)
βΌ
[ Starlink Enterprise API https://web-api.starlink.com ]Each issued MCP bearer maps to a stored upstream Starlink token plus the service-account credentials used to mint it, so the server can re-mint silently.
π» Running locally (stdio)
npm install
npm run build
export STARLINK_CLIENT_ID=<your-service-account-client-id>
export STARLINK_CLIENT_SECRET=<your-service-account-secret>
npm start # MCP_TRANSPORT defaults to stdioCreate a V2 service account at Account Settings β API V2 Service Accounts (requires the Admin or Service Account Management role).
Add this entry to your local MCP client config (Claude Desktop, etc.):
{
"mcpServers": {
"starlink": {
"command": "node",
"args": ["/path/to/starlink-enterprise-mcp/build/index.js"],
"env": {
"STARLINK_CLIENT_ID": "...",
"STARLINK_CLIENT_SECRET": "..."
}
}
}
}You can also set STARLINK_ACCESS_TOKEN directly to skip the grant if you
already hold a bearer.
π Running as a hosted server (HTTP)
export MCP_TRANSPORT=http
export MCP_PORT=3000
export MCP_BASE_URL=https://mcp.example.com
export MCP_SESSION_SECRET=<32+ random hex> # signs login-state cookies
npm startConnect from Claude / ChatGPT by giving it the URL https://mcp.example.com/mcp.
The client DCR-registers, redirects the user to /authorize, the user pastes
their Service Account Client ID + Secret, and the bearer flows back to the AI
automatically. No upstream operator credentials are needed in HTTP mode β
each user brings their own service account.
Pass-through mode (credentials configured in the MCP client)
Set MCP_AUTH_MODE=passthrough and the connector supplies the Starlink Service
Account as its OAuth client_id + client_secret (configured in Claude/ChatGPT,
not on a login page). The server treats any presented client_id as a dynamic
client, then at the /token exchange validates the client_secret against
Starlink's client_credentials grant β a successful grant is the
authentication. The credentials are then bound to that session and re-minted as
usual. No login page, no server-side credentials, fully multi-tenant.
export MCP_AUTH_MODE=passthroughIn the client's connector setup, point it at https://β¦/mcp and enter your
Starlink Service Account Client ID and Client Secret as the OAuth client
credentials. Requirements: the client must use the authorization-code flow with
PKCE and send the client_secret at the token endpoint (client_secret_post).
Single-account mode (skip the login page)
If you set STARLINK_CLIENT_ID + STARLINK_CLIENT_SECRET on the server, the
/authorize step auto-logs-in with those and the credential-entry page is never
shown β every user who connects shares that one Starlink account. Leave them
unset for the multi-tenant login-page behavior above.
export STARLINK_CLIENT_ID=<service-account-id>
export STARLINK_CLIENT_SECRET=<service-account-secret>Trade-off: in single-account mode the endpoint is only as private as its URL β DCR registration is open, so anyone who can reach
/mcpand complete the (credential-free) OAuth flow uses that shared account. Put it behind access control, or accept that the URL is the secret.
βοΈ Cloud Run deployment
Ships with a Cloud Run-friendly Dockerfile and cloudbuild.yaml.
Component | Purpose |
Cloud Run service | Runs the HTTP server. No session affinity or |
Firestore (native mode) | Persistent token store and DCR client registry |
Cloud Run SA β | Firestore access |
gcloud builds submit --config cloudbuild.yaml --project=<your-project>Required env vars on Cloud Run:
Var | Notes |
| enable the HTTP transport |
| public URL, e.g. |
| 32+ chars; signs login-state cookies & must be stable across instances |
| enable Firestore-backed tokens and clients |
| Firestore project ID (auto-set on Cloud Run) |
Transport and protocol options:
Var | Default | Notes |
|
|
|
|
| Return plain JSON instead of SSE, for intermediaries that break event streams |
| unset | Comma-separated allowlist; a non-matching |
|
|
|
|
| Page size for |
|
| Enable task augmentation (see above) |
|
| Firestore collection for task state |
| Starlink API docs |
|
Also optional: STARLINK_API_URL, STARLINK_TOKEN_URL (defaults are correct
for production), MCP_LOGIN_HEADER, MCP_ICON_URL, MCP_LOGIN_LOGO_URL,
MCP_DISABLED_TOOLS, MCP_DISABLED_ACTIONS, MCP_DISABLE_DESTRUCTIVE,
MCP_CORS_ORIGIN.
MCP_ICON_URLnow does double duty: it still serves the favicon and login-page logo, and it is also advertised as the server's MCPiconsentry so clients can render it in a connector list.
Other targets: fly.toml (Fly.io), render.yaml (Render), railway.toml
(Railway), docker-compose.yml, and k8s/ manifests (apply with
kubectl apply -k k8s/).
Security note on persistence. In HTTP mode the issued-token records hold each user's Starlink service-account Client ID + Secret so the server can re-mint bearers. Protect the token store accordingly β restrict the Firestore collection / file volume, and rotate
MCP_SESSION_SECRETand service-account secrets per Starlink's guidance if exposure is suspected.
π OAuth flow (detailed)
AI client hits
GET /.well-known/oauth-protected-resource/mcpand/.well-known/oauth-authorization-serverfor discovery.AI client POSTs
/register(RFC 7591 DCR). Public clients passtoken_endpoint_auth_method=noneand get back aclient_idonly; confidential clients also get aclient_secret. Registrations persist in Firestore.AI redirects the user's browser to
/authorize?...with PKCE parameters. The server stores the pending request in a signed cookie (mcp_pending_auth, 15 min TTL) and renders the login page.User submits their Service Account Client ID + Client Secret β server runs
POST {STARLINK_TOKEN_URL}withgrant_type=client_credentials. On success it stores the Starlink token + credentials and issues an authorization code.The server redirects back to the AI client; cookies are cleared.
AI exchanges the code at
/tokenfor the MCP-issued bearer + refresh token.On every
/mcprequest, the server verifies the bearer and transparently re-mints the upstream Starlink token if it's near expiry. On a401from the API, the client re-mints and retries once.
π MCP spec conformance
Targets MCP 2025-11-25 and negotiates down to any revision the client asks for (2025-06-18, 2025-03-26, 2024-11-05).
Feature | Revision | Status |
Streamable HTTP, stateless | 2025-03-26 | Default. |
| 2025-06-18 | Unsupported version β 400 |
Structured output ( | 2025-06-18 | 52 of 55 tools; |
Tool | 2025-06-18 | All tools |
OAuth Resource Server + protected-resource metadata | 2025-06-18 | RFC 9728 discovery, |
No JSON-RPC batching | 2025-06-18 | Not accepted |
Icons on server and tools | 2025-11-25 (SEP-973) | From |
| 2025-11-25 | Sent at initialize |
Invalid | 2025-11-25 | Via |
Validation errors as tool errors, not protocol errors | 2025-11-25 (SEP-1303) | Arguments validated, types coerced |
Tool-name format guidance | 2025-11-25 (SEP-986) | Validated at startup |
JSON Schema 2020-12 as default dialect | 2025-11-25 (SEP-1613) | Input and output schemas |
Tasks (durable requests, polling, deferred results) | 2025-11-25 (SEP-1686) | Opt-in via |
| 2024-11-05 | Opt-in via |
| 2024-11-05 | Supported |
Not implemented, and why: resources and prompts (this server exposes an API surface, not documents or templates), completions (nothing to complete without prompts or resource templates), sampling, elicitation, and roots (client-side features this server has no use for β every tool call is fully specified by its arguments).
Stateless vs. session mode
Stateless is the default. Each request gets a fresh Server and transport, and
no Mcp-Session-Id is issued.
This matters on any autoscaled host. With sessions, initialize builds
in-memory state on one instance, and the next tools/call gets load-balanced to
an instance that has never heard of that session ID β the client sees
Invalid or missing session ID and the conversation dies. Stateless has no
affinity requirement, so min-instances=1 and session affinity stop being
load-bearing.
Nothing is given up here: this server sends no server-initiated messages. The
tool list is fixed at build time from the OpenAPI spec, and there are no
resources or prompts to subscribe to, so the standalone GET /mcp SSE stream
that sessions exist to support has nothing to carry. In stateless mode it
answers 405 rather than opening a stream that can never produce anything.
Set MCP_STATELESS=false on a single-instance deployment to restore sessions.
Tasks
Off by default. A task-augmented tools/call returns a handle immediately and
the client collects the result later via tasks/result, decoupling the tool's
runtime from the HTTP request's lifetime.
Enabling it on Cloud Run needs two things that are not the default:
--no-cpu-throttling, or the container is frozen once the response is sent and the detached work never finishes.MCP_PERSISTENCE=firestore, or the poll lands on an instance that has never heard of the task. With Firestore the store is shared and any instance can answer. Without it you get an in-memory store and a startup warning.
export MCP_TASKS=true
export MCP_PERSISTENCE=firestore # required for more than one instanceTask documents live in mcp_tasks (override with MCP_TASKS_COLLECTION) and
carry an expiresAt field β set a Firestore TTL policy on it to have Firestore
reclaim them. Client-requested TTLs are clamped to 24 hours.
π§° Tools
55 tools generated from spec/starlink-enterprise-v2.json, grouped by tag:
Group | Examples |
Account |
|
Service Lines |
|
User Terminals |
|
Routers |
|
Addresses |
|
Contacts |
|
Data Pools |
|
Flights |
|
Managed |
|
Each tool carries a human-readable title, an inputSchema, an outputSchema,
and the full annotation set: readOnlyHint, destructiveHint, idempotentHint
(GET/PUT/DELETE), and openWorldHint. Reboots and deletes are flagged
destructive β hide them all with MCP_DISABLE_DESTRUCTIVE=true, or selectively
with e.g. MCP_DISABLED_TOOLS=delete_*,*reboot*.
Tool names map 1:1 to operations ({method}_{path}, with the /public/v2
prefix stripped). Two deep service-line paths are abbreviated to fit the MCP
64-character name limit.
Result shape
Results carry structuredContent matching the tool's outputSchema, shaped
like the Starlink response envelope β payload under content, plus isValid:
{
"content": [{ "type": "text", "text": "{ \"content\": { \"accountNumber\": \"ACC-β¦\" } }" }],
"structuredContent": { "content": { "accountNumber": "ACC-β¦", "regionCode": "US" }, "isValid": true }
}The schemas are deliberately permissive: no required, no
additionalProperties: false, and nullable fields widened to a type union. A
Starlink response that has drifted from the published spec still validates
rather than being rejected by a strict client. If a client is still unhappy,
MCP_STRUCTURED_OUTPUT=false drops both the schemas and the structured results
in one move.
Errors come back in the result, not as protocol errors. A permission
failure, a bad argument, or an operator-disabled tool returns
isError: true with an explanatory message, so the model can read what went
wrong and retry. Only an unknown tool name is a JSON-RPC error. Arguments are
validated against the input schema before any call is made, and obvious type
mismatches ("50" for a number) are coerced rather than rejected.
π Regenerating tools
The spec lives at spec/starlink-enterprise-v2.json (sourced from
https://web-api.starlink.com/enterprise/swagger/v2/swagger.json). To refresh:
# drop a new spec into spec/starlink-enterprise-v2.json, then:
npm run generate # rewrites src/generated/
npm run build
npm testnpm run build runs generate automatically via the prebuild hook.
π§ͺ Tests
npm testThe Firestore-backed tests are emulator-gated and skip cleanly without one.
π What this server is
Two MCP transports.
stdiofor local CLI integrations andhttp(Streamable HTTP, stateless by default) for hosted deployments. Production useshttp.MCP 2025-11-25, negotiating down to older revisions on request.
Auto-generated tools from the Starlink Enterprise v2 OpenAPI spec, regenerated on every build, with typed
structuredContentresults.Hosted OAuth login where the login page collects Starlink Service Account credentials (Client ID + Secret), not a username/password. MFA does not apply to service accounts.
Transparent token re-minting via
client_credentials(no refresh token).Firestore persistence for tokens and DCR clients when
MCP_PERSISTENCE=firestore.
License
MIT
Available Tools
55 toolsdelete_contacts_by_subject_idADestructive
Delete contact β Required permission: Admin Only - API User Management, Edit.Deletes contact based on specified subject Id on the authenticated account. β [DELETE /public/v2/contacts/{subjectId}]
| Name | Required | Description | Default |
|---|---|---|---|
| subjectId | Yes | Subject ID of contact to be deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's mention of permissions adds context. It also includes the HTTP method and endpoint. No contradiction, but no additional behavioral details beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficient and front-loaded with the action and permission. The endpoint in brackets is helpful but slightly redundant with the rest. No waste, but could be more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter, the description adequately covers the action, permission, and endpoint. Lacks notes about idempotence or error cases, but is complete for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the subjectId parameter. The description only restates that deletion is based on subjectId, adding no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'contact', specifying deletion based on subjectId from the authenticated account. It distinguishes from sibling tools like 'delete_service_lines' by targeting contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission but provides no guidance on when to use this tool versus alternatives like other delete tools. No explicit when-to-use or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_routers_configs_tlsADestructive
Delete TLS config β Required permission: Device command and configuration, Edit.Deletes a TLS certificate and key pair from the set of TLS configs that can be reused when saving router configs and only specifying the certificate. Does not affect any router configs that were already saved, just removes it from list of certificates that the matching key will be inserted on save for. β [DELETE /public/v2/routers/configs/tls]
| Name | Required | Description | Default |
|---|---|---|---|
| certificateBase64Pem | Yes | Certificate base64 encoded pem string to match on for deletion of the corresponding certificate and key pair |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by clarifying that deletion only removes from the reusable set and does not affect existing router configs. This nuance is important for an agent to understand the actual impact despite destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and includes permission, explanation, and endpoint in a structured manner. It is slightly verbose but not excessively so.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter schema and presence of annotations, the description provides sufficient behavioral context including permission requirements and the effect scope. No output schema exists, so return values are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the input schema, and the tool description does not add additional information about the parameter beyond what is already in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete TLS config' and explains it removes a certificate and key pair from the reusable set. It is specific about the resource and action, but does not explicitly distinguish from sibling tools like post_routers_configs_tls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission and notes that deletion does not affect already saved configs, providing some context for when to use. However, it does not offer explicit guidance on when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_lines_by_service_line_numberBDestructive
Deactivate a service line β Required permission: Service plan, Edit. β [DELETE /public/v2/service-lines/{serviceLineNumber}]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| reasonForCancellation | No | Optional reason for cancelling this service line | |
| endNow | No | If service should end now, or on next bill day. Default is false. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior. The description adds the required permission and HTTP method, which is useful but does not explain what 'deactivate' entails (e.g., soft delete, impact on subscriptions) beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence with key details (action, permission, HTTP method). It is front-loaded and contains no filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 3 parameters and a destructive effect, the description does not address behavior for optional parameters (reasonForCancellation, endNow) or what happens after deactivation. The lack of output schema means more context would be helpful, but it is not provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all parameters (100% coverage). The description does not add any additional meaning or context for the parameters, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Deactivate a service line,' specifying the verb and resource. It clearly distinguishes from sibling delete tools that operate on different entities (e.g., contacts, routers configs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions required permissions. It provides no guidance on when to use this tool versus alternatives like other service line tools (e.g., patch, post) or related delete tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_line_user_terminalADestructive
Remove user terminal from service line β Required permission: Service plan, Edit.This removes the user terminal from the service line, but it remains on the account and can be added to another service line. This clears any L2VPN circuits configured for the terminal. β [DELETE /public/v2/service-lines/{serviceLineNumber}/user-terminals/{deviceId}]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| deviceId | Yes | User terminal ID, kit serial number, or dish serial number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true; the description adds that it clears L2VPN circuits and confirms the terminal is not fully deleted. Does not mention irreversibility but aligns with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and permission. Efficient but could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers removal behavior, remaining on account, and L2VPN clearing. No output schema, but sufficiently complete for a delete tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are well-described in schema. The description adds no extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove user terminal from service line') and the resource, distinguishing it from siblings like 'delete_user_terminals_by_device_id' which would fully delete the terminal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides required permissions and notes that the terminal remains on the account, implying when to use (disassociation vs. deletion). Lacks explicit when-not-to-use, but 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_user_terminals_by_device_idADestructive
Remove user terminal from account β Required permission: Device management, Edit.User terminal must already be removed from service lines before it can be removed from the account. See /v2/service-lines/{serviceLineNumber}/user-terminals/{deviceId} β [DELETE /public/v2/user-terminals/{deviceId}]
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | User terminal ID, kit serial number, or dish serial number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint true and readOnlyHint false. The description adds the required permission (Device management, Edit) and the prerequisite workflow, which provides additional behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences and a URL reference. It front-loads the action and permission. Slightly penalized for the URL which may be extraneous, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers permission and prerequisite, but does not mention error scenarios (e.g., if still attached to service lines), idempotency, or success response. For a simple deletion with one parameter, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter description is clear ('User terminal ID, kit serial number, or dish serial number'). The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove user terminal from account' β a specific verb and resource. It distinguishes from sibling tools like delete_service_line_user_terminal by mentioning the prerequisite of removing from service lines first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required permission and the prerequisite that the user terminal must be removed from service lines first, referencing another endpoint. This provides clear context for when to use the tool, though it could explicitly state 'Use this tool after removing from service lines'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-only
Get account information β Required permission: Account information, View. β [GET /public/v2/account]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, making the safety profile clear. The description adds the required permission and endpoint, but does not disclose any other behavioral traits (e.g., rate limits, data format). With annotations covering the basics, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then appends essential context (permission and endpoint). Every part is necessary and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters, no output schema, and is a simple GET operation, the description covers the key aspects: what it does and required permissions. It is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100% (empty schema). The description correctly does not add parameter information because none exist. For a zero-parameter tool, the baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'account information', making the purpose obvious. It also includes the required permission and endpoint, which adds clarity. However, it does not explicitly differentiate from sibling tools, though the resource name is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any when-not-to-use conditions. The only context is the required permission, which is insufficient for an agent to decide between this and other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_addressesARead-only
Get all addresses β Required permission: Account information, View.Returns all addresses on the account in paginated form. β [GET /public/v2/addresses]
| Name | Required | Description | Default |
|---|---|---|---|
| addressIds | No | Filter by a specific set of Address Reference IDs | |
| metadata | No | Filter by metadata | |
| page | No | Index of page to get. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive nature. The description adds permission requirement and pagination behavior, enhancing transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with essential information: permission, action, and pagination. Efficient but could be slightly more structured with bullet points for permissions and endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no output schema, the description adequately covers purpose, permission, pagination, and endpoint. It is complete enough for straightforward use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add extra meaning to parameters; it only mentions pagination in context but not the individual param semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all addresses' with a specific permission requirement and pagination detail. It distinguishes from siblings like get_addresses_by_address_reference_id by implying the scope is all addresses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the required permission, but lacks explicit guidance on when to use this tool over alternatives such as get_addresses_by_address_reference_id. The context of 'all addresses' and pagination is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_addresses_by_address_reference_idARead-only
Get address β Required permission: Account information, View. β [GET /public/v2/addresses/{addressReferenceId}]
| Name | Required | Description | Default |
|---|---|---|---|
| addressReferenceId | Yes | Address reference ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and destructiveHint=false, so the agent knows it is a safe read operation. The description adds permission requirement info but no further behavioral details (e.g., error handling, pagination).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three pieces of information (action, permission, endpoint) with no unnecessary words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one required parameter and no output schema, the description is mostly complete. It lacks explanation of return format, but the tool is straightforward enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single parameter with description). The description does not add meaning beyond the schema; it does not explain what 'addressReferenceId' represents or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get address' with a specific verb and resource. It is distinct from sibling 'get_addresses' which likely returns a list, and other CRUD tools like 'put_addresses_by_address_reference_id' and 'post_addresses'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission but does not explicitly specify when to use this tool versus alternatives like 'get_addresses' (list) or 'put_addresses_by_address_reference_id' (update). Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactsARead-only
Get contacts β Required permission: User management, Edit.Get list of contacts on the authenticated user's account. β [GET /public/v2/contacts]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of contacts to query. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context about required permission 'User management, Edit' and the HTTP GET method, which aids the agent in understanding behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, but the inclusion of HTML break and permission info in a compact format is acceptable. It could be more structurally clean, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter, the description covers purpose and permissions. However, it lacks information about the return format or any pagination details beyond the page parameter, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter 'page' having a clear description. The description does not add additional meaning beyond 'Get list of contacts', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get contacts' and specifies it retrieves a list of contacts on the authenticated user's account. It distinguishes from sibling tools by naming the resource explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a list of contacts is needed and mentions required permissions, but it does not provide explicit guidance on when to use this tool versus alternatives like search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_poolsARead-only
Pre-Release: Get all multi-service line enabled data pools. β Required permission: Service plan, View.This endpoint is available for select audiences only. β [GET /public/v2/data-pools]
| Name | Required | Description | Default |
|---|---|---|---|
| productReferenceId | No | Filter by Product ID of the pool | |
| dataPoolIds | No | Data pool IDs to filter by. Queries for all data pools on account if omitted | |
| page | No | The index of the page, starting at 0. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds meaningful context about the tool being pre-release and restricted to select audiences, along with required permissions, exceeding what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (two sentences plus a path) with no wasted words. It front-loads the main action and includes critical access information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description is adequate for a simple GET tool with full schema coverage, but lacks high-level context about the purpose of filters (productReferenceId, dataPoolIds) and pagination behavior beyond what's in the schema. No output schema, but not required for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 3 parameters. The description does not add any additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and the resource 'multi-service line enabled data pools'. It includes the HTTP method and path, distinguishing it from other get tools like get_data_pools_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'Pre-Release' and 'available for select audiences only', indicating limitations, but provides no explicit guidance on when to use this tool versus alternatives or 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.
get_data_pools_usageARead-only
Pre-Release: Query data pool usage with service line and monthly breakdowns. β Required permission: Service plan, View.This endpoint is available for select audiences only. β [GET /public/v2/data-pools/usage]
| Name | Required | Description | Default |
|---|---|---|---|
| dataPoolIds | No | Data pool Ids to filter by. Queries for usage of all data pools on account if omitted | |
| asOfTimestamp | No | Optional timestamp for snapshotting data pool usage *as of* this time. Only includes data blocks that are active at this instant (i.e., `StartDate <= asOfTimestamp < EndDate`). Defaults to `DateTimeOffset.UtcNow` to return currently active blocks. | |
| page | No | The index of the page, starting at 0. Default: 0 | |
| limit | No | Amount of data pool usage summaries to retrieve per page. Defaults to 50, can request up to 100. Default: 50 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds value by mentioning required permissions and availability restrictions, which are beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, including a permission note and endpoint path. The endpoint path is somewhat redundant but not overly verbose. Could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a sense of output (breakdowns) but does not explain return format or pagination behavior despite pagination parameters. Given no output schema, more detail would be helpful for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have clear descriptions in the input schema, so schema coverage is 100%. The description mentions 'with service line and monthly breakdowns' which hints at output but adds little to parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries data pool usage with service line and monthly breakdowns, specifying the resource and action. However, it does not differentiate from sibling tools like get_data_pools or post_data_usage_query, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on required permissions ('Service plan, View') and indicates it is a pre-release feature for select audiences. It lacks explicit guidance on when to use alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productsARead-only
Get products β Required permission: Service plan, View.Gets all products available to this account that could be assigned to service lines. Each product includes data block product info if compatible. β [GET /public/v2/products]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Index of page to get. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as read-only. Description adds permission requirement, data inclusion detail (data block product info if compatible), and HTTP method/endpoint β all 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one sentence with permission and key details, plus endpoint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one optional param and no output schema; description provides core purpose, permission, and data inclusion. Lacks pagination details but schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the only parameter (page) with description. Description adds no parameter info beyond schema, meeting baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Gets' and resource 'products available to this account', distinguishing it from sibling tools like get_contacts or get_addresses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies required permission and context (products assignable to service lines). While it doesn't explicitly list when not to use, the sibling set implies specialization; could be improved with alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_by_router_idARead-only
Get router β Required permission: Device management, View. β [GET /public/v2/routers/{routerId}]
| Name | Required | Description | Default |
|---|---|---|---|
| routerId | Yes | Router Id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds the required permission ('Device management, View'), which is useful, but does not describe any other behavioral traits such as what is returned, error handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence plus permission and endpoint information. Every word serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain what data is returned, error conditions, or handling of missing routers. For a read operation, this lack of detail reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single parameter 'routerId' described as 'Router Id'. The description adds no additional meaning or context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get router' with a specific resource (router by ID) and includes the HTTP method and endpoint. It clearly distinguishes from sibling tools that retrieve other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving a specific router by its ID, but it does not provide explicit guidance on when to use it versus other 'get' tools, nor does it mention prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_configsARead-only
Get all router configs β Required permission: Device command and configuration, View.Return all router configs on this account in paginated form β [GET /public/v2/routers/configs]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Index of page to get. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the response is paginated (page size 100) and requires a specific permission, providing behavioral context beyond annotations. However, it does not disclose other traits like rate limits or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: two short sentences plus the required permission and endpoint. Every sentence adds value, with the key action and constraints front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers purpose, permission, pagination, and the endpoint. It lacks details about the return format or field structure, but the naming and sibling tools provide sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'page' is fully described in the input schema (type, default, description), achieving 100% coverage. The description adds no additional meaning about the parameter beyond mentioning pagination, which is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get all router configs' and returns them in paginated form, clearly indicating the tool's purpose. It distinguishes from sibling tools like get_routers_configs_by_config_id and get_routers_configs_default by focusing on 'all' configs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission ('Device command and configuration, View') which guides authorization context. It implicitly distinguishes from other get_* config tools by specifying 'all' and 'paginated', but lacks explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_configs_by_config_idBRead-only
Get router config β Required permission: Device command and configuration, View. β [GET /public/v2/routers/configs/{configId}]
| Name | Required | Description | Default |
|---|---|---|---|
| configId | Yes | Config Id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds specific permission text, but no additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence including permission and endpoint. Could be slightly more structured, but no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read tool with one param and annotations present, but lacks description of what is returned (e.g., router config details). Gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and describes the param as 'Config Id'. Description does not add any extra meaning or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get router config' with required permission, but does not differentiate from siblings like get_routers_configs or get_routers_configs_default.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies required permission ('Device command and configuration, View'), but no explicit guidance on when to use vs alternatives. Implied by param name and endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_configs_defaultARead-only
Get default router config β Required permission: Device command and configuration, View.Gets the router config id that will be assigned to any routers when they are first added to this account. β [GET /public/v2/routers/configs/default]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds value by specifying the required permission and explaining that the returned ID is used for initial router assignment, providing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely conciseβtwo short sentences with no waste. It includes the HTTP method and path, front-loads the purpose, and includes necessary context like permissions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description is fairly complete: it explains the purpose, what it returns, and required permissions. It is missing potential error scenarios (e.g., no default set) but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. The description adds no parameter information, but the baseline is 3 as per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get default router config' and explains that it retrieves the router config id assigned to new routers, distinguishing it from sibling tools like get_routers_configs and put_routers_configs_default.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required permissions ('Device command and configuration, View'), which helps the agent assess eligibility, but lacks explicit guidance on when to use this tool versus alternatives like get_routers_configs or put_routers_configs_default.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_configs_tlsARead-only
Get TLS configs β Required permission: Device command and configuration, View.Gets a paginated list of TLS configs on this account. β [GET /public/v2/routers/configs/tls]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Index of page to get. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. Description adds permission requirement and pagination behavior, which is useful but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences effectively convey purpose and permission. The URL is extraneous but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple list tool with one parameter. Could hint at response structure but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the single parameter 'page' with description. Description adds no extra semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get', resource 'TLS configs', and scope 'on this account'. Differentiates from siblings like 'get_routers_configs' and 'post_routers_configs_tls'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required permission, providing context on prerequisites. Does not explicitly exclude alternative tools but the name and description imply specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_local_contentARead-only
Get list of router local content files β Required permission: Device command and configuration, View. β [GET /public/v2/routers/local-content]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the required permission (Device command and configuration, View) beyond the readOnlyHint and destructiveHint annotations. It does not contradict annotations and provides useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a structured format with action, permission, and endpoint. Every sentence adds value, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers purpose, permission, and endpoint, it lacks details about the return format or any pagination behavior. Given no output schema, the agent would benefit from more information on what the list contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%. According to the rules, baseline for 0 parameters is 4. The description does not need to add parameter details since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get list of router local content files', which is a specific verb and resource. It distinguishes itself from sibling tools like get_routers_configs or get_routers_by_router_id by specifying 'local content files'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only states the action and required permission, without any contextual cues or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routers_sandbox_clientsARead-only
Get sandbox clients β Required permission: Device command and configuration, View.Returns clients that were unsandboxed through the management API and have access that has not yet expired, paginated 1000 at a time. Clients that are allowed internet access due to sandbox disablement are not returned. β [GET /public/v2/routers/sandbox/clients]
| Name | Required | Description | Default |
|---|---|---|---|
| sandboxId | No | Sandbox Id | |
| expiryAfter | No | Include clients whose access expires after this time | |
| page | No | Index of page to get. Page size is 1000. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the tool is safe and non-destructive. The description adds behavioral context: pagination ('paginated 1000 at a time') and an exclusion clause ('Clients that are allowed internet access due to sandbox disablement are not returned'). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus the permission and endpoint URL. It front-loads the core purpose ('Get sandbox clients') and adds critical details without any fluff. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (three optional parameters, no output schema), the description is reasonably complete: it explains the resource, pagination, filtering by expiry, and permissions. It does not describe the return format or field structure, but since there is no output schema, a bit more detail on what fields are returned could be helpful. Still, it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the input schema (100% coverage), so the description does not need to add much. The description only adds the pagination detail ('paginated 1000 at a time'), which relates to the 'page' parameter's description in the schema (which already states 'Page size is 1000'). The added value is minimal, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get sandbox clients' and explains that it returns clients unsandboxed through the management API whose access has not expired. It also specifies what is not returned (clients allowed due to sandbox disablement), making the scope unambiguous. Among siblings, there is no other get sandbox clients tool, so differentiation is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the required permission ('Device command and configuration, View'), which guides usage. It implicitly indicates when to use this tool (to retrieve sandbox clients) but does not explicitly state when not to use it or contrast with alternatives like post_routers_sandbox_clients. However, the context is clear enough for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_line_billing_cycles_partial_periodsARead-only
Get billing partial periods β Required permission: Service plan, View.Get the previous billing partial periods for this service line. For more information about this endpoint, see https://starlink.readme.io/docs/understanding-proration. β [GET /public/v2/service-lines/{serviceLineNumber}/billing-cycles/partial-periods]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, confirming safe read operation. The description adds value by specifying the required permission and providing a documentation link, which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, containing only necessary information. It includes a permission note and a URL for further reading, but could be slightly more structured (e.g., separate lines).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, no output schema, and annotations covering safety, the description adequately explains the purpose, permission, and provides a link. It is complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'serviceLineNumber' described as 'Service line number'. The description reinforces the parameter's role by mentioning 'service line' and the URL pattern, but does not add significant new detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'billing partial periods' for a specific service line. It distinguishes from siblings because no other sibling tool targets billing partial periods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the required permission 'Service plan, View' and provides a link for more information, but does not explicitly state when to use this tool versus alternatives or 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.
get_service_linesARead-only
Get all service lines β Required permission: Service plan, View. β [GET /public/v2/service-lines]
| Name | Required | Description | Default |
|---|---|---|---|
| addressReferenceId | No | Filter by an Address Reference ID | |
| searchString | No | Filter by fuzzy match of nickname, or exact match on UT ID, UT nickname, UT serial number, or service line number | |
| dataPoolId | No | Filter for service lines on a given data pool | |
| page | No | The index of the page, starting at 0. Page size is 100. Default: 0 | |
| orderByCreatedDateDescending | No | Sort the paginated results by created date. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the required permission ('Service plan, View') and the HTTP method, which are useful contextual details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence followed by permission and endpoint. It is front-loaded with the core purpose and contains no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic purpose and permission, it lacks mention of pagination behavior (despite the page parameter having a description in schema), return format, or any caveats. Given moderate complexity (5 optional parameters), it is minimally adequate but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional parameter-specific meaning, meeting the baseline for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all service lines' with a specific verb and resource, and it distinguishes from sibling tools like get_service_lines_by_service_line_number by indicating it retrieves all service lines rather than a specific one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_service_lines_by_service_line_number or other get tools. The permission requirement is mentioned but does not help with usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_lines_by_service_line_numberARead-only
Get service line β Required permission: Service plan, View. β [GET /public/v2/service-lines/{serviceLineNumber}]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations by specifying the HTTP method (GET) and required permission. This helps the agent understand the operation's nature and access requirements. The annotations already indicate read-only and non-destructive behavior, and the description aligns with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of only two parts: the action and the permission requirement, plus the HTTP method in brackets. Every element is essential and placed upfront, with no redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-ID operation with no output schema, the description provides the core details (action, permission, endpoint). However, it does not mention the structure or type of the return value, which would help the agent interpret the response. Given the simplicity, it is minimally complete but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a clear description of the only parameter ('Service line number'), achieving 100% coverage. The tool description does not add any additional semantic detail about the parameter, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get service line') and the resource. Combined with the required parameter 'serviceLineNumber', it unambiguously indicates retrieval of a single service line by its number, distinguishing it from the sibling 'get_service_lines' which lists all lines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the required permission ('Service plan, View'), which helps the agent determine authorization. However, it provides no explicit guidance on when to use this tool versus alternatives like 'get_service_lines' or other read tools, leaving the agent to infer from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_terminalsARead-only
Get all user terminals β Required permission: Device management, View.Gets all user terminals on the account, filtered by the optional filter parameters, in paginated form β [GET /public/v2/user-terminals]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumbers | No | Filter by a set of service line numbers | |
| userTerminalIds | No | Filter by a set of user terminal IDs | |
| hasServiceLine | No | Filter by user terminals with or without a services lines. Omitting this will return both sets | |
| searchString | No | Filter by partial match of user terminal ID, serial number, or kit serial number | |
| page | No | The index of the page, starting at 0. Page size is 100. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. The description adds that the operation requires 'Device management, View' permission and returns paginated, filterable results, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences conveying purpose, permissions, filtering, pagination, and API endpoint. Slightly cluttered with <br/> and brackets, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with optional filters, the description covers core behavior, permissions, and pagination. No output schema, but return values are implied adequate for this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter coverage, so baseline is 3. The description mentions filtering and pagination but adds no new meaning to individual parameters beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all user terminals' with specific verb and resource, and mentions filtering and pagination, distinguishing it from other get tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing user terminals with optional filters, but does not provide explicit when-to-use or alternative guidance. The required permission is stated, but no exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_terminals_l2vpnARead-only
Get L2VPN circuits available for this account β Required permission: Device command and configuration, View. β [GET /public/v2/user-terminals/l2vpn]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds required permission context ('Device command and configuration, View'), which is useful. However, no disclosure of behavioral traits beyond that (e.g., error scenarios, rate limits). Bar lowered by annotations but still minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single line with action, permission, and endpoint. Extremely concise with no filler. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple read-only tool with no parameters and no output schema. Description covers purpose and permission. Could mention return format or what 'L2VPN circuits' includes, but not essential. Adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in input schema (0 params). Baseline 4 applies. Description does not need to add param info, and it correctly omits any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get L2VPN circuits' with specific verb and resource, and 'available for this account' denotes scope. Distinguishes from siblings like put_user_terminals_by_device_id_l2vpn (update) and get_user_terminals (general terminals).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Mentions required permission but does not compare with alternative tools (e.g., get_user_terminals for non-L2VPN circuits). Usage is implied but not contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_service_lines_by_service_line_number_consume_from_poolA
Pre-Release: Set whether a service line should consume from a data pool. β Required permission: Service plan, Edit.This endpoint is available for select audiences only. β [PATCH /public/v2/service-lines/{serviceLineNumber}/consume-from-pool]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| consumeFromPool | No | Whether the service line should consume from pool, defaults to true. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, consistent with the modifying but non-destructive nature of the tool. The description adds permission and audience constraints but lacks details on the effect of toggling consumeFromPool (e.g., billing impact, reversibility). With annotations covering safety, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences plus a note) and front-loaded with the main purpose. The inclusion of the endpoint path is somewhat redundant given the tool name but still provides clarity. It could be slightly more compact, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation and no output schema, the description still lacks context about what 'consume from a data pool' means, when it's relevant, and how it interacts with other tools like get_data_pools. The agent has limited understanding of the feature's purpose without additional explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are fully documented in the input schema. The description adds no additional meaning beyond what the schema provides (e.g., it does not explain how consumeFromPool interacts with data pools). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set whether a service line should consume from a data pool.' This provides a specific verb and resource, and the tool name itself includes the resource and action, making it distinct from sibling tools like nickname or product updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission ('Service plan, Edit') and audience limitation, which provides some context. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or when-not-to-use scenarios. The usage is implied but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_addressesC
Create address β Required permission: Account information, Edit. β [POST /public/v2/addresses]
| Name | Required | Description | Default |
|---|---|---|---|
| addressLines | Yes | The address lines for the address. Example: 1 Rocket Road | |
| locality | No | The town/locality of the address. Example: Hawthorne | |
| administrativeArea | No | The administrative area of the address. Example: California | |
| administrativeAreaCode | Yes | The administrative area code of the address. Example: CA | |
| region | No | The region of the address. Example: United States | |
| regionCode | Yes | The region code of the address. Example: US | |
| postalCode | No | The postal code of the address. Example: 90250-6844 | |
| metadata | No | Optional field that can be used to store information about the address for external purposes | |
| formattedAddress | Yes | A user readable address. Example: 1 Rocket Road, Hawthorne, CA 90250-6844, US | |
| latitude | Yes | The required latitude of the address. Example: 33.92 | |
| longitude | Yes | The required longitude of the address. Example: -118.32 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (write operation) and destructiveHint=false. Description adds permission requirement and HTTP endpoint, but no details about response format, idempotency, or whether it creates a new resource versus upsert. Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence conveying purpose and permission. Extremely concise, but lacks structure (e.g., bullet points) that could improve readability. Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters (6 required) and no output schema, the description should explain what the tool returns (e.g., created address ID) and any validation rules. It only covers purpose and permission, leaving agents to guess response behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines each parameter well. Description adds no additional parameter-level information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create address', which matches the POST verb. It distinguishes from siblings like get_addresses (read) and put_addresses_by_address_reference_id (update), but does not explicitly compare alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like put_addresses_by_address_reference_id (for updates) or get_addresses (for retrieval). Only mentions required permission, which indirectly restricts usage but doesn't provide decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_contactsB
Create contact β Required permission: Admin Only - API User Management, Edit.Creates the contact if it is new, and adds the contact to the authenticated account. β [POST /public/v2/contacts]
| Name | Required | Description | Default |
|---|---|---|---|
| firstName | Yes | Contact first name. | |
| lastName | Yes | Contact last name. | |
| roles | Yes | Contact roles on account. | |
| Yes | Contact email. | ||
| phoneNumber | Yes | Contact phone number. | |
| locale | Yes | Contact locale. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description correctly indicates a write operation (create), consistent with annotations (readOnlyHint=false). Adds context about permission requirement and behavior for new contacts, but does not disclose what happens if the contact already exists (e.g., error or update), or other behavioral traits like 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded with purpose and permission. The HTML break and endpoint are slightly redundant but not verbose. Efficient for a simple creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema. The description does not specify what the response contains (e.g., the created contact object) or behavior on duplicate contacts. Given the 6 required parameters, more detail on expected outcomes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 6 parameters have descriptions). The description adds no additional meaning beyond the schema, only repeating 'Create contact'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Create contact') and resource ('contact') and includes permission requirement. Distinguishes from sibling tools like 'delete_contacts_by_subject_id' and 'put_contacts_by_subject_id'. However, the phrase 'adds the contact to the authenticated account' is slightly vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for creating new contacts via 'Creates the contact if it is new', but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives such as 'put_contacts_by_subject_id' for updating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_data_pools_by_data_pool_id_set_automatic_top_upB
Pre-Release: Enable or disable automatic top-up for a data pool. β Required permission: Service plan, Edit.This endpoint is available for select audiences only. β [POST /public/v2/data-pools/{dataPoolId}/set-automatic-top-up]
| Name | Required | Description | Default |
|---|---|---|---|
| dataPoolId | Yes | The data pool ID | |
| enabled | No | Whether automatic top-up should be enabled (defaults to true). Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) and non-destructiveness (destructiveHint=false). The description adds permission requirements and pre-release status but does not disclose other behavioral traits like idempotency or state dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (two sentences plus endpoint) and front-loaded with the core action. Minor fluff like 'Pre-Release' and audience restriction could be trimmed, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (2 params, no output), the description covers the basic action and permissions. However, it lacks context on what automatic top-up does, billing impact, or when to prefer this over other top-up tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema; for example, it does not explain 'automatic top-up' context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Enable or disable automatic top-up') and the resource ('data pool'), distinguishing it from sibling tools like post_service_lines_by_service_line_number_data_top_up which target service lines. The verb 'Enable or disable' is specific and matches the tool's name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description notes it's pre-release and requires 'Service plan, Edit' permission, but does not provide explicit when-to-use or when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_data_usage_queryC
Query data usage β Required permission: Service plan, View.Retrieve the real-time data tracking info for this account's data usage. For detailed instructions, please refer to the API documentation: https://starlink.readme.io/docs/data-usage-api β [POST /public/v2/data-usage/query]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Index of page to get. Default: 0 | |
| limit | No | Amount of service lines to retrieve per page. Defaults to 50, can request up to 250. Default: 50 | |
| serviceLineNumbers | No | Service line numbers to filter by. Queries for all service lines on account if omitted | |
| previousBillingCycles | No | Number of previous billing cycles to include in addition to the current one. Defaults to 1 | |
| activeServiceLinesOnly | No | Whether to filter by only active service lines. Defaults to true | |
| queryStartDate | No | Override the first cycle's start date with the provided query start date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=false and destructiveHint=false, but the description only repeats that it's a query/retrieval operation. No additional behavioral traits are disclosed, such as potential side effects, resource consumption, or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short and front-loaded with the purpose and permission. The included link to API documentation adds length but is a reasonable reference. It avoids unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters and no output schema, the description lacks guidance on response structure, pagination behavior, and typical use cases. It only covers high-level purpose and a permission note, leaving gaps for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter already having a description. The tool description does not add meaning beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries data usage and retrieves real-time data tracking info for the account. It distinguishes from similar data tools like get_data_pools_usage by focusing on account-level data tracking, but does not explicitly differentiate from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission ('Service plan, View') but provides no guidance on when to use this tool versus alternatives, nor any exclusions or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_flights_statusB
Post a flight event β Required permission: Aviation flight status management, Edit.Post a real-time flight event on a Starlink-enabled plane. This endpoint is only accessible from an aviation account. β [POST /public/v2/flights/status]
| Name | Required | Description | Default |
|---|---|---|---|
| tailNumber | Yes | Tail Number that matches aircraft registration. | |
| flightNumber | Yes | Flight Number that specifies specific route operated by airlines. Please include 2-character airline code in IATA format followed by 1-4 digits. | |
| eventType | Yes | Allowed values: "EventUnknown", "Departure", "Arrival", "MetadataUpdate" | |
| eventTimeUtc | No | ISO 8601 Timestamp that represents actual gate departure (if eventType = Departure) or gate arrival (if eventType = Arrival) time in UTC. | |
| eventAirport | No | eventAirport | |
| scheduledArrivalAirport | No | scheduledArrivalAirport | |
| estimatedGateArrivalTimeUtc | No | Optional Metadata. ISO 8601 Timestamp that represents estimated gate arrival time in UTC. | |
| passengerCount | No | Optional Metadata. Actual passenger count on flight. | |
| slaOptOutFlight | No | Optional Metadata. Exclude this flight from Starlink SLA commitments. Default is false. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnlyHint or destructiveHint specifics), and the description does not disclose behavioral traits such as idempotency, rate limits, error conditions, or consequences of posting an event (e.g., duplicate handling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences covering purpose, permissions, and endpoint. It is front-loaded with the main action, though the permission detail could be separate from the action statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, nested objects, no output schema), the description lacks critical details: return format, structure of nested objects, and success/failure behavior. This leaves significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema description coverage, the description adds no extra meaning for parameters. Nested objects (eventAirport, scheduledArrivalAirport) lack clarity in both schema (described only as 'object') and description, so the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool posts a flight event on a Starlink-enabled plane, specifying the action and context. Among the many siblings, none are related to flight events, so it is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission and account type (aviation account), which provides some usage context. However, it does not explicitly state when to use this tool versus alternatives or when not to use it, and no alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_managed_customersA
Create a managed customer account β This endpoint is only callable with an authorized provider account. β [POST /public/v2/managed/customers]
| Name | Required | Description | Default |
|---|---|---|---|
| firstName | Yes | First name. | |
| lastName | Yes | Last name. | |
| Yes | Email address. | ||
| phone | Yes | Phone number. | |
| locale | Yes | ISO 639-1 language code. | |
| businessName | No | Business name only required for enterprise customers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint false, destructiveHint false), so the description carries the burden of behavioral disclosure. It correctly identifies the function as creating a managed customer account and adds an authorization requirement, but lacks details on what exactly happens upon creation, side effects, or response format. The absence of an output schema further limits transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (three short clauses separated by dashes) and front-loads the core action. It includes the endpoint with no fluff. However, the dash-separated structure is slightly unpolished but still clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (6 params, no output schema), the description covers the basics: creation purpose and authorization. However, it does not explain what happens after creation (e.g., return value, error cases, or required follow-up actions). This is a gap, especially since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description does not add new semantic information beyond the schema; it only echoes the business name requirement already documented. Thus, no additional value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a managed customer account,' which is a specific verb-object pair. It clearly distinguishes from sibling tools (e.g., post_contacts, post_addresses) by focusing on 'managed customer.' The endpoint URL is also provided, reinforcing the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that the endpoint is only callable with an authorized provider account, which gives a prerequisite for use. However, it does not provide guidance on when to use this tool versus alternatives (e.g., post_user_terminals, post_service_lines). No explicit when-to-use or when-not-to-use instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_routers_by_router_id_rebootADestructive
Reboot router β Required permission: Device command and configuration, Edit. β [POST /public/v2/routers/{routerId}/reboot]
| Name | Required | Description | Default |
|---|---|---|---|
| routerId | Yes | Router Id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as destructive; description adds specific required permission ('Device command and configuration, Edit'), which goes beyond annotations. However, it does not detail effects like downtime or async behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three pieces of information: action, permission, and endpoint. No unnecessary words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter and no output schema, the description adequately covers purpose and required permission. It could mention reboot effects (e.g., device interruption) but is still fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers routerId with a description. The description adds no extra parameter information beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Reboot router', a specific verb and resource. The name and description are consistent and leave no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides required permission but no explicit guidance on when to use this tool versus alternatives like other reboot tools (e.g., post_user_terminals_by_device_id_reboot). Usage context is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_routers_configsB
Create router config β Required permission: Device command and configuration, Edit. β [POST /public/v2/routers/configs]
| Name | Required | Description | Default |
|---|---|---|---|
| nickname | No | Nickname | |
| routerConfigJson | Yes | Router config json contents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (not destructive). The description adds authorization requirement information, which is useful behavioral context. However, it does not disclose idempotency, error conditions, or side effects beyond creation. The permission detail adds some value, resulting in a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with dash-separated elements (purpose, permission, endpoint). It is front-loaded with the core action and contains no wasted words. Every element serves a purpose, achieving high efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool creates a resource but lacks details about the response (e.g., what the created config looks like, if an ID is returned). Given no output schema, the description should provide this context. It also does not mention relationships to routers or prerequisites. The information is insufficient for full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'nickname' and 'routerConfigJson' are described in the schema. The description does not add any extra meaning to the parameters beyond what the schema already provides. Since the schema does the heavy lifting, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'router config', and includes the endpoint. However, it does not differentiate from sibling tools like 'post_routers_configs_tls', which also creates a router config but for TLS. The purpose is specific but could benefit from distinguishing from similar creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a required permission ('Device command and configuration, Edit.'), which gives some context on when it can be used. However, it offers no guidance on when to choose this tool over alternatives (e.g., put_routers_configs_by_config_id for updates) or any prerequisites. The usage context is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_routers_configs_tlsA
Create TLS config β Required permission: Device command and configuration, Edit.Creates a TLS config that allows this certificate and key to be used in router configs when a certificate and key are required by only specifying the certificate (matching key will be added). TLS configs are identified by their certificate string base64 encoded which must be unique on the account. β [POST /public/v2/routers/configs/tls]
| Name | Required | Description | Default |
|---|---|---|---|
| certificateBase64Pem | Yes | TLS certificate in PEM format, base64 encoded. | |
| keyBase64Pem | Yes | TLS key in PEM format, base64 encoded. Must match the public key of the certificate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, consistent with a create operation. Description adds behavioral context: TLS configs are identified by their base64-encoded certificate string, which must be unique on the account. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with purpose and permission. Includes endpoint URL for context. Slightly verbose with HTML line break, but otherwise concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 required parameters and no output schema, the description adequately covers creation purpose, uniqueness constraint, and permission. Could mention return value or side effects, but overall complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions. Description adds semantic value by specifying that the key must match the certificate's public key and that the certificate alone can be used (though both are required per schema). This clarifies the relationship between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create TLS config' and explains its purpose: allowing a certificate and key to be used in router configs. It differentiates from sibling tools like get_routers_configs_tls (read) and delete_routers_configs_tls (delete) as a create operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides required permission ('Device command and configuration, Edit') and describes the use case where specifying only the certificate automatically adds the matching key. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_routers_local_contentA
Upload router local content file β Required permission: Device command and configuration, Edit.Upload html file to allow it to be configured as the HTTPS server local content file for router configs. File must be HTML, under 4MB, and file name under 100 characters. Files are stored in a public bucket for configured routers to download. File should be attached as multipart/form-data. See https://starlink.readme.io/docs/local-content for example upload script. β [POST /public/v2/routers/local-content]
| Name | Required | Description | Default |
|---|---|---|---|
| File | Yes | File |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive. The description adds key behavioral context: files are stored in a public bucket for configured routers to download, and the upload requires specific permissions. This complements annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with purpose, permission, constraints, and a link. It's relatively concise, though the HTML breaks slightly lengthen it. Front-loads the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single parameter and no output schema. The description explains what happens (stored in public bucket) but does not describe the response format, whether the upload automatically activates the file, or if a separate config step is needed. A link to docs partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes parameter 'File' with minimal description. The tool description adds critical details: file must be HTML, under 4MB, filename under 100 chars, and attached as multipart/form-data, greatly enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload router local content file' and explains its specific purpose for configuring as HTTPS server local content. It distinguishes from siblings like get_routers_local_content and other post_routers_* tools by the unique action and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit permission requirements and constraints (file type, size, name length, multipart/form-data). Includes a link to an example script. However, it lacks explicit guidance on when not to use this tool or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_routers_sandbox_clientsA
Batch update sandbox clients β Required permission: Device command and configuration, Edit.Update the sandbox state for multiple clients. If sandboxing is enabled, sandboxed clients will only have access to domains in the sandbox domain allow list. If a client is duplicated, records the client with the latest expiry. β [POST /public/v2/routers/sandbox/clients]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive. The description adds behavioral details: sandboxed clients only access allow-listed domains, duplicate handling using latest expiry. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the main action and permission, then providing necessary behavioral details in two sentences. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or parameters, the description adequately covers purpose, required permissions, and functional behavior. It could mention batch size limits but is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description is not required to add parameter semantics. It correctly omits parameter details, earning a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a batch update of sandbox clients, which distinguishes it from the sibling GET tool for reading. It also explains the effect of sandboxing and duplicate handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the required permission ('Device command and configuration, Edit') and provides context for when to use the tool, though it lacks explicit exclusions or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_service_linesA
Create service line β Required permission: Service plan, Edit.Service line must be linked to an address and a subscription/product-ID, and can optionally be immediately configured with data blocks. β [POST /public/v2/service-lines]
| Name | Required | Description | Default |
|---|---|---|---|
| addressReferenceId | Yes | Address Reference ID to associate with the service line. Example: 55ec6574-10d8-bd9c-1951-d4184f4ae467 | |
| productReferenceId | Yes | Subscription Product ID to associate with the service line. Example: business-subscription-100 | |
| dataBlockProducts | No | dataBlockProducts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive write. The description adds that creation requires specific permissions and linkages, and optional data blocks. However, it does not disclose potential side effects like provisioning or billing impacts, which would be expected for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the action front-loaded. It includes permission, constraints, and endpoint info without unnecessary exposition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of service line management and the lack of output schema, the description covers essential constraints but omits what the response contains (e.g., created service line ID). It is adequate but not fully complete for an agent to understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description restates the required/optional nature of parameters but adds minimal new meaning beyond summarizing the schema in a sentence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create service line' which is a specific verb+resource pair. It distinguishes itself from siblings by being the creation operation, while siblings are for retrieval, update, or deletion of service lines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by specifying required permissions ('Service plan, Edit') and required linkages ('address and a subscription/product-ID'). It implicitly indicates this is for creating new service lines, but does not explicitly contrast with alternative tools like patch or post for sub-resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_service_lines_by_service_line_number_data_opt_inA
Opt in priority data β Required permission: Service plan, Edit.Opt in the service line to continue using priority data after reaching the plan capacity. Only applies to some products. β [POST /public/v2/service-lines/{serviceLineNumber}/data/opt-in]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that this is a mutation (opt-in) and notes permissions and product limitations. While annotations are readOnlyHint=false and destructiveHint=false, the description adds context about continuing priority data usage. It does not discuss side effects or if already opted in, but it is adequate for the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, conveying key information in a single sentence plus a permission note. It includes the HTTP method and path, which may be redundant but does not inflate length unnecessarily. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description adequately explains what it does, the required permissions, and the limitation to certain products. It does not elaborate on response or errors, but for this mutation, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, serviceLineNumber, which already has a description in the input schema ('Service line number'). The tool description does not add any additional meaning or formatting details beyond what the schema provides. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Opt in priority data' and explains that it allows the service line to continue using priority data after reaching plan capacity. It clearly distinguishes this from sibling tools like opt-out or top-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission ('Service plan, Edit') and the applicability condition ('Only applies to some products'), providing context for when to use. However, it does not explicitly state when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_service_lines_by_service_line_number_data_opt_outA
Opt out priority data β Required permission: Service plan, Edit.Opt out the service line from continuing to use priority data even when plan capacity is exceeded. If the service line reaches the plan capacity, it will switch to using standard data. Only applies to some products. β [POST /public/v2/service-lines/{serviceLineNumber}/data/opt-out]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds critical behavioral details: the mutation effect (opting out from priority data), the condition (when plan capacity exceeded), and the permission requirement. It could mention reversibility (via opt-in) but is thorough otherwise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus permission and endpoint. Every sentence adds valueβpurpose, condition, and applicability. It is front-loaded and avoids unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema). The description explains the core behavior, condition, and permission needs. It does not mention the opt-in alternative directly, but the context of siblings provides that. Overall, it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a single parameter described as 'Service line number'. The description does not add any additional constraints, examples, or format beyond what the schema provides, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Opt out priority data'), the resource ('service line'), and the behavioral effect ('switch to using standard data' when capacity exceeded). It distinguishes from siblings like opt-in and top-up by specifying the exact condition and outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required permissions ('Service plan, Edit') and applicability ('Only applies to some products'), giving clear context. It does not explicitly contrast with the opt-in sibling or state when not to use, but the name and context imply the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_service_lines_by_service_line_number_data_top_upA
Adds one-time top up data block to service line β Required permission: Service plan, Edit.Service line must be on a top up plan β [POST /public/v2/service-lines/{serviceLineNumber}/data/top-up]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | The service line number | |
| productId | Yes | Product Id for data blocks | |
| count | Yes | Quantity of the specified data block to add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write but non-destructive operation. Description adds permission and precondition details, but lacks information on idempotency, side effects on billing, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences include key information: action, permission, precondition, and API endpoint. Efficient but lacks structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema present and description does not explain what the tool returns. Absence of error handling or response format details is a gap for a tool with three required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full coverage (100%) with descriptions for all three parameters. Description does not add any additional semantic context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Adds' and resource specification 'one-time top up data block to service line'. Distinguishes from sibling tools like 'put_service_lines_by_service_line_number_data_recurring' by explicitly stating 'one-time'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States required permission ('Service plan, Edit') and precondition ('Service line must be on a top up plan'). Does not explicitly exclude other operations but the description implies this is for one-time top-up only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_service_lines_by_service_line_number_user_terminalsA
Add user terminal to service line β Required permission: Service plan, Edit.User terminal must already be on the account. See POST /v2/user-terminals to add user terminal to account. β [POST /public/v2/service-lines/{serviceLineNumber}/user-terminals]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| deviceId | Yes | User terminal Id, kit serial number, or dish serial number. Ex: 12345678-12345678-12345678 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the tool's non-destructive write nature is known. The description adds required permission and prerequisite, but does not disclose idempotency, side effects, or behavior if the terminal is already associated with the service line. This adds moderate value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a prerequisite and endpoint reference. It is front-loaded with the action, contains no redundant words, and each part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutable tool with 2 parameters and no output schema, the description covers the action, prerequisite, and permission. It is missing potentially useful details like idempotency or error conditions, but is largely complete for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions, so baseline is 3. The description adds context that deviceId must reference an existing account terminal, which is not in the schema. This helps the agent understand parameter constraints better.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add user terminal to service line' with a specific verb and resource. It distinguishes from sibling tools like post_user_terminals (adds to account) and delete_service_line_user_terminal (removes), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite: user terminal must already be on the account, and references the endpoint to add it (POST /v2/user-terminals). It also specifies required permission. However, it does not explicitly contrast with other sibling tools like delete_service_line_user_terminal, so some context is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_user_terminalsA
Add user terminal to account β Required permission: Device management, Edit.This will add the user terminal to the account, but won't start service. User terminals must be present on the account before adding to a service line. β [POST /public/v2/user-terminals]
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | User terminal Id, kit serial number, or dish serial number. Ex: 12345678-12345678-12345678 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive behavior, and the description confirms this by stating it adds (creates) without starting service. It adds value by specifying required permission ('Device management, Edit') and the nuance of not starting service, which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first states purpose and permission, second explains limitation, third covers prerequisite. It is front-loaded and concise, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with full schema coverage and no output schema, the description adequately covers purpose, limitations, and prerequisites. It does not explain return values, but this is acceptable for a create operation without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter with 100% coverage, including an example. The description adds semantic value by listing acceptable formats for deviceId (user terminal Id, kit serial number, dish serial number) and includes an example, aiding correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add user terminal to account'), specifies the key constraint ('won't start service'), and differentiates from sibling tools like delete_user_terminals_by_device_id and post_user_terminals_by_device_id_reboot. It also explains the prerequisite for service line assignment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that the tool adds a terminal without starting service, and notes that terminals must be on the account before being added to a service line. This provides clear context for when to use the tool, though it does not explicitly list 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.
post_user_terminals_by_device_id_rebootCDestructive
Reboot user terminal β Required permission: Device command and configuration, Edit. β [POST /public/v2/user-terminals/{deviceId}/reboot]
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | User terminal ID, kit serial number, or dish serial number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, but description adds minimal behavioral context beyond that. It does not describe reboot effects (e.g., immediate, impact on sessions) or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise, including the permission requirement and endpoint. However, it could be better structured with clear separation of information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain the return value or behavior. It lacks this context, leaving the agent uncertain about what happens after the reboot command is issued.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for deviceId. The tool's description adds no additional parameter semantics, but baseline 3 is appropriate given schema covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Reboot user terminal' clearly indicating the action and resource. Among siblings, post_routers_by_router_id_reboot covers router reboots, so the tool is sufficiently distinguished by resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The required permission is mentioned, but no context on prerequisites or comparisons to sibling tools like post_routers_by_router_id_reboot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_addresses_by_address_reference_idB
Update address β Required permission: Account information, Edit. β [PUT /public/v2/addresses/{addressReferenceId}]
| Name | Required | Description | Default |
|---|---|---|---|
| addressReferenceId | Yes | Reference Id of address to update | |
| addressLines | Yes | The address lines for the address. Example: 1 Rocket Road | |
| locality | No | The town/locality of the address. Example: Hawthorne | |
| administrativeArea | No | The administrative area of the address. Example: California | |
| administrativeAreaCode | Yes | The administrative area code of the address. Example: CA | |
| region | No | The region of the address. Example: United States | |
| regionCode | Yes | The region code of the address. Example: US | |
| postalCode | No | The postal code of the address. Example: 90250-6844 | |
| metadata | No | Optional field that can be used to store information about the address for external purposes | |
| formattedAddress | Yes | A user readable address. Example: 1 Rocket Road, Hawthorne, CA 90250-6844, US | |
| latitude | Yes | The required latitude of the address. Example: 33.92 | |
| longitude | Yes | The required longitude of the address. Example: -118.32 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive mutation. The description adds the HTTP method and endpoint, but does not discuss idempotency, partial update semantics, or validation behavior. It provides minimal additional behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single line with essential info (action, permission, endpoint). It is front-loaded and to the point, but it may be too terse given the complexity of the tool (12 parameters, no output schema).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters and no output schema, the description is incomplete. It does not explain what the response looks like, error conditions, or whether it supports partial updates. The agent lacks context to fully understand the tool's behavior beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to explain parameters. The description adds no additional parameter-level insight beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update address' as the action, and the name and endpoint make it specific to updating an address by reference ID. However, it does not elaborate on what fields or behaviors are unique to this tool compared to other update tools, but the sibling context makes it distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission ('Account information, Edit') but lacks guidance on when to use this tool versus alternatives like creating a new address (post_addresses) or reading an address (get_addresses_by_address_reference_id). No prerequisites or restrictions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_contacts_by_subject_idB
Update contact β Required permission: Admin Only - API User Management, Edit.Update contact on the authenticated account. β [PUT /public/v2/contacts/{subjectId}]
| Name | Required | Description | Default |
|---|---|---|---|
| subjectId | Yes | Subject Id of the contact to be updated. | |
| roles | No | Contact roles on the account. | |
| phoneNumber | No | Contact phone number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's 'Update contact' is consistent. It adds the required permission, which is helpful. However, it does not disclose whether the update is partial or full, idempotency, or side effects beyond basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with purpose and permission. The <br/> and HTTP path are somewhat redundant but not excessive. Could be slightly more concise, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return values or behavior on success. It does not mention response details or error conditions. The tool has 3 parameters and performs a mutation, so more context is needed for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The tool description adds no additional meaning beyond the schema, e.g., format for phoneNumber or structure for roles. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update contact' and includes the HTTP method and path, making the tool's purpose clear. It distinguishes from sibling tools like post_contacts (create) and delete_contacts_by_subject_id (delete) through the verb and resource. However, it does not explicitly differentiate from other update tools for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It implies usage for updating existing contacts but does not mention scenarios or contrast with create (post_contacts) or delete (delete_contacts_by_subject_id). Missing context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_routers_configs_assignA
Router config assignment β Required permission: Device configuration assignment, Edit.Assign the config (or none) to the routers. For each router if it is currently online, the config will immediately be sent to the router. Else, the config will be sent to the router when it comes online. Configs are sent to the router within 1-2 minutes. On error no assignment occurs. β [PUT /public/v2/routers/configs/assign]
| Name | Required | Description | Default |
|---|---|---|---|
| configId | No | Config id (or none) to assign to routers | |
| routerIds | Yes | RouterIds to immediately update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: configs are sent within 1-2 minutes, immediate if online, queued if offline, and no assignment on error. Annotations only indicate non-read-only and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is moderately concise but includes unnecessary details like permission inline. Could be tightened without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately covers behavior for online/offline routers, latency, error handling, and permission requirements. Sufficient for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description adds meaning by stating config can be 'none' (removing assignment), which is not evident from schema. Schema descriptions are basic; description compensates with usage hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it assigns a config to routers, with specific verb 'assign' and resource 'routers/configs'. It distinguishes from sibling tools like put_routers_configs_by_config_id (update config details) and put_routers_configs_default (set default config) by focusing on assignment to routers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context: required permission, online/offline behavior, and latency. However, it does not explicitly state when to use this tool vs alternatives (e.g., put_routers_configs_by_config_id for updating config details) or 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.
put_routers_configs_by_config_idA
Update router config β Required permission: Device command and configuration, Edit.Update a given router config. Any router assigned to this config will immediately receive the update if it is online. Otherwise, the router will receive the update when it comes online. β [PUT /public/v2/routers/configs/{configId}]
| Name | Required | Description | Default |
|---|---|---|---|
| configId | Yes | Config Id | |
| nickname | No | Nickname | |
| routerConfigJson | Yes | Router config json contents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by explaining immediate or deferred update propagation. No contradiction with readOnlyHint=false and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded action statement. Includes permission and endpoint, but HTML line breaks and bracketed endpoint slightly clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers propagation behavior but lacks details on response format, idempotency, or edge cases. Adequate for a simple update tool, but incomplete for full agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions. The tool description does not add additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update router config' and explains the effect on assigned routers. Distinguishes from sibling read (get_routers_configs_by_config_id) and create (post_routers_configs) operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required permission and the propagation behavior, but does not explicitly provide when-to-use or when-not-to-use guidance versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_routers_configs_defaultA
Set default router config β Required permission: Device configuration assignment, Edit.Set the default router config on the account. Use an empty string to remove the default config from the account. Any NEW routers on this account will be assigned this config. β [PUT /public/v2/routers/configs/default]
| Name | Required | Description | Default |
|---|---|---|---|
| configId | Yes | ConfigId or none to set as account default config. Use empty string to clear default config setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate not read-only and not destructive. The description adds permission requirements and clarifies the effect on new routers. It does not detail idempotency or other behavioral traits, but the added context is sufficient for this simple mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus endpoint, no fluff. It front-loads the purpose and permission, then explains parameter usage. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description covers purpose, permission, parameter behavior, effect, and endpoint. It is complete and leaves no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes the 'configId' parameter. The description adds the crucial nuance: using an empty string removes the default config, which is not in the schema description. This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and resource 'default router config', and specifies the action: setting the default config on the account. It distinguishes from sibling tools like get_routers_configs_default (read) and put_routers_configs_assign (assign to routers) by focusing on the default setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides required permissions and explicitly mentions using an empty string to remove the default config. It explains the effect on new routers but does not compare with alternative tools like put_routers_configs_by_config_id or put_routers_configs_assign, leaving some usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_routers_sandbox_heartbeatA
Update sandbox heartbeat β Required permission: Device command and configuration, Edit.Heartbeats verify the health of enterprise systems that manage router sandboxing. If heartbeats are not received for an account, Starlink API will instruct routers under the account disable sandboxes until reboot. β [PUT /public/v2/routers/sandbox/heartbeat]
| Name | Required | Description | Default |
|---|---|---|---|
| healthy | Yes | True if client systems are healthy, false otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds behavioral context about the importance of heartbeats and the system's reaction to missing them, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the action, and includes permission and endpoint information. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one boolean parameter, no output schema), the description sufficiently covers purpose, required permission, and system implications. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear description for the sole parameter 'healthy'. The description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Update sandbox heartbeat' and explains the role of heartbeats in verifying health of enterprise systems. It distinguishes this tool from siblings, as no other heartbeat tool exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission and the consequence of not sending heartbeats, providing clear context for when to use this tool. However, it does not explicitly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_service_lines_by_service_line_number_data_recurringA
Set recurring data blocks on service line β Required permission: Service plan, Edit.Service line must be on a top up plan β [PUT /public/v2/service-lines/{serviceLineNumber}/data/recurring]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| recurringDataBlocks | No | Recurring data blocks to configure | |
| dataPoolId | No | If provided, onboard the service line onto an existing data pool. The data pool must be multi-service-line enabled. This parameter is mutually exclusive with RecurringDataBlocks. | |
| applyToCurrentMonth | No | When true, creates additional blocks for the current billing cycle so the current month data block counts match the new recurring configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only or destructive. The description adds the required permission and the prerequisite (top-up plan), which are useful behavioral constraints. However, it does not disclose additional traits like whether the operation overrides existing recurring blocks or how it interacts with billing cycles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two brief segments to convey the action, permission, prerequisite, and HTTP method/URL. Every part earns its place with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description covers the basics (permission, prerequisite) but lacks explanation of behavioral nuances like how recurring data blocks work, override behavior, or billing cycle implications. It is adequate but not complete for a complex configuration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the schema. The description does not add further semantics beyond what the schema already provides (e.g., mutual exclusivity of dataPoolId and recurringDataBlocks is only in schema). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set recurring data blocks') and the resource ('on service line'). It also includes required permission and prerequisite (top up plan), giving a clear purpose. However, it does not explicitly differentiate from sibling tools like top-up or opt-in operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (set recurring blocks) and includes prerequisites (permission, top-up plan), but lacks explicit when-not-to-use or comparison with alternatives (e.g., one-time top-up via post_service_lines_by_service_line_number_data_top_up). It offers implied usage guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_service_lines_by_service_line_number_nicknameB
Set service line nickname β Required permission: Service plan, Edit. β [PUT /public/v2/service-lines/{serviceLineNumber}/nickname]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| nickname | Yes | New nickname for the existing service line. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly and non-destructive. The description adds the required permission ('Service plan, Edit'), which is useful beyond annotations, but does not discuss idempotency, side effects, or overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of a single line with purpose, permission, and endpoint. It is front-loaded with the action, but the endpoint URL is redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers basic functionality and permissions. However, it lacks context about when to use this vs. other service line PUT tools (e.g., for product or public IP).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for parameter descriptions (serviceLineNumber, nickname). The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set service line nickname', which is a specific verb+resource. It distinguishes from sibling PUT operations (e.g., product, public_ip) by targeting only the nickname field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like other PUT operations on service lines. The required permission is mentioned, but no when-not-to-use or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_service_lines_by_service_line_number_productC
Update service line product β Required permission: Service plan, Edit. β [PUT /public/v2/service-lines/{serviceLineNumber}/product]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| productReferenceId | Yes | Product Id. | |
| recurringDataBlocks | No | Recurring data blocks to configure. | |
| dataPoolId | No | Pre-Release: If provided, onboard the service line onto an existing multi-service-line data pool. This parameter is mutually exclusive with RecurringDataBlocks. Available for select audiences only. | |
| delayUpdate | No | Specifies when the change will be applied. True forces changes to be scheduled on the next billing cycle, False forces changes to occur immediately, Null uses legacy logic allowing upgrades to occur immediately and downgrades to be delayed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by specifying the required permission: 'Service plan, Edit'. This informs the agent of authorization needs. However, it does not disclose other behavioral traits like side effects, data modification scope, or whether the update is immediate or scheduled. Annotations already indicate it is not read-only and not destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, containing only a purpose statement and permission note. However, it is not well-structured; it uses em dashes without clear formatting. While every sentence earns its place, the brevity sacrifices completeness and clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and no output schema, the description should explain the return behavior, success/failure conditions, or what happens after update. It lacks this context, making it incomplete for an agent to fully understand the tool's behavior beyond the basic operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all parameters are sufficiently documented. The tool description does not add any additional meaning to the parameters, leaving the schema to handle them. Thus, the description adds no extra semantic value, but the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation 'Update service line product', specifying both the verb and the resource. It distinguishes from sibling tools that update other aspects like nickname, data_recurring, or public_ip. However, it does not elaborate on what updating the product entails, but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like put_service_lines_by_service_line_number_data_recurring or other update tools. It simply states the operation without any context of usage scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_service_lines_by_service_line_number_public_ipA
Set service line public IP setting β Required permission: Device command and configuration, Edit.Enable or disable public ip setting on a service line β [PUT /public/v2/service-lines/{serviceLineNumber}/public-ip]
| Name | Required | Description | Default |
|---|---|---|---|
| serviceLineNumber | Yes | Service line number | |
| publicIp | Yes | If public IP should be enabled or not |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds valuable context about required permissions and the HTTP method, but does not detail side effects or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary action, and includes permission and endpoint info in just two sentences with no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple boolean toggle with two parameters and annotations, the description covers main functionality, permission, and endpoint. It is adequate but could mention return values or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add significant meaning beyond what the schema provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and resource 'service line public IP setting', and distinguishes from sibling tools by specifying the public IP functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (enable/disable public IP) and mentions required permissions, but does not explicitly exclude alternatives or provide when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_user_terminals_by_device_id_l2vpnB
Set L2VPN VLANs for user terminal β Required permission: Device configuration assignment, Edit.Terminal must be on subscription that allows L2VPN. Maximum 2 circuits per Starlink PoP. Use null or empty circuit list to clear all L2VPN circuits for terminal. See /user-terminals/available-circuits for all configurable circuits and associated Starlink PoP. β [PUT /public/v2/user-terminals/{deviceId}/l2vpn]
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | User terminal ID, kit serial number, or dish serial number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: permission, subscription constraint, max circuits, clearing mechanism. Annotations are minimal; description fills some gaps but does not discuss side effects, idempotency, or success/failure responses. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with the main action but includes multiple sentences with HTML line breaks. It is verbose and could be more concise while retaining essential details like permissions and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers permissions, constraints, and clearing logic, but fails to explain the missing parameter for circuits (input schema only has deviceId). No output schema, so description should describe expected result or response, which it does not. This omission makes the tool incomplete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'deviceId' described as 'User terminal ID, kit serial number, or dish serial number.' The tool description does not add additional meaning beyond this schema description, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Set L2VPN VLANs for user terminal', establishing a specific verb and resource. It distinguishes from sibling tools like get_user_terminals_l2vpn for retrieval. However, the input schema lacks parameters for the VLAN/circuit data, causing confusion about how to specify the actual settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: required permission, subscription requirement, maximum 2 circuits per PoP, and how to clear circuits. It references another endpoint for available circuits, aiding decision-making. No explicit when-not-to-use or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_user_terminals_configs_assignA
User terminal config assignment β Required permission: Device configuration assignment, Edit.Assign the config (or none) to the user terminals. For each terminal if it is currently online, the config will immediately be sent. Else, the config will be sent when it comes online. On error no assignment occurs. Currently terminal configIds are only visible on starlink website. β [PUT /public/v2/user-terminals/configs/assign]
| Name | Required | Description | Default |
|---|---|---|---|
| configId | No | Config id (or none) to assign to user terminals | |
| userTerminalIds | Yes | UserTerminalIds to immediately update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by detailing the behavior for online vs. offline terminals (immediate vs. delayed sending) and error handling (no assignment on error). It also mentions required permissions. Annotations only indicate non-read-only and non-destructive, so the description adds significant value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise, starting with the core action and permission, then explaining behavior, error handling, and a note. It is front-loaded but includes some redundant HTML formatting. Every sentence adds information, but could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and only two parameters, the description covers the tool's purpose, preconditions (permission), runtime behavior (online/offline), and error handling. It is sufficient for an agent to understand the tool's effect, though it omits details like idempotency or override behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The description repeats that configId can be 'none' (already in schema) and adds no new parameter-level meaning. Baseline is 3, and the description does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'assign' and the resource 'user terminals configs'. It explicitly says 'User terminal config assignment' and specifies the action of assigning a config or none, which directly aligns with the tool name and distinguishes it from sibling tools like put_routers_configs_assign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a required permission but does not explicitly state when to use this tool over alternatives. It provides implicit context (assign config to user terminals) but lacks guidance on when not to use it or comparisons with related tools like put_routers_configs_assign. The note about configIds being visible only on the website adds minor context but not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct resource and action combinations, making them easily distinguishable. Overlaps are minimal, e.g., between list and single-resource getters, but descriptions clarify.
The naming generally follows a verb_resource_by_identifier pattern, but there are a few outliers like 'post_data_usage_query' and 'put_routers_sandbox_heartbeat' that break the pattern. Overall, it is mostly consistent.
With 55 tools, the server is comprehensive but could be considered heavy for typical use. The count is justified by the broad scope of enterprise management, but it borders on too many.
The tool set covers CRUD and additional operations for most core entities (account, service lines, user terminals, routers, data). Minor gaps exist, such as a single flight endpoint, but the primary domain is well-covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA production-ready MCP server that provides secure, delegated access to Microsoft 365 services including Email, SharePoint, OneDrive, and Calendar. It enables AI models to search messages, browse files, manage calendar events, and parse document contents using OAuth 2.1 authentication.MIT
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.53
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.62MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WiFiWithoutWalls/starlink-enterprise-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server