Rootly MCP server
OfficialSummary: The Rootly MCP server exposes Rootly incident-management and related API capabilities to MCP clients.
List, search, and create incidents, including paginated incident search and fetching all matches.
Manage alerts: list alerts, list incident alerts, attach alerts to incidents, and create alerts.
Create and list incident action items, incident types, environments, functionalities, workflows, services, severities, and teams.
List users and get the current authenticated user.
List available Rootly API endpoints.
Broader deployments also support on-call, schedules, post-incident reviews, dashboards, playbooks, monitoring, and many more Rootly tools; write actions depend on server configuration.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Rootly MCP serversearch for recent incidents with status open"
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.
Rootly MCP Server
An MCP server for the Rootly API for Cursor, Windsurf, Claude, and other MCP clients.

Quick Start
Use the hosted MCP server. No local installation required.
Hosted Transport Options
Streamable HTTP (recommended):
https://mcp.rootly.com/mcpCode Mode:
https://mcp.rootly.com/mcp-codemodeSSE (deprecated, removed after 2026-11-20):
https://mcp.rootly.com/sse
SSE is deprecated. The hosted https://mcp.rootly.com/sse endpoint and the self-hosted --transport sse option will be removed after 2026-11-20. Switch your client to Streamable HTTP (https://mcp.rootly.com/mcp) or Code Mode (https://mcp.rootly.com/mcp-codemode); for most clients that means changing the URL and, if your client config has one, setting the transport to http/streamable-http. SSE responses now carry Deprecation, Sunset and Link: rel="successor-version" headers.
Hosted tool profiles:
Full (default): use the URLs above as-is
Slim (~70 tools): add
?tool_profile=slimto the hosted URL, for examplehttps://mcp.rootly.com/mcp?tool_profile=slimHeader alternative: send
X-Rootly-Tool-Profile: slimServer-wide default: set
ROOTLY_MCP_HOSTED_TOOL_PROFILE=full|slimExact custom override: set
ROOTLY_MCP_ENABLED_TOOLS=...
General Remote Setup
With OAuth2 (recommended):
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp"
}
}
}Your MCP client handles OAuth2 login automatically — a browser window opens for you to authenticate with Rootly. No API token needed.
With API Token:
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
}
}
}
}Code Mode:
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp-codemode"
}
}
}If your config still points at https://mcp.rootly.com/sse, replace it with https://mcp.rootly.com/mcp before 2026-11-20 (SSE is deprecated, see above).
Agent Setup
With OAuth2 (recommended):
claude mcp add --transport http rootly https://mcp.rootly.com/mcp
# Code Mode:
claude mcp add --transport http rootly-codemode https://mcp.rootly.com/mcp-codemodeWith API Token:
claude mcp add --transport http rootly https://mcp.rootly.com/mcp \
--header "Authorization: Bearer YOUR_ROOTLY_API_TOKEN"Manual Configuration — Create .mcp.json in your project root:
{
"mcpServers": {
"rootly": {
"type": "http",
"url": "https://mcp.rootly.com/mcp"
}
}
}Install the extension:
gemini extensions install https://github.com/rootlyhq/rootly-mcp-serverOr configure manually in ~/.gemini/settings.json:
{
"mcpServers": {
"rootly": {
"command": "uvx",
"args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}Add to .cursor/mcp.json or ~/.cursor/mcp.json:
With OAuth2 (recommended):
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp"
}
}
}With API Token:
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_ROOTLY_API_TOKEN>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
With OAuth2 (recommended):
{
"mcpServers": {
"rootly": {
"serverUrl": "https://mcp.rootly.com/mcp"
}
}
}With API Token:
{
"mcpServers": {
"rootly": {
"serverUrl": "https://mcp.rootly.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_ROOTLY_API_TOKEN>"
}
}
}
}Add to ~/.codex/config.toml:
With OAuth2 (recommended):
[mcp_servers.rootly]
url = "https://mcp.rootly.com/mcp"With API Token:
[mcp_servers.rootly]
url = "https://mcp.rootly.com/mcp"
bearer_token_env_var = "ROOTLY_API_TOKEN"With OAuth2 (recommended):
Add to claude_desktop_config.json:
{
"mcpServers": {
"rootly": {
"url": "https://mcp.rootly.com/mcp"
}
}
}Claude Desktop handles OAuth2 login automatically.
With API Token (via mcp-remote):
{
"mcpServers": {
"rootly": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.rootly.com/mcp",
"--transport",
"http",
"--header",
"Authorization: Bearer <YOUR_ROOTLY_API_TOKEN>"
]
}
}
}Register the hosted server in Unity Gateway so Supervisor Agent, AI Playground, and other Databricks agents can use it:
In your workspace, open Unity Gateway > MCPs, click + MCP, and choose Connect an existing MCP server.
Pick a catalog and schema, name the MCP, and create a new connection with URL
https://mcp.rootly.com/mcp.Choose an authentication method:
Dynamic Client Registration (recommended): each user signs in to Rootly with their own account.
Bearer token: paste a Rootly API token.
Click Create & load tools, click Login if prompted, and select the tools to expose.
Or create the connection with the Databricks SDK:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import catalog as c
WorkspaceClient().connections.create(
name="rootly_connection",
parent="schemas/main.default",
connection_type=c.ConnectionType.HTTP,
options={
"host": "https://mcp.rootly.com",
"port": "443",
"base_path": "/mcp",
"bearer_token": "<YOUR_ROOTLY_API_TOKEN>",
},
)The full profile exposes about 250 tools. Use Unity Gateway tool selection to expose only what your agents need. See docs/databricks-marketplace.md for the Marketplace listing details.
Related MCP server: OpsLevel MCP
Rootly CLI
Standalone CLI for incidents, alerts, services, and on-call operations.
Install via Homebrew:
brew install rootlyhq/tap/rootly-cliOr via Go:
go install github.com/rootlyhq/rootly-cli/cmd/rootly@latestFor more details, see the Rootly CLI repository.
Alternative Installation (Local)
Run the MCP server locally if you do not want to use the hosted service.
Prerequisites
Python 3.12 or higher
uvpackage managercurl -LsSf https://astral.sh/uv/install.sh | sh
API Token Types
Choose the token type based on the access you need:
Global API Key: Full access across the Rootly instance. Best for organization-wide visibility.
Team API Key: Access limited to entities owned by that team.
Personal API Key: Access matches the user who created it.
A Global API Key is recommended for organization-wide queries and for actions that modify data, especially when workflows may span multiple teams, schedules, or incidents.
With uv
{
"mcpServers": {
"rootly": {
"command": "uv",
"args": [
"tool",
"run",
"--from",
"rootly-mcp-server",
"rootly-mcp-server"
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>",
"ROOTLY_MCP_ENABLE_WRITE_TOOLS": "true"
}
}
}
}Self-Hosted Transport Options
Choose one transport per server process:
Streamable HTTP endpoint path:
/mcpSSE (deprecated, removed after 2026-11-20) endpoint path:
/sse.--transport sselogs a deprecation warning at startup; use--transport streamable-httpinstead.Code Mode (experimental) endpoint path:
/mcp-codemodein hosted dual-transport mode. Oneexecutecall may make at most 50 tool calls; setROOTLY_CODE_MODE_MAX_TOOL_CALLSto a positive integer to change that.
Hosted and self-hosted deployments now both expose the full tool surface by default.
Hosted default: full surface
Hosted slim profile: about 70 high-usage tools via
?tool_profile=slimSelf-hosted default: full surface
To restrict either deployment to read-only tools, start the server with --no-enable-write-tools or set ROOTLY_MCP_ENABLE_WRITE_TOOLS=false.
For hosted clients that want the smaller remote profile, append ?tool_profile=slim to the MCP URL or send X-Rootly-Tool-Profile: slim.
AgentCat and Sentry telemetry
Hosted deployments can send MCP telemetry to AgentCat by setting
ROOTLY_MCPCAT_PROJECT_ID. To also export AgentCat events to Sentry, provide
SENTRY_DSN through the deployment's secret store. The optional
ENVIRONMENT defaults to production, and SENTRY_RELEASE defaults to the
installed Rootly MCP Server version. Sentry performance tracing is enabled when
the exporter is configured.
Free-form event text is redacted and actor names are omitted from Sentry-bound
telemetry; stable internal actor IDs remain available for correlation.
AgentCat's enable_tool_call_context and enable_report_missing options are
disabled. The SDK does not add an analytics context parameter or the
get_more_tools feedback tool. Tool-call telemetry remains enabled, including
arguments, responses, timing, errors, and configured identity information,
subject to the existing redaction hooks.
Telemetry runs on AgentCat v2 (MCP 2026-07-28 spec). Session correlation uses the
SDK's hook mode (resolve_session_id): the server derives the session from the
request. The key always starts with the caller (authenticated user, or a digest
of the token), then the client's Mcp-Session-Id when it sends one, otherwise
the UTC hour. No session_id parameter or session instructions are added to
tool schemas. Clients holding a cached tool
list that still send context or session_id are tolerated; the stray
argument is dropped before validation. initialize and tools/list events are
no longer published by the SDK.
To override the hosted or self-hosted default profile entirely, set ROOTLY_MCP_ENABLED_TOOLS (or pass --enabled-tools) with a comma-separated allowlist of exact tool names. When that variable is set, it fully replaces the default selection.
To expose only a specific subset of MCP tools on a self-hosted deployment, set ROOTLY_MCP_ENABLED_TOOLS (or pass --enabled-tools) with a comma-separated allowlist of exact tool names, for example list_incidents,get_incident,get_server_version.
PostHog MCP analytics
Setting POSTHOG_PROJECT_TOKEN (and optionally POSTHOG_HOST, default
https://us.i.posthog.com) sends $mcp_* events to PostHog with the same
privacy settings as AgentCat: no injected context, conversation_id or
llm_model parameters, credential scrubbing before send, and hosted users
identified by Rootly user ID only.
When AgentCat is also configured, both run side by side. posthog.mcp's MCP SDK
1.x code path cannot handle AgentCat's middleware directly, so the server wraps
it in an adapter first. On the stateless hosted transport, PostHog sessions are
tied together through the Mcp-Session-Id header minted at initialize.
AgentCat's session resolver also reads that header (scoped to the
authenticated caller), so with PostHog on, AgentCat groups those clients'
calls per connection instead of per hour.
OpenAI Apps domain verification
Hosted deployments expose an unauthenticated domain-verification endpoint used by the OpenAI plugin directory:
Endpoint:
GET /.well-known/openai-apps-challengeEnvironment variable:
ROOTLY_OPENAI_APPS_CHALLENGE_TOKEN
Set ROOTLY_OPENAI_APPS_CHALLENGE_TOKEN to the token generated in the OpenAI submission portal. The endpoint returns that exact token as text/plain (with Cache-Control: no-store), and returns 404 when the variable is unset or empty. The token is read from the environment at request time — never hardcode or commit it. The route is served on both the dual-transport (--transport both) and profiled streamable-HTTP hosted deployments and is not subject to Bearer authentication.
To discover the exact tool names available under your current self-hosted configuration, run:
ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
uv run python -m rootly_mcp_server --list-toolsThis prints the effective MCP tool names after applying your current settings, including ROOTLY_MCP_ENABLE_WRITE_TOOLS and ROOTLY_MCP_ENABLED_TOOLS.
Smoke-test a self-hosted allowlist:
ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
ROOTLY_MCP_ENABLED_TOOLS=list_incidents,get_incident,get_server_version \
uv run python -m rootly_mcp_server --transport streamable-http --log-level ERRORThen connect an MCP client to http://127.0.0.1:8000/mcp and verify tools/list returns only:
get_server_version
get_incident
list_incidentsTo include specific write tools for self-hosted testing, add both the write flag and the allowlist:
ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
ROOTLY_MCP_ENABLE_WRITE_TOOLS=true \
ROOTLY_MCP_ENABLED_TOOLS=create_incident,create_workflow_task,list_teams \
uv run python -m rootly_mcp_server --transport streamable-http --log-level ERRORExample Docker run (Streamable HTTP):
docker run -p 8000:8000 \
-e ROOTLY_TRANSPORT=streamable-http \
-e ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
-e ROOTLY_MCP_ENABLE_WRITE_TOOLS=true \
rootly-mcp-serverExample Docker run (SSE, deprecated: removed after 2026-11-20, use Streamable HTTP above):
docker run -p 8000:8000 \
-e ROOTLY_TRANSPORT=sse \
-e ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
rootly-mcp-serverExample Docker run (Dual transport + Code Mode; the /sse endpoint it also serves is deprecated):
docker run -p 8000:8000 \
-e ROOTLY_TRANSPORT=both \
-e ROOTLY_API_TOKEN=<YOUR_ROOTLY_API_TOKEN> \
rootly-mcp-serverWorkflow-Focused Tool Subsets
The full hosted and self-hosted surface exposes 200+ tools. If you want tighter workflow-specific subsets, use ROOTLY_MCP_ENABLED_TOOLS:
🚨 Incident Response (25 tools)
Essential tools for emergency responders and incident commanders
ROOTLY_MCP_ENABLED_TOOLS="list_incidents,get_incident,create_incident,update_incident,search_incidents,find_related_incidents,suggest_solutions,create_incident_action_item,list_incident_action_items,update_incident_form_field_selection,list_teams,get_current_user,list_services,list_severities,get_alert,list_alerts,get_alert_by_short_id,list_escalation_policies,get_escalation_policy,list_on_call_roles,list_schedules,get_schedule_shifts,get_oncall_handoff_summary,get_shift_incidents,list_endpoints"📅 On-Call Management (33 tools)
For schedule coordinators and on-call managers
ROOTLY_MCP_ENABLED_TOOLS="list_schedules,get_schedule,update_schedule,get_schedule_shifts,list_shifts,create_schedule_rotation,update_schedule_rotation,list_schedule_rotations,get_schedule_rotation,list_schedule_rotation_users,update_schedule_rotation_user,create_on_call_shadow,update_on_call_shadow,list_on_call_shadows,create_override_shift,update_override_shift,list_override_shifts,list_on_call_roles,update_on_call_role,get_oncall_schedule_summary,get_oncall_shift_metrics,check_responder_availability,create_override_recommendation,list_teams,get_team,list_users,get_user,get_current_user,list_escalation_policies,update_escalation_policy,list_escalation_paths,update_escalation_path,list_escalation_levels"📊 Monitoring & Alerting (40 tools)
For platform teams setting up observability
ROOTLY_MCP_ENABLED_TOOLS="list_alerts,get_alert,get_alert_by_short_id,create_alert_group,update_alert_group,list_alert_groups,create_alert_routing_rule,update_alert_routing_rule,list_alert_routing_rules,list_alert_events,get_alert_event,update_alert_event,create_heartbeat,update_heartbeat,list_heartbeats,get_heartbeat,create_pulse,update_pulse,list_pulses,get_pulse,create_dashboard,update_dashboard,list_dashboards,get_dashboard,create_dashboard_panel,update_dashboard_panel,list_status_pages,get_status_page,update_status_page,list_status_page_templates,get_status_page_template,list_communications_templates,update_communications_template,create_live_call_router,update_live_call_router,list_services,list_teams,get_current_user,list_environments,list_severities,list_endpoints"📋 Post-Incident Analysis (30 tools)
For SREs doing retrospectives and process improvement
ROOTLY_MCP_ENABLED_TOOLS="get_incident,update_incident,find_related_incidents,suggest_solutions,list_incident_action_items,create_incident_action_item,update_incident_form_field_selection,create_post_incident_review,update_post_incident_review,list_post_incident_reviews,get_post_incident_review,create_retrospective_step,update_retrospective_step,list_retrospective_steps,create_retrospective_process,update_retrospective_process,list_retrospective_processes,create_playbook,update_playbook,list_playbooks,get_playbook,create_playbook_task,update_playbook_task,list_causes,get_cause,update_cause,list_incident_types,get_incident_type,update_incident_type,get_current_user"📈 Analytics & Reporting (15 tools)
For leadership and metrics teams (read-only focus)
ROOTLY_MCP_ENABLED_TOOLS="list_incidents,search_incidents,collect_incidents,list_teams,list_services,list_schedules,get_oncall_shift_metrics,get_shift_incidents,list_dashboards,get_dashboard,list_alerts,list_heartbeats,list_pulses,get_current_user,list_endpoints"Multiple MCP Instances for Different Teams
You can run multiple MCP instances with different tool subsets:
{
"mcpServers": {
"rootly-incident-response": {
"command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
"env": {
"ROOTLY_API_TOKEN": "<token>",
"ROOTLY_MCP_ENABLED_TOOLS": "list_incidents,get_incident,create_incident,find_related_incidents,suggest_solutions..."
}
},
"rootly-oncall-management": {
"command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
"env": {
"ROOTLY_API_TOKEN": "<token>",
"ROOTLY_MCP_ENABLED_TOOLS": "list_schedules,update_schedule,create_override_shift,get_oncall_shift_metrics..."
}
}
}
}With uvx
{
"mcpServers": {
"rootly": {
"command": "uvx",
"args": [
"--from",
"rootly-mcp-server",
"rootly-mcp-server"
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}Features
Dynamic Tool Generation: Automatically creates MCP resources from Rootly's OpenAPI (Swagger) specification
Smart Pagination: Uses bounded pagination and compact incident responses to prevent context window overflow
API Filtering: Limits exposed API endpoints for security and performance
Intelligent Incident Analysis: Smart tools that analyze historical incident data
find_related_incidents: Uses TF-IDF similarity analysis to find historically similar incidentssuggest_solutions: Mines past incident resolutions to recommend actionable solutions
MCP Resources: Exposes incidents, teams, on-call status, and workflow guides as structured resources for AI context
Intelligent Pattern Recognition: Automatically identifies services, error types, and resolution patterns
On-Call Health Integration (self-hosted only): Detects workload health risk in scheduled responders
Supported Tools
The default tool surface depends on deployment profile:
Hosted default: about 218 tools
Hosted slim profile: about 70 tools
Self-hosted default: about 218 tools
Custom Agentic Tools
check_oncall_health_risk- self-hosted onlycheck_responder_availabilitycollect_incidentscreate_incident- create a new incident with a scoped set of fields for agent workflowscreate_override_recommendationfind_related_incidentsget_incident- retrieve a single incident for direct verification, including PIR-related fieldsget_alert_by_short_idget_investigation- an AI SRE investigation's verdict, evidence, causal chain and open questions (by id, or latest for an alert/incident)get_investigation_progress- follow a running investigation; call again withafter_cursoruntildoneget_oncall_handoff_summaryget_oncall_schedule_summaryget_oncall_shift_metricsget_server_versionget_shift_incidentslist_endpointslist_investigationslist_incidentslist_shiftssearch_incidentsstart_investigation,cancel_investigation- start or cancel an AI SRE investigation; write toolssuggest_solutionsupdate_incident- update native incident fields with severity validation; retrospective status changes require the Rootly UI
OpenAPI-Generated Tools
Tool naming: all tools use
snake_case. The historicalcamelCasenames (e.g.getScheduleShifts,listIncidents) are no longer advertised intools/list, but remain callable as hidden aliases — they are transparently routed to theirsnake_casecanonical. Update configs andROOTLY_MCP_ENABLED_TOOLSallowlists to thesnake_casenames; legacy camelCase allowlist entries are auto-canonicalized.
list_workflow_runs
create_incident_action_item
create_incident_form_field_selection
create_workflow_task
get_alert
get_alert_event
get_alert_group
get_alert_routing_rule
get_alert_source
get_alert_urgency
get_catalog
get_catalog_entity
get_catalog_entity_property
get_catalog_property
get_cause
get_current_user
get_custom_form
get_environment
get_escalation_level
get_escalation_path
get_escalation_policy
get_form_field
get_form_field_option
get_functionality
get_functionality_incidents_chart
get_functionality_uptime_chart
get_incident_action_items
get_incident_form_field_selection
get_incident_type
get_on_call_role
get_on_call_shadow
get_override_shift
get_schedule
get_schedule_rotation
get_schedule_shifts
get_service
get_service_incidents_chart
get_service_uptime_chart
get_severity
get_status_page
get_status_page_template
get_team
get_team_incidents_chart
get_user
get_workflow
get_workflow_form_field_condition
get_workflow_group
get_workflow_task
list_alert_events
list_alert_groups
list_alert_routing_rules
list_alert_sources
list_alert_urgencies
list_alerts
list_all_incident_action_items
list_catalog_entities
list_catalog_entity_properties
list_catalog_properties
list_catalogs
list_causes
list_custom_forms
list_environments
list_escalation_levels
list_escalation_levels_paths
list_escalation_paths
list_escalation_policies
list_form_field_options
list_form_fields
list_functionalities
list_incident_action_items
list_incident_alerts
list_incident_form_field_selections
list_incident_types
list_observability_logs
list_observability_patterns
count_observability_logs
list_on_call_roles
list_on_call_shadows
list_override_shifts
list_schedule_rotation_active_days
list_schedule_rotation_users
list_schedule_rotations
list_schedules
list_services
list_severities
list_shifts
list_status_page_templates
list_status_pages
list_teams
list_users
list_workflow_form_field_conditions
list_workflow_groups
list_workflows
list_workflow_tasks
update_environment
update_escalation_level
update_escalation_path
update_escalation_policy
update_functionality
update_incident_type
update_on_call_role
update_on_call_shadow
update_override_shift
update_schedule
update_schedule_rotation
update_service
update_severity
update_team
update_workflow
update_incident_form_field_selection
update_workflow_taskMajor Expansion: This version includes 50+ new endpoints covering communications, dashboards, playbooks, post-incident reviews, monitoring, and advanced form management - while carefully excluding security-sensitive operations like API key management, user creation/deletion, role management, and webhook configuration.
Delete operations remain disabled in the default tool surface.
On-Call Health Integration (Self-Hosted Only)
Integrates with On-Call Health to detect workload health risk in scheduled responders.
check_oncall_health_risk is unavailable on the hosted MCP service, including
the full and slim profiles, SSE, Streamable HTTP, and Code Mode. It is not
registered in hosted mode, so an API key or ROOTLY_MCP_ENABLED_TOOLS allowlist
cannot enable it. Ordinary on-call scheduling and incident tools remain available.
Self-hosted deployments retain this integration. Operators are responsible for appropriate employee disclosure and data handling for their deployment.
Setup
Set the ONCALLHEALTH_API_KEY environment variable:
{
"mcpServers": {
"rootly": {
"command": "uvx",
"args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
"env": {
"ROOTLY_API_TOKEN": "your_rootly_token",
"ONCALLHEALTH_API_KEY": "och_live_your_key"
}
}
}
}Usage
check_oncall_health_risk(
start_date="2026-02-09",
end_date="2026-02-15"
)Returns at-risk users who are scheduled, recommended safe replacements, and action summaries.
Example Skills
Pre-built Claude Code skills:
🚨 Rootly Incident Responder
This skill:
Analyzes production incidents with full context
Finds similar historical incidents using ML-based similarity matching
Suggests solutions based on past successful resolutions
Coordinates with on-call teams across timezones
Correlates incidents with recent code changes and deployments
Creates action items and remediation plans
Provides confidence scores and time estimates
Quick Start:
# Copy the skill to your project
mkdir -p .claude/skills
cp examples/skills/rootly-incident-responder.md .claude/skills/
# Then in Claude Code, invoke it:
# @rootly-incident-responder analyze incident #12345It demonstrates a full incident response workflow using Rootly tools and GitHub context.
On-Call Shift Metrics
Get on-call shift metrics for any time period, grouped by user, team, or schedule. Includes primary/secondary role tracking, shift counts, hours, and days on-call.
get_oncall_shift_metrics(
start_date="2025-10-01",
end_date="2025-10-31",
group_by="user"
)On-Call Handoff Summary
Complete handoff: current/next on-call + incidents during shifts.
# All on-call (any timezone)
get_oncall_handoff_summary(team_ids="team-1,team-2", timezone="America/Los_Angeles")
# Regional filter - only show APAC on-call during APAC business hours
get_oncall_handoff_summary(timezone="Asia/Tokyo", filter_by_region=True)Regional filtering shows only people on-call during business hours (9am-5pm) in the specified timezone.
Returns: schedules with current_oncall, next_oncall, and shift_incidents
MCP Resources for Context
AI agents can access these resources for situational awareness:
incident://{incident_id}- Detailed incident information for specific incidentsteam://{team_id}- Team details including name, color, and metadatarootly://incidents- List of recent incidents for quick referencerootly://oncall-status- Current on-call status across all schedules (critical for incident response)rootly://workflow-guide- Step-by-step workflow guidance for common operations
Example usage: "Check the current on-call status" → AI reads rootly://oncall-status resource
Shift Incidents
Incidents during a time period, with filtering by severity/status/tags.
get_shift_incidents(
start_time="2025-10-20T09:00:00Z",
end_time="2025-10-20T17:00:00Z",
severity="critical", # optional
status="resolved", # optional
tags="database,api", # optional
)Returns: incidents list + summary (counts, avg resolution time, grouping)
Contributing
See CONTRIBUTING.md for developer setup and guidelines.
Play with it on Postman
About Rootly AI Labs
This project was developed by Rootly AI Labs, where we're building the future of system reliability and operational excellence. As an open-source incubator, we share ideas, experiment, and rapidly prototype solutions that benefit the entire community.

Available Tools
274 toolsattach_alertAttach AlertC
Attach alerts to an incident from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/alerts). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false, so the safety profile is covered. The description adds nothing beyond them: 'from provided data' hints at a payload but does not say whether the association is additive, whether duplicates are rejected, or whether re-attaching is safe despite idempotent=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?
A single front-loaded sentence with no wasted words. Its brevity is efficient, though it contributes to the under-specification scored elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutating tool with a nested request envelope and an output schema, yet the description does not explain the data wrapper structure, the expected alert state, or error conditions. An output schema exists, so return values need not be explained, but the input-side and behavioral gaps remain substantial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: incident_id is documented in the schema, and alert_ids has a brief schema description, but the nested 'type'/'attributes' envelope and the meaning of passing null alert_ids are unexplained. 'From provided data' adds no meaning beyond what the schema already shows.
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?
States a verb and resource ('Attach alerts to an incident'), which is enough to distinguish it from pure read siblings like list_incident_alerts, but the trailing phrase 'from provided data' is vague filler that does not clarify the operation. It does not name the closest sibling or explain how it differs from creating/updating alert events.
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 statement of when to use this tool, what prerequisites exist (e.g., that the alerts must already exist), or what alternatives to prefer. The agent must infer everything from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_investigationCancel InvestigationBDestructiveIdempotent
Cancel a running investigation.
| Name | Required | Description | Default |
|---|---|---|---|
| investigation_id | Yes | Investigation id (UUID). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is largely covered. The description adds the useful constraint that the investigation must be running, but it does not explain effects on investigation data, reversibility, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple one-parameter cancellation 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?
An output schema exists and annotations carry the safety and idempotency profile, so the description need not explain return values. For a simple cancel operation, the description is nearly complete, though it could mention the running-state prerequisite more explicitly and what cancellation does to the investigation.
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 single investigation_id parameter is documented as a UUID in the schema. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: cancel an investigation. It is clear what the tool does, but it does not distinguish itself from siblings such as start_investigation, get_investigation, or list_investigations.
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?
It implies the tool applies to a running investigation, but gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent must infer that it should not be used for completed investigations or that get_investigation is for inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_oncall_health_riskCheck Oncall Health RiskARead-only
Check if any at-risk responders (based on On-Call Health analysis) are scheduled for on-call.
Integrates with On-Call Health (oncallhealth.ai) to identify responders with elevated workload health risk and checks if they are scheduled during the specified period. Optionally recommends safe replacement responders.
Privacy: This tool surfaces identifiable employee workload health data from On-Call Health. It is an opt-in feature — an administrator must explicitly configure the ONCALLHEALTH_API_KEY environment variable to enable it.
Available only in self-hosted deployments. Requires ONCALLHEALTH_API_KEY environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date for the on-call period (ISO 8601, e.g., '2026-02-15') | |
| start_date | Yes | Start date for the on-call period (ISO 8601, e.g., '2026-02-09') | |
| och_threshold | No | OCH score threshold for at-risk classification (default: 50.0) | |
| och_analysis_id | No | On-Call Health analysis ID. If not provided, uses the latest analysis | |
| include_replacements | No | Include recommended replacement responders (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description goes well beyond them: it discloses the privacy footprint (identifiable employee workload health data), the opt-in configuration gate, the self-hosted-only constraint, and the optional replacement-recommendation behavior. That is exactly the extra context an agent needs before calling an open-world read that touches sensitive HR data.
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?
Front-loaded with the core purpose, then prerequisites and privacy — good ordering. Slight redundancy: the ONCALLHEALTH_API_KEY requirement is stated twice ('administrator must explicitly configure' and again as 'Requires ONCALLHEALTH_API_KEY environment variable'), and the self-hosted note is appended as a fragment.
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?
Output schema exists, so return values need not be described. With 100% parameter documentation, explicit prerequisites, privacy disclosure, and an output schema, an agent has everything required to decide whether to call it and how to invoke it.
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 adds meaning by framing start_date/end_date as the 'specified period', tying och_analysis_id to 'On-Call Health analysis', and explaining that replacements are optional (include_replacements). It stops short of explaining what the och_threshold score means or what happens when och_analysis_id is null, which the schema only partially covers.
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?
States a specific verb ('check') plus a precise resource ('at-risk responders ... scheduled for on-call') and ties it to a named upstream source (On-Call Health analysis). An agent can distinguish this from sibling tools like check_responder_availability or get_oncall_schedule_summary purely from the description, since those do not involve health-risk scoring.
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?
Gives strong gating context: opt-in feature, administrator must configure ONCALLHEALTH_API_KEY, self-hosted deployments only. It does not name an alternative tool or say 'use X instead when Y', but the availability preconditions are explicit enough that an agent knows when the tool cannot be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_responder_availabilityCheck Responder AvailabilityARead-only
Check if specific users are scheduled for on-call in a date range.
Use this to verify if at-risk users (from On-Call Health) are scheduled, or to check availability before assigning new shifts.
Returns scheduled users with their shifts and total hours, plus users who are not scheduled. Shift times and hours are clipped to the requested window; date-only end dates include that entire UTC day.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date (ISO 8601, e.g., '2026-02-15') | |
| user_ids | Yes | Comma-separated Rootly user IDs to check (e.g., '2381,94178,27965'). Accepts numeric IDs only — use list_users with filter[email] to resolve emails to IDs first. | |
| start_date | Yes | Start date (ISO 8601, e.g., '2026-02-09') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds substantive behavior beyond that, namely that results split into scheduled and not-scheduled users and that shift times and hours are clipped to the requested window. The UTC whole-day inclusion rule for date-only end dates is exactly the kind of edge-case disclosure annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core purpose, then usage, then return behavior. Each sentence adds a distinct fact with no repetition of the title or 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?
An output schema exists, so return values need not be spelled out, and annotations cover safety. The description still supplies the interpretation rules an agent needs (clipping, inclusive UTC day) and the pre-assignment use case, leaving nothing material missing for a 3-parameter read 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 the baseline is 3, but the description adds real semantics beyond the schema: window clipping and the fact that a date-only end date includes that entire UTC day. The user_ids resolution path is documented in the schema rather than the description, so it is not double-counted.
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 names a specific verb and resource ('Check if specific users are scheduled for on-call') and scopes it to a date range and a user list, which separates it from listing tools like list_shifts or get_schedule_shifts. It stops short of naming a sibling explicitly, so it is clear but not fully 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?
It gives two concrete usage scenarios: verifying at-risk users surfaced by On-Call Health, and pre-assignment availability checks. There is no when-not guidance or named alternative for adjacent needs such as viewing a full schedule, so context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collect_incidentsCollect IncidentsARead-only
Collect a bounded working set of incidents across multiple pages for audits and analysis.
Use this instead of list_incidents when you want a compact batch of incidents in one tool call, while keeping payload size under control.
Argument caps: max_results <= 100, batch_size between 10 and 100. Values outside those bounds are clamped and reported, not rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order for incidents; a leading '-' sorts newest first. Supported values: created_at, -created_at, updated_at, -updated_at, started_at, -started_at, in_triage_at, -in_triage_at, mitigated_at, -mitigated_at, resolved_at, -resolved_at | -created_at |
| query | No | Optional free-text search across incident titles and summaries | |
| teams | No | Comma-separated team names or slugs to filter incidents (e.g., 'Infrastructure,platform-team') | |
| status | No | Optional incident status filter (e.g., started, investigating, resolved) | |
| severity | No | Optional severity filter (e.g., critical, high, medium, low) | |
| team_ids | No | Comma-separated Rootly team IDs to filter incidents (e.g., '123,456') | |
| batch_size | No | Number of incidents to request per upstream page while collecting (min: 10, max: 100) | |
| max_results | No | Maximum number of compact incident summaries to collect across pages (max: 100) | |
| service_ids | No | Comma-separated Rootly service IDs to filter incidents (e.g., 'svc-1,svc-2') | |
| started_after | No | Filter incidents that started at or after this ISO 8601 timestamp | |
| started_before | No | Filter incidents that started at or before this ISO 8601 timestamp | |
| custom_field_selected_option_ids | No | Comma-separated custom field option IDs for structured incident filtering |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, so the safety profile is covered; the description adds genuine non-obvious behavior that annotations do not: multi-page collection, compacted payloads, and that out-of-bounds arguments are clamped and reported rather than rejected. It stops short of covering rate limits, permissions, or how paging failures surface, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences ordered by usefulness: what it does, when to choose it over the sibling, then the argument caps. No filler, no restatement of the title, and the routing guidance is front-loaded before the mechanical details.
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 12 optional params, an output schema already defined, and read-only annotations, the description covers the essentials an agent needs: purpose, alternative selection, and bounds behavior. The gaps are not mentioning search_incidents as an alternative and not clarifying what 'compact' means relative to a full incident record, which matters for audit 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 description coverage is 100% across all 12 parameters, and the description's stated caps (max_results <= 100, batch_size 10-100) largely restate what the schema already declares as min/max. The one marginal addition is that out-of-range values are clamped rather than erroring, which is useful but thin against an otherwise schema-driven parameter story — 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?
States a concrete verb and resource ('Collect a bounded working set of incidents across multiple pages') and frames the output shape ('compact batch', 'payload size under control'), which is clearly distinct from a plain list. It explicitly contrasts with list_incidents, though the closely related filtering sibling search_incidents is never addressed, leaving some ambiguity about which filtering tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this instead of list_incidents when you want a compact batch of incidents in one tool call' gives an explicit alternative and the condition that selects it. However, it offers no when-not guidance and never mentions search_incidents, which overlaps heavily on the query/team/severity filters this tool exposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_observability_logsCount Observability LogsARead-only
Count logs matching a Logs explorer query, grouped by service, index, severity or an attribute key (@http.status_code). Answers questions like "errors per service in the last 6h" (filter[query]=severity:error, filter[from]=now-6h, group_by=service). Values are ordered by count, largest first; meta.total counts every matching log, and each value's logs_query drills into its rows with GET /v1/observability/logs (null for a blank value, which the query syntax cannot select, or when the drill-down would exceed the query limits: 512 characters or 20 clauses). A log can carry an attribute key more than once (log, resource and scope attributes), so attribute counts can add up to more than meta.total; when logs match but none have the attribute, data is empty and meta.warnings has code attribute_missing. Requires a personal or Global API key (Team API Keys are group-scoped and get 403 unsupported_api_key) or an OAuth token with the obs.logs:read (or all) scope, and the Observability logs read permission. A Global API key uses its service user's Observability role, which starts as the team's default Observability role. Limited to 60 requests per minute per token; on this endpoint the X-RateLimit-* headers report that per-minute budget, not the default API limit. Every 429 returns the errors envelope with code rate_limited and a Retry-After header.
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | Field to group by: `service`, `index`, `severity`, or `@` followed by an attribute key (e.g. `@http.status_code`). Defaults to `service`. Secret-shaped attribute keys (password, token, auth, cookie, session, ...) are rejected with `invalid_parameter`. Secret-shaped values are returned redacted with `logs_query: null`. | service |
| filter_to | No | Window end: ISO8601 or relative like `now`. Defaults to `now`. | |
| page_size | No | Number of top values to return (1-100, default 25). Not paginated: meta.truncated is true when more values matched. | |
| filter_from | No | Window start: ISO8601 or relative like `now-6h`, `now-30m`, `now-2d`. Defaults to `now-1h`. Windows are at most 7 days, and 24 hours without an indexable term. | |
| filter_query | No | Logs explorer query, e.g. `severity:error index:main`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnly/openWorld annotations: authentication requirements, OAuth scope, permission model, 60 requests/minute limit, 429 rate_limited envelope, Retry-After header, attribute multiplicity, attribute_missing warnings, and drill-down null conditions. This is unusually complete for a read-only analytics endpoint.
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 purpose and a concrete example, then layers operational details. It is dense and long, but nearly every sentence carries useful behavioral or constraint information for a complex 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?
Given the output schema and annotations, the description covers the remaining gaps an agent needs: auth, rate limits, grouping behavior, drill-down semantics, warnings, and query limits. Nothing material appears missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters. The description still adds useful semantics: group_by examples including attribute keys, filter query examples, and the meaning of meta.total versus per-value counts. It does not need to repeat every schema detail.
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?
States a specific verb and resource: count logs matching a Logs explorer query, grouped by service, index, severity, or attribute key. It clearly distinguishes aggregation from row retrieval by explaining that each value's logs_query drills into rows via GET /v1/observability/logs.
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?
Gives a concrete usage example ('errors per service in the last 6h') with the exact filter and group_by parameters. It also explains the alternative drill-down path for raw rows, making the count-vs-list distinction explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alertCreate AlertC
Creates a new alert from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, open-world write, so the description needs to add operational context — and it adds none. Notable behaviors such as deduplication-key coalescing ("alerts sharing the same deduplication key are treated as a single alert"), actor-attribution rules, and On-Call-only fields go unmentioned at the description level.
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?
One short sentence, so nothing is bloated, but it is under-specified rather than concise — the brevity comes at the cost of any useful information about the creation payload or its gating conditions.
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 create tool with a deeply nested 20+ field payload, On-Call-gated fields, deprecated fields, and deduplication behavior, a single generic sentence is not enough. An agent cannot tell from the description what a minimally valid call looks like or which attributes have side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes a single `data` wrapper whose nested attributes are extensively self-documented in the schema (actor, deduplication_key, notification_targets precedence, source deprecation), so the schema carries the semantics. The description adds no parameter meaning whatsoever, leaving it at the baseline for a schema-rich tool.
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?
It states a verb and resource ("Creates a new alert"), which is clear enough on its own, but the trailing "from provided data" is filler and the description never distinguishes this from nearby siblings such as create_alert_group, create_alert_event, or attach_alert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to create an alert versus creating an alert event, attaching an existing alert, or adding it to an alert group. No prerequisites (API key scope, On-Call enablement) are mentioned even though several schema fields are gated on them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alert_eventCreate Alert EventC
Creates a new alert event
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| alert_id | Yes | Required. ID of the alert (fills `{alert_id}` in /v1/alerts/{alert_id}/events). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false. The description adds nothing on top – it does not warn that non-idempotent creates can duplicate, does not say what permissions are needed, nor that the event is a note attached to an alert. With annotations present the bar is lower, but zero added context still merits a 2.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence with no padding, so it is concise, but the terseness comes at the cost of any front-loaded useful detail. It is efficiently written yet under-specified rather than genuinely 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?
The tool has a nested input object, a non-trivial enum ('alert_events'/'note'), an output schema, and write semantics. The description addresses none of this and gives no indication of what a successful response contains or what constraints apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the nested data object with its enum-constrained type and kind fields is barely documented. The description does not clarify that the only supported event kind is a note, nor how alert_id maps to the path – information the agent must dig out of the schema unaided.
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?
"Creates a new alert event" restates the tool name and title almost verbatim, adding no distinguishing detail. With siblings like update_alert_event, list_alert_events, and get_alert_event in the same family, an agent learns nothing new about what this specific operation produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the sibling tools (update_alert_event, list_alert_events), and no stated prerequisites beyond alert_id being required. The agent must infer the entire call context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alert_groupCreate Alert GroupB
Creates a new alert group. Note: For enhanced functionality and future compatibility, consider using the advanced alert grouping with conditions field instead of the legacy group_by_alert_title, group_by_alert_urgency, and attributes fields.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds only a field-deprecation recommendation, which is parameter guidance rather than behavioral context; it says nothing about side effects (e.g. that the group begins grouping/routing alerts immediately), name-uniqueness constraints, required permissions, or owning-team feature gating.
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 the action, with the migration advice second. No filler; the deprecation note earns its space because the schema marks those fields deprecated but the description explains the preferred path. Slightly verbose in enumerating three legacy fields by 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?
An output schema exists, so return values need not be explained, and the nested field semantics largely live in the schema. However, for a creation tool with a deeply nested payload, the description omits whether `targets` are effectively required for the group to do anything, whether `name` must be unique, and what happens to alerts arriving during creation.
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?
Top-level schema description coverage is reported as 0% for the single `data` wrapper, though nested properties carry their own descriptions. The description compensates on the highest-value decision by recommending `conditions` over the legacy `group_by_alert_title`, `group_by_alert_urgency` and `attributes` fields, but says nothing about `targets`, `time_window`, `condition_type` or `owner_group_ids`.
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 first sentence names a specific verb and resource ("Creates a new alert group"), which cleanly separates it from list_alert_groups, get_alert_group and update_alert_group in the sibling set. It stops short of explicitly contrasting with update_alert_group or noting preconditions, but the intent is unmistakable.
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?
Usage is only implied by the name and the deprecation note. The note steers the agent toward `conditions` over the legacy fields, which is field-level guidance rather than tool-level when/when-not guidance. There is no statement about when to create a group versus reusing an existing one, or what prerequisites (targets, owning teams) must exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alert_routeCreate Alert RouteB
Creates a new alert route from provided data. Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.
Asynchronous Rule Creation
For organizations with large numbers of routing rules, Rootly supports asynchronous rule processing to improve performance. When enabled, rule creation happens in the background.
Asynchronous processing is also applied automatically, whether or not it is enabled for your organization, when a request carries a rule graph too large to save within the request timeout. Size is measured in total dependent records — rules plus their condition groups, conditions and destinations — and for an update it includes the rules already on the route, not just those in the payload.
Important: Whenever rules are processed asynchronously, the rules list in the API response will not be up-to-date immediately after creation. You should refetch the alert route, or poll the async rule creation status endpoint with the request_id you supplied, to confirm the rules have landed.
If you experience slow operations when managing alert routes with many rules, contact Rootly customer support to enable asynchronous rule processing for your organization.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not destructive, not idempotent), and the description goes well beyond that: feature gating, automatic async processing when the rule graph exceeds the request timeout, the size metric (rules plus condition groups, conditions, destinations), and the fact that the returned rules list can be stale. One flaw: it tells the agent to poll with "the `request_id` you supplied," but no such field exists in the schema, which could send an agent hunting for a nonexistent parameter.
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?
Headers and bold emphasis front-load the access prerequisite and the async caveat, which is good structure. But the async discussion sprawls across four paragraphs, and the closing "contact Rootly customer support" sentence largely repeats the support mention already made in the opening note, so the length is not fully earned.
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 an output schema present, return-value explanation is correctly omitted, and annotations cover the mutation profile. The description covers the two things an agent could not infer elsewhere — the Advanced Alert Routing entitlement and the asynchronous rule-creation caveat. The only meaningful omission is any hint about the `data` payload contract, which the schema itself carries.
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?
Top-level schema description coverage is 0% — the single `data` parameter is undocumented — and the description adds no semantics about its shape, required attributes (name, alerts_source_ids), or the rules/destinations/condition_groups nesting. It even references a `request_id` parameter that is absent from the schema. The deeply nested field-level descriptions in the schema do most of the real work, which limits the practical harm, but the description itself contributes nothing here.
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 opening sentence names a specific verb and resource ("Creates a new alert route"), which is enough to separate it from update_alert_route, patch_alert_route and create_alert_routing_rule by name alone. It does not explicitly contrast itself with those siblings, and "from provided data" adds nothing, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a real prerequisite (Advanced Alert Routing access, contact support if unsure) and post-call guidance (refetch or poll the async status endpoint). However, it never says when to use this versus update_alert_route or create_alert_routing_rule, so the create-vs-update routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alert_routing_ruleCreate Alert Routing RuleA
Creates a new alert routing rule from provided data. Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly=false, idempotent=false, destructive=false, and openWorld=true. The description adds a useful routing-mode caveat but does not disclose permissions, side effects, or idempotency behavior 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?
Two sentences, front-loaded with the core action and followed by a relevant routing-mode note. There is little waste and the important caveat is easy to spot.
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 complex nested create tool, the description covers purpose and the advanced-routing alternative, while annotations and the output schema cover safety and return behavior. It could say more about required data shape or advanced routing implications, but the schema fills most field-level 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?
The description adds no parameter-level meaning beyond the schema. The schema itself documents nested fields such as name, enabled, conditions, destination, and owning_team_ids, so the baseline is adequate even though the description does not compensate for the reported low coverage signal.
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 a specific verb and resource: creating a new alert routing rule. It also distinguishes this tool from the sibling Alert Routes endpoint for advanced users, though the phrase "from provided data" is 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?
It explicitly says advanced alert routing users should use the Alert Routes endpoint instead, and tells uncertain users to contact support. This gives a clear when-not condition and alternative, though it does not describe the normal non-advanced use case in detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alerts_sourceCreate Alerts SourceC
Creates a new alert source from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent, non-destructive, open-world operation. The description adds no behavioral context such as required permissions, validation rules, what happens if the source type is invalid, or side effects of creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no wasted clauses, but it is far too sparse for a tool with a deeply nested input schema. It is concise without being appropriately sized.
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?
Output schema and annotations are present, so return values and basic safety need not be in the description. However, for a complex nested creation payload with source-type-specific attributes, the description provides no useful setup or payload guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'data' parameter has no top-level description and the tool description merely says 'from provided data.' Although the nested schema is detailed, the description itself does not explain the required wrapper shape, required fields, or source_type-dependent attributes.
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 the core action, creating an alert source, but adds no detail beyond the tool name and title. 'From provided data' is tautological filler rather than a distinguishing purpose, and it does not clarify how this differs from list/get/update alert source 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?
There is no guidance on when to use this tool versus list_alerts_sources, get_alerts_source, or update_alerts_source, nor any prerequisites or exclusions. The description only restates the obvious create action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_alert_urgencyCreate Alert UrgencyD
Creates a new alert urgency from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the basic mutation profile is known. The description adds nothing about duplicate-name behavior, required permissions, validation, or side effects of creating an urgency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted words, but it is under-specified rather than appropriately concise. The sentence does not earn its place because it provides no information beyond 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 create tool with a nested payload and multiple optional fields, the description is far too thin. The output schema may cover return values, but the description still fails to explain the required input structure, constraints, or intended 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?
The description says only 'from provided data' and does not explain the required data envelope, the alert_urgencies type enum, or the required name/description fields. Although some nested properties have schema descriptions, the description itself does not compensate for the 0% top-level schema description 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 restates the tool name and title almost verbatim: 'Creates a new alert urgency' adds no detail beyond the name, and 'from provided data' is filler. It does not explain what an alert urgency is or how creation differs from siblings such as update_alert_urgency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like update_alert_urgency or list_alert_urgencies. No preconditions, typical scenarios, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalogCreate CatalogC
Creates a new catalog from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description contributes nothing beyond that — no mention of what is created, what a duplicate name does, or any side effects — so it fails to add value on top of 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?
It is a single short sentence, so nothing is wasted, but the brevity is under-specification rather than efficiency — there is no front-loaded detail or structure for the agent to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with a deeply nested payload and an output schema present, the description leaves major gaps: what a catalog is in this product, required fields, slug derivation, and external_id uniqueness constraints are all unstated. An agent would have to read the nested schema closely to call this 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?
There is one parameter, a nested object, with 0% top-level schema description coverage. The description says only "from provided data," adding no meaning: it does not mention that `name` is required, that `slug` is deprecated and derived from `name`, or that `external_id` must be unique within the team, even though those nested-field descriptions exist 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 verb+resource ("Creates a new catalog") is identifiable, but the trailing "from provided data" is filler that adds nothing. It does not distinguish this tool from the many adjacent creators such as create_catalog_entity, create_catalog_property, or update_catalog, so an agent cannot tell scope apart from siblings on the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus update_catalog, list_catalogs, or create_catalog_entity. No prerequisites (permissions, uniqueness of name/external_id, whether a team context is required) are mentioned, leaving the agent to infer everything from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_entityCreate Catalog EntityC
Creates a new Catalog Entity from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| catalog_id | Yes | Required. ID of the catalog (fills `{catalog_id}` in /v1/catalogs/{catalog_id}/entities). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, non-idempotent, open-world create operation. The description adds no behavioral context beyond that, such as whether the catalog must exist, how uniqueness constraints are handled, or what side effects occur.
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 short sentence with the action front-loaded, so it is structurally efficient. It loses a point because "from provided data" is filler rather than useful conciseness.
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 create tool with a nested object schema and several entity fields, the description is far too thin. An output schema exists, so return values need not be explained, but the description still fails to cover the catalog context or the shape of the data being created.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the top-level required "data" object has no description at all. The phrase "from provided data" is tautological and does not compensate for the missing explanation of how catalog_id and the nested entity payload should be supplied.
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 a specific verb and resource ("Creates a new Catalog Entity"), which is clearer than a bare tautology. However, "from provided data" adds no meaningful scope, and it does not distinguish this tool from nearby siblings such as create_catalog or create_catalog_entity_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites such as needing an existing catalog, and no exclusions. The agent is left to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_entity_propertyCreate Catalog Entity PropertyA
Deprecated: This endpoint is deprecated, please use the fields attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.
Creates a new Catalog Entity Property from provided data.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| catalog_entity_id | Yes | Required. ID of the catalog entity (fills `{catalog_entity_id}` in /v1/catalog_entities/{catalog_entity_id}/properties). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, non-destructive, non-idempotent, open-world operation, so the safety profile is covered. The description adds important behavioral context by marking the endpoint deprecated and naming replacement pathways, though it does not discuss permissions or side effects beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the deprecation warning front-loaded, followed by the core action. There is no wasted text, and the most important use guidance appears first.
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 a rich nested input schema, annotations, and an output schema, the description is mostly complete: it clearly marks the tool as deprecated and names alternatives. The main gap is that it does not clarify the nested `data` payload semantics, but the schema covers much of that structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description adds essentially no parameter detail beyond "from provided data." It does not explain the nested `data.attributes` structure, required keys, or the catalog field value limit, leaving the schema to carry the burden without compensating prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Creates a new Catalog Entity Property." It also flags deprecation and points to replacement approaches, but it does not explicitly distinguish this create tool from sibling tools such as update_catalog_entity_property or create_catalog_property beyond the 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?
It explicitly says the endpoint is deprecated and directs callers to use the `fields` attribute on catalog entities or native catalog endpoints instead. This gives clear when-not-to-use guidance and names concrete alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_propertyCreate Catalog PropertyC
Creates a new Catalog Property - returns catalog_properties type
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| catalog_id | Yes | Required. ID of the catalog (fills `{catalog_id}` in /v1/catalogs/{catalog_id}/properties). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-destructive, non-idempotent write operation in an open-world context. Beyond that, the description only says it returns a 'catalog_properties type' and adds no details about creation behavior, uniqueness constraints, required fields, 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 very short and front-loaded, with no wasted clauses. However, its brevity contributes to under-specification for a nested-object 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?
For a nested-object mutation with open-world behavior and no output schema, the description is too sparse. It does not explain required fields, valid kinds, catalog scoping, uniqueness behavior, or what the returned catalog property 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?
Schema description coverage is only 50% and there are nested parameters, but the description adds no parameter meaning. It does not explain catalog_id, the data wrapper, or the required nested attributes such as name and kind, leaving the schema to carry the burden.
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 a specific verb and resource: 'Creates a new Catalog Property.' It is clear what the tool does, but it does not distinguish this from closely related sibling tools such as create_catalog_entity_property or update_catalog_property.
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 about when to use this tool, prerequisites such as needing an existing catalog, or how it differs from alternatives like create_catalog_entity_property and update_catalog_property.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_causeCreate CauseC
Creates a new cause from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the agent knows this is a non-destructive but non-idempotent write. The description adds only 'from provided data', which contributes no behavioral context beyond what the annotations already state.
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 short sentence, which is concise, but it is under-specified rather than front-loaded with useful detail. It avoids waste but also avoids providing necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a create mutation with a complex nested schema and no schema coverage for the top-level parameter. Even with output schema present and annotations covering the safety profile, the description is too thin for an agent to understand what data is required or how the cause creation behaves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level data parameter, and the description says nothing about the required nested structure, attributes, or how the data object should be assembled. It provides no meaning beyond the parameter name itself.
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 a specific verb and resource: 'Creates a new cause'. It does not differentiate this tool from siblings such as update_cause or create_catalog_entity, but the core 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?
There is no guidance on when to use this tool versus alternatives like create_catalog_entity or update_cause, and no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_fieldCreate Custom FieldB
[DEPRECATED] Use form field endpoints instead. Creates a new custom field from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the safety bar is lower. The description's only added behavioral context is the deprecation lifecycle status, which is genuinely useful but is not accompanied by any note on side effects, uniqueness constraints on labels, or what a repeated call does.
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 short sentences with the deprecation warning front-loaded, which is exactly the right ordering for a deprecated tool. The only waste is the redundant "from provided data" clause.
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?
An output schema exists so return values needn't be described, and the deprecation notice covers the biggest risk. However, for a nested-object mutation tool with 0% top-level schema description coverage, the description leaves the caller to reverse-engineer the `data` envelope entirely from 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 reported as 0% at the top level, and the description says nothing about the single `data` parameter — no mention of the required `type`/`attributes` envelope, the mandatory `label`, or the enum-constrained `shown`/`required` placement lists. The nested schema does document its own properties, which prevents a 1, but the description itself contributes zero parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Creates a new custom field") and immediately flags deprecation, which distinguishes it from the active form-field creation siblings. The trailing "from provided data" adds nothing, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from this tool with "Use form field endpoints instead", which is a real alternative-selection signal rather than implied usage. It does not name the specific sibling (create_form_field) nor say under what legacy conditions this tool would still be correct, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_formCreate Custom FormC
Creates a new custom form from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context at all — no note on validation failures, whether the created form is enabled by default, or what happens to the discarded slug. With full annotation coverage, a 2 reflects a description that contributes nothing beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no padding and the verb front-loaded, but its brevity comes from under-specification rather than discipline — the content is essentially the title plus a filler phrase.
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?
An output schema exists, so return values need not be explained, and annotations cover the mutation/safety profile. However, for a nested-payload creation tool in a crowded form-related namespace, the description lacks the field-level and disambiguation detail an agent needs, so it is 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?
The single parameter is a deeply nested object whose meaningful fields (name, command, enabled, description, deprecated slug) are only partly documented in the schema, and the description mentions none of them. It does not tell the agent that 'command' is a required Slack trigger or that slug is ignored, so it fails to compensate for the low schema coverage on a nested-object payload.
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?
Names a specific verb and resource (create a custom form), which is better than a pure tautology, but "from provided data" adds nothing and the description never distinguishes this from sibling creators like create_custom_field, create_form_set, or create_form_field in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what prerequisites exist (e.g. a Slack command string is required), or how it relates to update_custom_form or the form-set/form-field tools. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dashboardCreate DashboardC
Creates a new dashboard from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description adds nothing beyond that: no mention of required auth scope, whether name collisions are rejected or duplicated (relevant given idempotentHint=false), or whether the dashboard is immediately visible.
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?
A single short sentence with no padding, but it is under-specified rather than economical — the one clause present ("from provided data") carries no information, so brevity here is a cost, not a virtue.
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 nested required payload and no useful description of it; the existence of an output schema excuses not explaining return values, and annotations cover side-effect hints, but the create contract itself (payload shape, uniqueness, ownership semantics) is absent. For a create operation in a large sibling set this is inadequate.
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 only parameter is a deeply nested `data` envelope with required `type`/`attributes` and required `name`/`owner`, yet the description contributes nothing about that structure. Even though several leaf fields carry schema descriptions, the top-level shape an agent must construct is undocumented in the description, so "from provided data" leaves real work unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource ("Creates a new dashboard") is unambiguous and clearly distinct from update_dashboard / list_dashboards / get_dashboard. However, "from provided data" is filler that says nothing about what a dashboard payload contains or what gets created, so the statement stops at minimum viability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus update_dashboard or how it relates to creating panels via update_dashboard_panel, and no prerequisites (permissions, ownership rules, whether the dashboard must be attached to a team) are mentioned. The agent must infer all routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_environmentCreate EnvironmentC
Creates a new environment from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, non-idempotent, open-world, non-destructive, so the safety profile is covered. The description adds nothing beyond that: no permission requirements, no side effects, no note that name must be unique or that slug is derived and ignored, and no response shape context despite this being a 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?
One front-loaded sentence with no padding, so structure is fine. However, for a tool wrapping a nested object with nine attributes, this level of brevity reads as under-specification rather than efficient conciseness.
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 a complex nested input, an output schema, and annotation coverage, the description omits nearly everything an agent would need: what constitutes valid environment data, slug derivation, defaults, and permission requirements. The schema carries most of the weight, leaving the description incomplete for a creation 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?
The top-level schema description coverage is reported as 0% and the 'data' wrapper is unexplained; the description says only 'from provided data'. Nested field descriptions exist in the schema (name, deprecated slug, color, properties), but the description does not add or clarify any of that 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?
States a specific verb and resource ('Creates a new environment'), which distinguishes it by name from list/get/update siblings, but 'from provided data' adds nothing and the description never explains what an environment is in this product. It is adequate but thin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as update_environment or of how create differs from other creation tools. The agent gets no help choosing this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_escalation_levelCreate Escalation LevelC
Creates a new escalation level from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| escalation_policy_id | Yes | Required. ID of the escalation policy (fills `{escalation_policy_id}` in /v1/escalation_policies/{escalation_policy_id}/escalation_levels). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the agent knows this is a non-idempotent write. The description adds nothing beyond that: it does not mention duplicate-creation behavior on retry (relevant given idempotentHint=false), what the new level defaults to, or where the level is appended within the policy.
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?
A single short sentence with zero waste, but it is under-specified rather than efficient — every clause merely restates the tool name. There is no front-loaded information an agent could not already get from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with a deeply nested object parameter (notification targets, paging strategy enums, path selection) and an output schema, so return values need not be described. However, the description explains nothing about the nested payload's required structure or the default-path behavior, leaving a substantial gap for a create operation of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the top-level `data` wrapper is undocumented in both the schema and the description. The phrase "from provided data" conveys no semantics about the required position, notification_target_params, or the optional dynamic path defaulting behavior, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb and resource ("Creates a new escalation level") which matches the tool name but adds no differentiation from siblings such as create_escalation_level_paths or create_escalation_policy. The trailing phrase "from provided data" is filler that restates the schema rather than clarifying scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the closely related create_escalation_level_paths, create_escalation_policy, or update_escalation_level tools. No prerequisites, no mention that an escalation_policy_id must exist first, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_escalation_level_pathsCreate Escalation Level PathsC
Creates a new escalation level from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| escalation_policy_path_id | Yes | Required. ID of the escalation policy path (fills `{escalation_policy_path_id}` in /v1/escalation_paths/{escalation_policy_path_id}/escalation_levels). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note on whether the level is appended to a default path when no path ID is given, no side effects, no idempotency caveat. 'From provided data' is pure filler.
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?
A single short sentence with no waste, but the brevity comes at the cost of under-specification rather than efficiency. The one clause it does include, 'from provided data', carries no 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?
This is a mutation tool with a deeply nested payload (notification targets, paging strategy configuration) and an output schema; the description covers none of that structure, no prerequisites, and no failure modes. For a create operation with a nested 2-parameter body, far more guidance is 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 description coverage is 50%, and the undocumented half is the entire top-level 'data' wrapper. The description says nothing about either parameter, so it does not compensate for the gap — notably it omits the default-path behavior that the nested escalation_policy_path_id field describes.
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 verb and resource are stated ('Creates a new escalation level'), but the tool is named create_escalation_level_paths while the description talks only about levels, and the sibling list contains both create_escalation_level and create_escalation_path. Nothing distinguishes this tool from those, so the agent cannot tell which one to pick from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the required escalation_policy_path_id scope, and no pointer to the alternative sibling tools (create_escalation_level, create_escalation_path) that create similar resources. Usage must be inferred entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_escalation_pathCreate Escalation PathC
Creates a new escalation path from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| escalation_policy_id | Yes | Required. ID of the escalation policy (fills `{escalation_policy_id}` in /v1/escalation_policies/{escalation_policy_id}/escalation_paths). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context of its own — nothing about the required after_deferral_behavior for deferral paths, the team-level gating on notification type conditions, or what happens on duplicate creates.
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?
One short, front-loaded sentence with no preamble, which is structurally sound. But 'from provided data' is pure filler, and the brevity is under-specification rather than economy given the tool's complexity.
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 20+ nested attributes, polymorphic rules, time zones, and deferral-path semantics, a single generic sentence leaves the caller to reverse-engineer intent from the schema. An output schema exists, so return values need not be explained, but the description is far too thin for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% at the top level, and the data object's purpose is never explained in the description beyond 'provided data'. While the deeply nested attributes carry their own schema descriptions, the description itself contributes no meaning about escalation_policy_id or the data envelope.
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 a specific verb and resource: creating a new escalation path. However, it offers no differentiation from close siblings such as create_escalation_level_paths or update_escalation_path, and the trailing phrase 'from provided data' adds nothing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus create_escalation_level_paths or update_escalation_path, no stated prerequisites (an existing escalation_policy_id), and no mention that the payload must distinguish escalation vs deferral paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_escalation_policyCreate Escalation PolicyC
Creates a new escalation policy from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the mutation/idempotency profile is covered. The description adds nothing on top: not what is returned, not that duplicate names may collide, not that a newly created policy without escalation levels does nothing, not what the 'data' envelope must look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence, so it is not bloated, but half of it ('from provided data') carries no information. Brevity here reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent create with a deeply nested payload (business hours, time zone enum, group/service associations) and no annotation depth beyond the standard hints, this description is far too thin. An output schema exists so return values need not be described, but the input contract and post-creation workflow are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one top-level parameter, 'data', with 0% description coverage and no explanation in the description beyond 'provided data', which is circular. The nested attributes are self-documented in the schema, but the JSON:API-style wrapper (required 'type' enum, required 'attributes' object) is never explained by either the schema or the description.
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 verb+resource pair 'Creates a new escalation policy' is concrete, but 'from provided data' is tautological filler. With close siblings such as create_escalation_level and create_escalation_path in the catalog, the description does nothing to distinguish this tool from them or to explain how a policy relates to levels/paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus update_escalation_policy, create_escalation_level, or create_escalation_path, and no prerequisites (permissions, required group/service IDs, whether levels must be added afterwards). The agent gets no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_fieldCreate Form FieldC
Creates a new form_field from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention the 200-with-existing-field no-op behavior, the team form-set provisioning side effect, or any permission requirement, all of which are material for a create call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At six words it is short, but this is under-specification rather than conciseness: there is no front-loaded statement of what gets created, what is required, or what happens on conflict. Every sentence that exists is filler ("from provided data").
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex creation tool with a large nested body, ~35 enum kinds, an incident/problem resource_type split, and side effects like default problem form provisioning. An output schema exists so return values need not be explained, but the description supplies none of the operational context an agent needs to call it 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 description coverage is reported at 0% for the single top-level `data` parameter, and the description does not compensate — it says only "from provided data". The nested attributes happen to be richly documented in the schema itself, but the tool description contributes no meaning about required fields, the type discriminator, or how kind/resource_type interact.
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 reads "Creates a new form_field from provided data", which is essentially the tool name and title restated with the filler phrase "from provided data". It conveys a verb and a resource, but offers no distinction from siblings like update_form_field, create_custom_field, or create_form_field_option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool rather than update_form_field, create_custom_field, or list_form_fields, and no preconditions such as required permissions or the need for Problem Management to be enabled. The agent must infer all routing and eligibility from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_field_optionCreate Form Field OptionC
Creates a new form_field_option from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| form_field_id | Yes | Required. ID of the form field (fills `{form_field_id}` in /v1/form_fields/{form_field_id}/options). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that – no mention of required parent form_field, whether duplicate values are rejected, or whether a default option displaces existing defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words, but a mutation tool with a nested object payload warrants more than eight words. It is efficiently written yet underspecified relative to the complexity of the 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?
The input schema is nested and only half documented, and while an output schema exists to cover return values, the description leaves out the parent-child relationship to form_field_id and any constraint on the value/color/position combination. For a write tool creating a nested resource, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (color, value, position, form_field_id described; default and type undocumented), and the description contributes no parameter meaning at all – "from provided data" says nothing about the nested attributes object. With a nested object structure, the description should compensate for the coverage gap and does not.
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 says "Creates a new form_field_option from provided data," which essentially restates the tool name and title without adding scope. It does not distinguish this from siblings like update_form_field_option, list_form_field_options, or get_form_field_option beyond the verb "creates."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of update_form_field_option or when a form_field must exist first. The only implied usage cue is the verb "creates," leaving the agent to infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_setCreate Form SetC
Creates a new form_set from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. But the description adds nothing beyond that: it omits that resource_type=problem requires Problem Management to be enabled and silently provisions a default problem form set, and that duplicate submissions are non-idempotent. No contradiction with annotations, but zero added context for a write tool with 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?
A single short sentence is technically concise and front-loaded, but it is under-specified rather than efficient; it earns its place only trivially since it conveys nothing the tool name does not.
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 a nested-object create tool with conditional side effects and a required payload, the description is far too thin. An output schema exists, so return values need not be explained, but the missing prerequisites, provisioning behavior, and payload shape leave an agent without what it needs to call this 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?
There is one top-level parameter (a wrapper object) with 0% top-level schema description coverage, so the description is expected to compensate and does not. It says nothing about the required 'data' envelope, the required name/forms attributes, the deprecated slug, or the incident/problem enum behavior — all of which live only in the nested 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 sentence is essentially a restatement of the tool name and title: 'Creates a new form_set from provided data' adds no scope, no resource detail, and no differentiation from siblings such as update_form_set, list_form_sets, or get_form_set. 'From provided data' is filler rather than specification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_form_set (for existing sets) or list_form_sets/get_form_set (for reads), and no prerequisites are stated. The agent must infer from the name alone that this is the creation path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_functionalityCreate FunctionalityC
Creates a new functionality from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds no further behavioral context — it doesn't mention side effects, whether duplicate names collide (relevant since idempotentHint is false), or any auth/permission requirements for a mutation tool that touches many linked resources.
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?
A single short sentence, front-loaded with the verb, so there is no bloat. However, the trailing phrase "from provided data" is pure filler and the brevity comes at the cost of substance rather than being earned concision.
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 takes a deeply nested object with many linked-entity fields, so the description should clarify what the create operation requires and what gets set. An output schema exists so return values needn't be explained, and annotations cover safety, but the description still leaves the agent without enough to know what a valid creation looks like.
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 reported at 0% for the top-level parameter, and the description only says "from provided data", which gives no meaning about the required type/attributes envelope. Nested fields do carry their own schema descriptions (including the deprecated slug note), which mitigates somewhat, but the description itself contributes nothing about which attributes are required.
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?
"Creates a new functionality" names a verb and a resource, so the basic action is identifiable, but "functionality" is a domain-specific entity that is never explained and "from provided data" adds nothing. It also does not distinguish itself from the sibling update_functionality or explain how a functionality differs from a service or catalog entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_functionality, or on prerequisites such as required permissions or whether related entities (services, environments, owner teams) must already exist. Only the verb "creates" implies the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_heartbeatCreate HeartbeatC
Creates a new heartbeat from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. However the description adds nothing beyond that: it does not say that the heartbeat interval drives alert triggering, whether the heartbeat is created enabled, whether openWorldHint implies external notification delivery to the target (page/Slack/email), or what happens on repeated calls. For a mutation that will page humans, that is a real gap.
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?
One short sentence, front-loaded with the verb, so it is not bloated. But it wastes half its length on "from provided data" and leaves no room for the payload structure this nested schema actually needs.
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 input is a nested object with six required fields and enum constraints (interval_unit, notification_target_type), plus a boolean whose semantics affect alerting. A single generic sentence is inadequate; the description should at minimum explain the interval/unit pairing and the notification target requirement. Having an output schema excuses it from explaining return values, but nothing else.
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 reported at 0% for the single top-level `data` parameter, whose nested `attributes` object carries six required fields including `interval`, `interval_unit`, and `notification_target_id` that have no schema description at all. The description does not compensate — it never names a single field, unit convention, or the relationship between `interval` and `interval_unit`, leaving the most error-prone required fields undocumented anywhere.
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?
"Creates a new heartbeat" states a verb and resource, but "from provided data" is tautological filler that restates the input parameter rather than adding scope. It does not differentiate the tool from update_heartbeat or list_heartbeats beyond the implicit create/update/list verb pattern, so the agent learns nothing it could not infer from the tool 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?
There is no guidance on when to use this tool versus update_heartbeat, get_heartbeat, or list_heartbeats, and no mention of prerequisites such as needing an existing notification target to reference. An agent must infer the create-vs-update distinction entirely from the naming convention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incidentCreate IncidentC
Create an incident with a scoped set of fields for agent-driven workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Incident title. If omitted, Rootly may autogenerate one. | |
| summary | No | Incident summary or short description. | |
| team_ids | No | Comma-separated team IDs to attach to the incident. | |
| service_ids | No | Comma-separated service IDs to attach to the incident. | |
| severity_id | No | Optional severity ID to attach to the incident. | |
| environment_ids | No | Comma-separated environment IDs to attach to the incident. | |
| incident_type_ids | No | Comma-separated incident type IDs to attach to the incident. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-idempotent, open-world, non-destructive, so the mutation/safety profile is covered structurally. The description adds nothing beyond that: no mention that all fields are optional, what happens when title is omitted (autogeneration), or what the response contains. It does not contradict 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?
A single front-loaded sentence with no waste. However, the size is achieved partly by omitting information rather than by compressing it, so it is not a 5.
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?
An output schema exists so return values need no explanation, and annotations cover safety. But for a create tool with zero required parameters, the description should tell the agent that all fields are optional, that an incident is still created with no title, and what 'scoped' excludes (e.g., it cannot set status or assignee here).
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 each field carries its own description including title autogeneration and comma-separated ID formats. The description contributes no parameter meaning beyond the schema, which is the baseline 3 case.
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?
States a specific verb and resource: create an incident. The phrase 'scoped set of fields' signals this is a limited-create endpoint vs update_incident, though the scope is not spelled out. An agent can tell it creates rather than 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?
No guidance on when to use this vs update_incident, or what to do when an incident already exists. 'For agent-driven workflows' is a vague hint, not a usage rule. Nothing about prerequisites or required IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incident_action_itemCreate Incident Action ItemC
Creates a new action item from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/action_items). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, non-destructive, open-world behavior, so the description only needed to add context such as validation rules or the custom-fields feature gate. It adds nothing: no mention that form_field_selections are silently ignored unless the org enables action-item custom fields, and no note that repeat calls create duplicates (idempotentHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is easy to scan, but "from provided data" is wasted space and the brevity here reflects under-specification rather than tight writing.
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 a deeply nested JSON:API payload, ten-plus optional attribute groups (Jira linkage, assignees, custom fields), and no idempotency, the description omits nearly everything an agent needs to construct a valid call. The presence of an output schema and detailed nested property descriptions offset some of this, but the envelope and usage context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the undocumented half is the critical JSON:API `data` envelope with its fixed `type: incident_action_items` value. The description does not explain this envelope or the relationship between incident_id and the nested payload, so it fails to compensate for the coverage gap even though the nested attribute descriptions are rich.
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?
"Creates a new action item" names a specific verb and resource, but "from provided data" is pure filler and the description never anchors the action item to the parent incident, which is the defining characteristic versus siblings like update_incident_action_item or create_incident. It is barely more than the title restated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of update_incident_action_item or create_incident_event, and no stated prerequisite that the incident must already exist. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incident_custom_field_selectionCreate Incident Custom Field SelectionA
[DEPRECATED] Use form field endpoints instead. Creates a new incident custom field selection from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/custom_field_selections). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds meaningful lifecycle context (deprecation) but says nothing about write semantics such as duplicate-selection handling, validation failures, or whether the created selection is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the deprecation warning front-loaded, which is exactly the information an agent should see first. Nothing is wasted.
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?
An output schema exists so return values need no explanation, and annotations cover the safety profile. However, for a deprecated mutation tool the most important omission is the migration path — which form field endpoint replaces it — leaving an agent without enough to avoid the wrong call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description's only parameter-related content is the tautological 'from provided data'. It does not explain the incident_id scoping or that the nested attributes take their shape from the custom field's kind — that meaning lives only in the schema's inner field 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?
Names a specific verb and resource ('Creates a new incident custom field selection') and distinguishes itself from the sibling create_incident_form_field_selection by flagging itself as deprecated in favor of form field endpoints. The purpose would be a 5 if it named the exact replacement tool rather than the vague 'form field endpoints'.
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 deprecation banner is an explicit 'when not to use this' signal and points to an alternative family of endpoints. It stops short of naming the precise replacement sibling or any prerequisites, so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incident_eventCreate Incident EventC
Creates a new event from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/events). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, and the description adds nothing on top of them. It does not say whether the event is appended to the incident timeline, whether visibility defaults are applied, what permissions are required, or what happens on repeated calls for a non-idempotent create.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, so it is not bloated, but 'from provided data' is pure filler and no useful information is front-loaded. Brevity comes at the cost of substance rather than through 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?
For a mutating, non-idempotent create with a nested payload (and an output schema that covers return values), the description omits what an event represents, how visibility 'internal' vs 'external' affects exposure, and required preconditions. The output schema removes the need to document returns, but the input-side and behavioral gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%; incident_id and the nested event/visibility fields are documented in the schema, but the required `data` wrapper and its JSON:API-style `type: incident_events` discriminator are never explained. The phrase 'from provided data' is the description's only nod to the payload, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name almost verbatim ('Creates a new event' for 'Create Incident Event') and adds only the filler phrase 'from provided data'. It never explains what an incident event actually is (a timeline/summary entry on an incident) or how it differs from siblings like create_alert_event or create_incident_action_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., that incident_id must reference an existing incident), and no mention of alternatives such as create_incident_action_item or create_alert_event. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incident_form_field_selectionCreate Incident Form Field SelectionC
Creates a new incident form field selection from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/form_field_selections). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — it does not say what happens on a duplicate selection (non-idempotent), whether existing selections are replaced, or what the required payload shape means for the many selected_* arrays.
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?
One front-loaded sentence with no padding, but "from provided data" is filler that conveys nothing. The brevity is closer to under-specification than to 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?
An output schema exists so return values needn't be described, and annotations cover safety. But for a nested-payload creation tool whose input schema only half-documents its parameters and whose idempotency is false, the description leaves the agent without the kind-to-field mapping or the duplicate-handling behavior it needs to call this 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 only 50% and the payload is a nested object, yet the description adds zero parameter meaning beyond "from provided data." It never explains that which selected_* arrays to populate depends on the custom field's kind (text uses value, select/multi_select uses the id arrays), which is the single most important semantic an agent needs here.
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 names a specific verb and resource ("Creates a new incident form field selection"), so the agent knows exactly which entity is being written. It does not, however, distinguish this from the adjacent siblings create_incident_custom_field_selection or update_incident_form_field_selection, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus create_incident_custom_field_selection, nor any prerequisites such as the incident existing or the form field needing to be placed on the form. The phrase "from provided data" gives no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incident_typeCreate Incident TypeC
Creates a new incident_type from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered elsewhere. The description adds nothing beyond this – no mention of validation behavior, what happens if a name already exists, or whether the operation can partially fail.
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?
One short sentence is concise and front-loaded, but it is under-specified rather than efficiently informative. It earns its brevity at the cost of being nearly content-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complex nested request body, a required name field, and deprecated fields like slug, the definition should say more than "from provided data." The output schema covers returns, but the description leaves too much of the input contract and mutation semantics unexplained.
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 top-level parameter "data" has no schema description (0% coverage) and the description's "from provided data" is tautological. The nested schema documents individual fields like name and color, but the description does not explain the required structure or that name is mandatory.
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?
It states a concrete verb and resource ("Creates a new incident_type"), which is clear enough, but there is no differentiation from siblings like create_incident, update_incident_type, or create_catalog_property. The phrase "from provided data" adds no distinguishing information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, no prerequisites, and no reference to alternatives such as update_incident_type or list_incident_types. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_live_call_routerCreate Live Call RouterC
Creates a new Live Call Router from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a non-read-only, open-world, non-idempotent, non-destructive operation. The description adds no behavioral context beyond 'from provided data'—it does not mention side effects, required permissions, phone-number prerequisites, or what happens when the router is enabled.
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 front-loaded sentence, which is structurally efficient. However, for a complex create operation with many nested configuration options, it is under-specified rather than appropriately 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?
This is a complex creation tool with nested paging targets, phone routing options, and a referenced phone-number generation prerequisite. The description does not explain those dependencies, the creation context, or when this tool should be selected, leaving it incomplete despite having annotations and 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 description only says 'from provided data' and does not explain the single top-level data parameter or its required nested attributes. Although the nested schema contains field descriptions, the tool description itself adds no semantic meaning beyond the parameter name.
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 a specific verb and resource: it creates a new Live Call Router. It is clear what the tool does, but it does not distinguish this create operation from sibling tools such as get_live_call_router, list_live_call_routers, or update_live_call_router.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives or when not to use it. It also omits prerequisites, such as whether a phone number must first be generated before creating the router.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_on_call_roleCreate On Call RoleC
Creates a new On-Call Role from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent with open-world behavior, so the basics of a write are covered. The description adds nothing beyond that — it says nothing about required auth level, what happens if a role with the same name exists (relevant given idempotentHint=false), or the fact that the slug is derived and ignored. For a mutation creating a permissions-bearing object, that is a real gap.
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?
One short sentence with no waste, so it is not bloated, but it is under-specified rather than concise — the trailing "from provided data" carries zero information and no useful detail replaces it.
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?
An output schema exists, so return values need not be described. However, this is a high-complexity nested create with ~28 permission fields, zero schema description coverage, and only minimal annotations, so the description should have covered the permission model and the derived-slug behavior; as written it leaves the agent under-equipped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single top-level `data` wrapper (JSON:API-style with `type` and `attributes`), and the description never explains that structure or that `slug` is deprecated and ignored. Roughly two dozen `*_permissions` array fields carry no description at all, so the description needed to add meaning about the permission model and instead adds none.
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 pairs the concrete verb "Creates" with the specific resource "On-Call Role", which clearly separates it from sibling readers like get_on_call_role and list_on_call_roles. The qualifier "from provided data" is filler and the definition does not explicitly name update_on_call_role as the alternative, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_on_call_role, list_on_call_roles, or get_on_call_role, and no prerequisites such as the admin-level permissions typically needed to mint a role. The agent must infer everything from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_on_call_shadowCreate On Call ShadowC
Creates a new on call shadow configuration from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/on_call_shadows). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the mutation profile is covered. The description adds nothing beyond the verb, not explaining what a shadow configuration is, whether the schedule must exist, or any side effects of creating one.
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 front-loaded sentence with no repetition. However, "from provided data" is effectively filler and the extreme brevity leaves important context unstated.
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 create mutation with a required nested data object and schedule_id, the description does not explain required inputs, the meaning of shadowable_type, or expected effects. An output schema exists, so return values need not be described, but the creation context is substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is roughly 50%, with descriptions for schedule_id and most nested shadow attributes. The description adds no meaning beyond the schema and does not explain the nested data envelope or the shadowable_type/shadowable_id relationship, so it neither compensates for gaps nor harms 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 states a specific verb ("Creates") and resource ("on call shadow configuration"), so an agent can identify the operation. It does not explicitly distinguish itself from sibling create/update/list shadow tools, but the create intent 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?
There is no guidance on when to use this tool, what prerequisites are required, or how it differs from alternatives such as update_on_call_shadow or list_on_call_shadows. The only clue is the verb "Creates", leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_override_recommendationCreate Override RecommendationARead-only
Recommend replacement responders for an override shift.
Finds users in the same schedule rotation who are not already heavily loaded during the period.
Returns recommended replacements sorted by current load (lowest first), plus a ready-to-use override payload for the top recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | Override end (ISO 8601, e.g., '2026-02-15') | |
| start_date | Yes | Override start (ISO 8601, e.g., '2026-02-09') | |
| schedule_id | Yes | Schedule ID to create override for | |
| exclude_user_ids | No | Comma-separated user IDs to exclude (e.g., other at-risk users) | |
| original_user_id | Yes | User ID being replaced |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=true; the description reinforces the read-only claim by promising a recommendation list plus a 'ready-to-use override payload' rather than a mutation. It adds real behavioral content the annotations do not: candidates are filtered by load, results are sorted lowest-load-first, and a top pick is pre-assembled. No auth, rate-limit, or empty-result behavior is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the purpose and followed by the ranking rule and the return shape. No filler, though the phrase 'ready-to-use override payload' could have been spent naming the tool that consumes it.
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?
An output schema exists, so return values do not need spelling out, and the read-only safety profile is covered. However, a recommendation-only tool whose output is explicitly a payload omits the single most useful piece of context: which tool to call with that payload. The agent is left to infer the create_override_shift handoff.
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 five parameters including exclude_user_ids. The description adds conceptual context — that the date period and schedule drive the load calculation — but never references a parameter by name or clarifies how exclude_user_ids interacts with the load filter. 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?
States a specific verb and resource: 'Recommend replacement responders for an override shift', then narrows the candidate pool to users in the same schedule rotation who are not heavily loaded. The critical disambiguation — that despite the 'create_' prefix this only recommends, returning a payload rather than writing anything — is conveyed. It stops short of naming create_override_shift as the sibling that actually performs the write.
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 scenario is implied clearly (you need a replacement for an override shift), but there is no explicit when-to-use vs when-not, and no alternative is named. Given siblings create_override_shift and check_responder_availability exist, the agent must infer the division of labor between 'recommend', 'check availability', and 'create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_override_shiftCreate Override ShiftC
Creates a new override shift from provided data. If any existing override shifts overlap with the specified time range, they will be automatically deleted and replaced by the new override. This endpoint is idempotent: re-sending an identical override (same user and same start/end time) returns the existing override with a 200 status and does not recreate it.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/override_shifts). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description gives useful behavioral detail (overlap deletion/replacement, idempotency on identical user and time range), but it directly contradicts annotations: it claims the endpoint is idempotent while idempotentHint is false, and it says existing overlapping overrides are automatically deleted while destructiveHint is false. Per the rules, a description that contradicts annotations scores 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and followed by the two important behavioral exceptions. No filler, though the idempotency sentence is somewhat long and would benefit from being separated from the overlap replacement behavior.
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 mutation tool with an output schema and annotations, the description covers overlap replacement and idempotency but misses key context: permission requirements, what exactly is replaced, and whether replacement is scoped to the same user or schedule. The annotation contradictions also reduce confidence in the stated 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 only 50%, and for a nested two-parameter request the description does not explain schedule_id, the data wrapper, or required attributes such as user_id, starts_at, and ends_at beyond incidental mentions of 'user' and 'start/end time'. It does not compensate for the low schema 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?
States a specific verb and resource: 'Creates a new override shift from provided data.' Clear, but does not differentiate this from sibling tools like update_override_shift or list_override_shifts, so an agent must infer the boundary from the name alone.
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?
Implied usage is creation of an override shift, and overlap-replacement behavior is described, but there is no explicit when-to-use guidance versus update_override_shift, create_override_recommendation, or other schedule tools. An agent knows what the tool does but not clearly when it is preferred over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_playbookCreate PlaybookC
Creates a new playbook from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether creation fails on duplicate titles, what permissions are needed, or what the response contains — a notable gap for a non-idempotent 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?
A single short sentence with no filler, so it is front-loaded and efficient. However, its brevity comes from under-specification rather than tight writing — the one clause present ('from provided data') is essentially empty.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation with a deeply nested payload, an output schema, and multiple write siblings; the description should at minimum outline the required envelope and mention that it is a non-idempotent create. Because the output schema exists, return-value explanation is not required, but payload expectations and sibling routing are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, and the description does not compensate: it says only 'from provided data' and never mentions that the payload must contain a 'type' discriminator and an 'attributes' object with a required 'title'. The agent must open the schema to learn the envelope shape, and the description offers no hints about kind/content/external_url relationships.
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 a verb and resource ('Creates a new playbook'), which is more than a bare tautology, but 'from provided data' adds no distinguishing information. It never differentiates this from the sibling write tools update_playbook or the read siblings get_playbook/list_playbooks, so the agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus update_playbook or get_playbook, and no prerequisites or context are given. The only implied usage is the obvious 'creating something new', which the name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pulseCreate PulseC
Creates a new pulse from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavior beyond that: it says nothing about retry semantics for a non-idempotent create, required permissions, side effects such as attaching services/environments, or validation failures.
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?
A single short sentence with no filler and the operation front-loaded, so it is not padded. However, brevity here comes from omission rather than efficiency, leaving only a tautological restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains missing is essential: what a pulse represents, the required shape of the nested payload, and any prerequisites or side effects for a non-idempotent, open-world create.
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 reported as 0% at the top level, and the single `data` parameter is a deeply nested JSON:API-style envelope (type/attributes with summary, refs, labels, timestamps, service_ids, environment_ids) whose purpose the description never explains. The phrase "provided data" is circular and leaves the agent to reverse-engineer the envelope from nested field descriptions alone.
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?
"Creates a new pulse" gives a clear verb and resource, but "pulse" is an undefined domain concept and "from provided data" adds nothing. It does not distinguish this from siblings such as list_pulses, get_pulse, or update_pulse beyond the implied write verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to create a pulse versus using another tool, no preconditions (e.g., whether an incident or service must already exist), and no mention of alternatives. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_retrospective_processCreate Retrospective ProcessC
Creates a new retrospective process from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is known. The description adds no behavioral context beyond that—it does not explain what 'provided data' contains, what permissions are needed, or what happens on duplicate creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no redundant words, so it is concise and front-loaded. However, this is achieved through under-specification rather than useful compression—the sentence does not earn its place because it merely repeats the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested schema, required copy_from parameter, and multiple matching-criteria options, the description is far too thin. It provides no guidance on required fields or what the tool returns, though an output schema exists so return values need not be explained. The input side is critically under-described.
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 top-level parameter 'data' has no description in the schema or the tool description, and the stated schema description coverage is 0%. The phrase 'from provided data' gives no meaning about the required nested fields (e.g., name, copy_from, matching criteria). The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name and title almost verbatim: 'Creates a new retrospective process from provided data.' It names a verb and resource, but 'from provided data' is filler that adds no discriminating information. It does not differentiate this create tool from the many sibling retrospective tools (get, list, update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites or required inputs such as copy_from, and no exclusions. The agent is left to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduleCreate ScheduleC
Creates a new schedule from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the mutation/safety profile is covered structurally. The description adds nothing beyond that — no mention that repeated calls create duplicates (non-idempotent), no note on permission requirements, and no hint that several attribute flags are silently forced to false when slack_channel is absent (that logic lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence, so there is no bloat — but "from provided data" is dead weight and the sentence is under-specified rather than efficient. Conciseness here comes at the cost of information rather than from discipline.
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?
An output schema exists so return values need no explanation, and annotations cover the safety profile. However, for a tool taking a deeply nested payload with two required attributes and several conditional flags, the description omits nearly everything an agent would need before calling it, leaving the schema to carry the entire burden.
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 top-level parameter "data" is an undocumented nested envelope, and the description only says "provided data", adding no meaning. The leaf properties do carry schema descriptions, but the description does nothing to help the agent understand the required type/attributes wrapper or the relationship between name and owner_user_id.
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?
"Creates a new schedule" gives a specific verb+resource, but "from provided data" is pure filler and nothing distinguishes it from siblings like update_schedule, create_schedule_rotation, or list_schedules. An agent knows the operation type but not the scope of what a schedule contains or what creating one requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus update_schedule (existing schedule) or the rotation-creation tools that populate a schedule. No prerequisites (e.g., that an owner_user_id must exist) or sequencing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_schedule_rotationCreate Schedule RotationC
Creates a new schedule rotation from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/schedule_rotations). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it non-read-only, non-idempotent, non-destructive, and open-world, so the safety profile is partly covered. The description adds no behavior beyond that: no mention that retries will duplicate rotations (idempotentHint=false), that rotation members require a feature flag, that time_zone must match the schedule's, or any validation/rejection 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?
A single short sentence with no wasted clauses, but it is under-specified rather than efficient — nothing is front-loaded that an agent could not already read from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a nested create with an anyOf discriminator, a feature-gated members array, and cross-field time_zone constraints; the description covers none of it. The output schema excuse does not apply here because the gaps are on the input/behavioral side, not the return-value side.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only 2 top-level parameters but 50% schema description coverage, and the description contributes nothing — "from provided data" is filler. It does not explain the wrapper structure (type/attributes), the schedule_id requirement, or the anyOf branching in schedule_rotationable_attributes, which is the hardest part of the call to get right.
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?
"Creates a new schedule rotation" gives a clear verb and resource, but the rest ("from provided data") adds nothing and the sentence is essentially a restatement of the name/title. It does not distinguish this from siblings like update_schedule_rotation, list_schedule_rotations, or get_schedule_rotation, nor does it say what a rotation consists of.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_schedule_rotation or the schedule_rotation_active_day / schedule_rotation_user tools, and no mention of prerequisites (e.g., schedule nesting feature required for members). The agent must infer all routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_schedule_rotation_active_dayCreate Schedule Rotation Active DayC
Creates a new schedule rotation active day from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| schedule_rotation_id | Yes | Required. ID of the schedule rotation (fills `{schedule_rotation_id}` in /v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, open-world, non-destructive write. The description adds nothing beyond them: it does not say what happens if an active day already exists for that rotation/day_name (notably relevant given idempotentHint=false), whether permissions are required, or what the created resource 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?
It is a single short sentence with the verb and resource front-loaded, so it is not bloated. However, 'from provided data' is dead weight in an already minimal sentence, leaving the whole sentence with essentially one clause of 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?
This is a mutating tool with nested objects and an output schema, so the schema side is fine, but the description is incomplete: it does not explain the relationship to the parent rotation, duplicate-day behavior, or when to create versus update an active day. For a creation tool in a complex scheduling domain, that leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so the description is expected to compensate, yet it only says 'from provided data' — zero information about schedule_rotation_id or the nested day_name/active_time_attributes payload. The schema itself documents the key fields, so an agent can still call it, but the description contributes no semantic value at all.
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 verb+resource pair ('Creates a new schedule rotation active day') is specific enough to identify the operation, but the trailing 'from provided data' is pure filler and adds nothing. There is no differentiation from nearby siblings such as create_schedule_rotation, create_schedule_rotation_user, or update_schedule_rotation, which an agent must choose between in the same domain.
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 offers no when-to-use guidance, no prerequisites (e.g., that the rotation must already exist), and no mention of the alternative siblings like create_schedule_rotation_user or list_schedule_rotation_active_days. The agent has to infer all routing decisions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_schedule_rotation_userCreate Schedule Rotation UserC
Creates a new schedule rotation user from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| schedule_rotation_id | Yes | Required. ID of the schedule rotation (fills `{schedule_rotation_id}` in /v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the mutation and non-idempotency profile is covered structurally. The description adds nothing on top — no mention of duplicate-user handling, position collision behavior, or permission requirements, which matter given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted clauses, so it is concise. But the brevity reflects under-specification rather than efficiency — the one phrase beyond the name ("from provided data") conveys no 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?
Missing the mark. An output schema exists so return values needn't be described, but this is a nested-object write into an open-world resource, and the description supplies none of the operational context (position semantics, duplicate handling, wrapper shape) an agent needs to call it 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 sits at 50%, so the description should compensate, but it does not: "from provided data" gives no hint about the `data` wrapper, the fixed `type` enum, or the nested `attributes` object. The schema's own `user_id` description ("Schedule rotation user") is circular, and the description does nothing to clarify how position orders users in the rotation.
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 names a specific verb and resource ("Creates a new schedule rotation user"), so the general action is clear. However, "from provided data" is pure filler, and nothing explains what a rotation user actually is (a user assigned to a rotation slot, optionally ordered by position) or how it differs from siblings like create_schedule_rotation or list_schedule_rotation_users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as create_schedule_rotation, list_schedule_rotation_users, or create_override_shift, and no prerequisites stated (e.g., must the rotation exist, must the user be on the team). The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_serviceCreate ServiceC
Creates a new service from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the bar is lower, but the description still contributes nothing: it doesn't say whether a duplicate name errors or overwrites, what happens to the ignored deprecated slug, or that the call returns the created object (output schema exists). For a non-idempotent create, side-effect details matter.
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?
A single short sentence is well front-loaded, but brevity here reflects under-specification rather than discipline; there is room to state prerequisites and return behavior without bloat.
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 a non-idempotent create with a deeply nested payload and 0% top-level schema coverage, the description leaves out required envelope structure, uniqueness/validation behavior, and any pointer to the follow-up lookup tools. The presence of an output schema excuses explaining return values, but little else is covered.
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?
Top-level schema description coverage is 0% — the single `data` wrapper parameter is undocumented. The nested `attributes` fields are well described in the schema itself, but the description's "provided data" does nothing to explain the wrapper's envelope structure (type/attributes) or which field is required to identify the service.
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 names a specific verb and resource ("Creates a new service"), so the basic operation is identifiable, but it offers nothing to separate it from siblings like create_team, create_environment, or update_service beyond the noun. The phrase "from provided data" is filler that adds no distinguishing scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_service (for existing services) or list_services/get_service for lookups. No prerequisites, no mention of what the caller must have ready before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_severityCreate SeverityC
Creates a new severity from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly=false, idempotent=false, destructive=false and openWorld=true, so the safety profile is covered. The description adds nothing beyond them: no statement about duplicate-name behavior, what a 'severity' represents in this domain, whether notification fields (notify_emails, slack_channels) take effect immediately, or side effects of creation.
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?
A single front-loaded sentence with no digression, but it is under-specified rather than concise: 'from provided data' occupies space without conveying anything an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool wrapping a deeply nested request object with a required name and a criticality enum, plus idempotent=false, the description is too thin. An output schema exists so return values needn't be explained, but nothing here covers duplicate handling, required-field emphasis, or the domain meaning of a severity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one top-level parameter exists, with 0% schema description coverage at that level; the nested attribute properties do carry individual descriptions, but the description text itself contributes nothing to interpretation. It does not explain what the required 'name' does, that 'severity' is the criticality enum, or that 'slug' is deprecated and ignored.
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 verb+resource ('Creates a new severity') is identifiable, but the qualifier 'from provided data' is empty filler that adds nothing. It never distinguishes this from siblings such as update_severity or get_severity, so an agent must infer the create-vs-update boundary from the name alone.
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 call this versus update_severity (for an existing severity) or list_severities (to check whether one already exists). With idempotentHint=false there is a real risk of duplicate creation, and nothing here warns about that or tells the agent to look up first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_status_pageCreate Status PageC
Creates a new status page from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is known. The description adds nothing beyond that — no mention of required permissions, whether slug is auto-derived, default publication state, or side effects like domain attachment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, but it is under-specified rather than concise — the brevity comes at the cost of useful content, not from trimming 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?
For a complex mutation tool with a deeply nested request body, deprecations, and an output schema, the description omits everything an agent needs (what data must be supplied, what defaults apply, what gets created and returned). Annotations cover the mutation profile but not the domain 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?
Only a single 'data' parameter is described, but it is a deeply nested object with ~30 attributes including deprecated fields (slug, enabled, authentication_enabled), enums, and a required 'title'. The description says nothing about this structure, which attributes matter, or that slug is ignored — leaving the caller to parse a large schema unaided.
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 'Creates a new status page from provided data' essentially restates the tool name and title ('create_status_page' / 'Create Status Page'), adding only the filler phrase 'from provided data'. It does not distinguish the tool from siblings like create_status_page_template, update_status_page, or list_status_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus create_status_page_template or update_status_page, no prerequisites, and no stated conditions. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_status_page_templateCreate Status Page TemplateC
Creates a new template from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Description of the event the template will populate | |
| kind | No | The kind of the status page template | |
| title | Yes | Title of the template | |
| enabled | No | Enable / Disable the status page template | |
| position | No | Position of the workflow task | |
| created_at | Yes | Date of creation | |
| updated_at | Yes | Date of last update | |
| update_title | No | Title that will be used for the status page update | |
| update_status | No | Status of the event the template will populate | |
| status_page_id | Yes | ||
| status_page_id__path | Yes | Required. ID of the status page (fills `{status_page_id}` in /v1/status-pages/{status_page_id}/templates). (Path parameter) | |
| should_notify_subscribers | No | Controls if incident subscribers should be notified |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true; the description adds nothing beyond that profile (no mention that templates are attached to a specific status page, no duplicate-name behavior, no effect of should_notify_subscribers). It is at least consistent with the annotations rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted clauses, but it is concise by virtue of saying almost nothing rather than by being front-loaded with the essential scoping 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 12-parameter mutation tool, the description omits what the created template becomes attached to, what required data the caller must supply, and how it differs from the update/list siblings. The presence of an output schema excuses it from describing return values, but little else is covered.
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 92%, so the schema itself documents nearly every parameter; per the baseline rule that yields a 3. The description adds nothing about the 12 parameters, and notably does not clarify the odd server-populated created_at/updated_at being listed as required.
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 restates the tool name: 'Creates a new template from provided data' adds no resource detail, no scope, and no differentiation from the many sibling create_* tools or from update_status_page_template / list_status_page_templates. 'From provided data' is filler, not specification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this versus update_status_page_template or list_status_page_templates, and no prerequisite such as needing an existing status page. The agent must infer everything from the schema's required status_page_id__path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sub_statusCreate Sub StatusC
Creates a new Sub-Status from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description carries a lighter burden, but it adds nothing beyond them: no duplicate-handling, no permission requirements, and no explanation of how the created record relates to its parent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no repetition, but "from provided data" is dead weight and the length reflects under-specification rather than disciplined editing.
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?
An output schema and the annotations mean returns and safety need not be explained, but for a create tool with a nested required payload and a domain-specific enum, the description omits the two things an agent actually needs: the sibling it differs from and the meaning of parent_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — only the deprecated `slug` field carries any schema text — and the description says nothing about the payload. The most consequential ambiguity, what `parent_status` (started vs retrospective) means and how it constrains the new sub-status, is left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Creates a new Sub-Status"), so the basic action is unambiguous, but the trailing "from provided data" is pure filler and nothing distinguishes it from the many sibling creators, notably create_incident_sub_status and update_sub_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_incident_sub_status, no prerequisites (e.g. an existing parent incident/status), and no mention of what happens when a sub-status with the same name exists. The reader is left to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_teamCreate TeamC
Creates a new team from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond that, such as name/slug uniqueness, side effects, permissions needed, or how member and admin IDs must relate. There is no contradiction, but the description contributes almost nothing beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no unnecessary elaboration, but 'from provided data' is redundant filler and the one sentence is not front-loaded with any actionable detail for a complex create operation. It is concise without being usefully 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?
This is a complex mutation tool with a large nested request schema, many optional integration fields, feature-flag-gated attributes, and member/admin constraints, yet the description does not mention any of that. The output schema and annotations cover return values and safety profile, but the input behavior remains substantially unexplained.
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 description only says 'provided data' and does not explain the required name, the nested attributes shape, the deprecated slug behavior, or the many optional integration fields. Although the nested schema itself contains rich descriptions, the top-level parameter is undocumented in both the schema signal and the description, so the description fails to 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 states a specific verb and resource, 'Creates a new team', so an agent can distinguish it from list_teams, get_team, and update_team without opening the schema. The phrase 'from provided data' is tautological and adds no specificity, but the core purpose is still 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?
It gives no guidance on when to use this tool versus alternatives such as update_team or list_teams, and it states no prerequisites like required permissions or organization feature flags. The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_user_email_addressCreate User Email AddressC
Creates a new user email address from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/email_addresses). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-idempotent, open-world mutation, so the agent knows it writes. The description adds nothing beyond that: no duplicate-handling behavior, no error conditions, no note that retries may create repeated rows despite the non-idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is appropriately sized and front-loaded, but nearly all of it duplicates the name and title, so it earns little of 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 non-idempotent mutation with a nested request body, the description omits everything an agent needs beyond the raw schema: payload construction, duplicate/failure behavior, and side effects. An output schema exists, so return values needn't be described, but the input and write semantics remain thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description contributes zero parameter meaning. It does not explain the nested payload shape (type=user_email_addresses plus attributes.email) that the caller must construct.
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 sentence largely restates the tool name and title ('Creates a new user email address'), with 'from provided data' adding no information. It does not distinguish this from the sibling read tool get_user_email_addresses or clarify that this attaches an address to an existing user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternative guidance is given. It does not say whether the user must already exist, whether duplicates are rejected, or when to prefer another pathway.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_user_notification_ruleCreate User Notification RuleC
Creates a new user notification rule from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/notification_rules). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, but the description adds no behavioral context such as required permissions, side effects, or validation behavior. It does not contradict the annotations, but it also contributes nothing beyond the create semantics already implied by the name.
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 short sentence and front-loads the verb, so it is concise. However, 'from provided data' is filler that does not earn its place, and the brevity comes at the cost of useful detail.
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 annotations, a nested input schema, and an output schema, the description is too sparse for a creation tool. An agent gets no explanation of what a notification rule consists of, how the data payload should be formed, or how this creation operation relates to existing notification rules.
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 50%, and the description provides no additional explanation of the required user_id or nested data object. The schema documents many nested attributes, but the description does nothing to compensate for the undocumented parts or clarify how the data payload maps to a notification rule.
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, 'Creates a new user notification rule from provided data', essentially restates the tool name and title. It identifies the verb and resource, but does not distinguish this tool from siblings such as list_user_notification_rules or other create_* 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?
There is no guidance on when to create a notification rule versus listing, updating, or using related user-contact tools. The phrase 'from provided data' gives no usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_user_phone_numberCreate User Phone NumberC
Creates a new user phone number from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/phone_numbers). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the mutation profile is known. The description adds nothing beyond that — it does not say what happens on duplicate phone numbers, whether the user must exist, or any auth/scope requirement.
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?
A single short sentence with no wasted preamble, but it is under-specified rather than concise — "from provided data" occupies space without conveying 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?
An output schema exists, so return values need not be described, but for a write tool with a nested payload the description omits everything an agent would want to know before calling: user existence, phone uniqueness, and the required request shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the uncovered portion (the nested `data`/`type`/`attributes` wrapper) is already fully structured in the schema. The description contributes no meaning to `user_id`, `phone` format, or the required JSON:API-shaped payload, so it fails to compensate for the low 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?
States a specific verb and resource ("Creates a new user phone number"), so an agent can tell it is a write counterpart to get_user_phone_numbers. However, "from provided data" is filler and no sibling differentiation (e.g., vs. create_user_email_address or the phone-number list tool) is offered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of the related read tool (get_user_phone_numbers) or of duplicate/rate-limit considerations. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflowCreate WorkflowD
Creates a new workflow from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the write/duplicate-on-retry profile is covered. The description adds nothing beyond that — no mention of required permissions, validation behavior, or what happens to the nested trigger_params configuration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, so there is nothing to trim, but it is under-specified rather than concise — brevity here comes at the cost of all useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool whose schema contains deeply nested trigger configurations (action_item, alert, pulse, simple) and dozens of behavioral flags, one tautological sentence is grossly inadequate. An output schema exists, so return values need not be explained, but the input side is entirely unexplained.
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 an opaque `data` envelope whose top-level structure (type='workflows' plus attributes) is undocumented in the description; 'from provided data' merely echoes the parameter name. The nested schema does describe many attributes, but the description adds no meaning about the envelope, required fields, or the trigger_params union that dominates the payload.
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 restates the tool name and title almost verbatim: 'Creates a new workflow from provided data' adds only the words 'from provided data' beyond what the name already says. It does not distinguish this from the many sibling creation tools (create_workflow_task, create_workflow_group, create_workflow_run) or from update_workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_workflow or the other workflow-creation siblings, no prerequisites, and no mention of what a caller must know before creating a workflow. The agent is left to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflow_form_field_conditionCreate Workflow Form Field ConditionC
Creates a new workflow form field condition from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/form_field_conditions). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say that repeated calls will create duplicate conditions (relevant given idempotentHint=false), what validation failures look like, or what the created resource contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no redundancy, so nothing needs cutting. But the brevity comes from under-specification rather than economy – the one sentence carries no actionable information beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but this is a mutation tool with a nested object payload, conditional field semantics (the selected_* arrays apply only to select/multi_select kinds), and no annotations covering those behaviors. The description leaves all of that unexplained.
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?
Top-level schema description coverage is 50% – workflow_id is documented in-schema while the nested data object is not described at the top level, and the description's "from provided data" explains nothing. The inner attributes have item-level descriptions, but the description itself provides zero meaning about how type/attributes/incident_condition interrelate.
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?
"Creates a new workflow form field condition" names a specific verb and resource, and the create prefix does distinguish it from the sibling update_/get_/list_workflow_form_field_condition tools. However, the trailing "from provided data" is filler that restates the obvious and adds no scope, format, or differentiation detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus update_workflow_form_field_condition or the other form-field condition siblings, nor any prerequisites such as needing an existing workflow and form field. The agent must infer all routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflow_groupCreate Workflow GroupC
Creates a new workflow group from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true; the description adds no further context such as whether names must be unique, what permissions are needed, or what happens on conflict. It effectively restates the annotation profile without enrichment.
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?
A single short sentence, front-loaded with the verb, with no padding or repetition. Its brevity is efficient even though the content is thin.
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 mutation tool with a nested required payload, no output schema reference in the description, and no annotation coverage of side effects, the description is far too thin. An output schema exists so return values needn't be explained, but the creation contract (required fields, uniqueness, kind semantics) is left unaddressed.
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 sole parameter is a required nested object with required 'type' and 'attributes.name' fields, and the description says nothing about its shape or required contents. The nested schema does document individual fields well, which softens the gap, but the description itself contributes zero semantic value here.
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?
Names a specific verb and resource ('Creates a new workflow group'), so the agent knows the operation. However 'from provided data' is filler and the description does nothing to distinguish it from siblings like update_workflow_group or create_workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus create_workflow, update_workflow_group, or list_workflow_groups, and no prerequisites or preconditions are stated. The agent has to infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflow_runCreate Workflow RunC
Creates a new workflow run from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/workflow_runs). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context of its own — nothing about side effects of creating a run, whether runs can be duplicated on retry (non-idempotent), or what happens when workflow conditions fail.
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?
One short sentence with no filler, but the brevity reflects under-specification rather than tight editing; the sentence is not front-loaded with the details an agent actually needs to invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is structurally complex — two required params, a nested discriminator-style anyOf, and no output-schema concern — yet the description covers none of that complexity. For a create operation with an open-world, non-idempotent profile, the definition leaves an agent guessing at the key linkage semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description supplies none of the missing meaning. Most importantly, it never explains that `data.attributes` is a union requiring exactly one of incident_id, post_mortem_id, action_item_id, alert_id, or pulse_id — a semantic an agent cannot easily infer and the single sentence ignores.
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 names a specific verb and resource ('Creates a new workflow run'), so an agent can tell this is a write operation on the workflow-run resource. It does not differentiate from siblings such as list_workflow_runs, create_workflow, or create_workflow_task, and 'from provided data' adds little.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_workflow_runs or create_workflow, no preconditions (e.g., the workflow must exist / be enabled), and no mention of when a run should be created with a linked incident, alert, or pulse. Usage must be inferred entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflow_taskCreate Workflow TaskC
Creates a new workflow task from provided data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/workflow_tasks). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the bar is lower, but the description adds nothing beyond them. It omits important behavior: the payload is a large union of ~70 task types selected by task_type, there is a skip_on_failure control, and failures are per-task rather than transactional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is one short sentence with no padding, so nothing wastes space. But brevity here is under-specification rather than conciseness; the front-loaded content conveys almost no usable information for a tool this complex.
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 nested union schema, an output schema, and high required-field complexity, the description is drastically incomplete. An agent cannot tell from the description what kind of task to build, what the data envelope must look like, or how task_type drives the shape, and a wrong guess produces a validation failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and the description contributes nothing. The single most important decision — which task_params.task_type variant to construct and which fields that variant requires — is entirely absent from the prose, leaving the agent to reverse-engineer a massive anyOf from the schema alone.
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 names a verb (creates) and a resource (workflow task), but 'from provided data' is filler and the sentence essentially restates the title 'Create Workflow Task'. It does not convey the tool's real nature: a polymorphic workflow-step builder whose payload shape is determined by a task_type discriminator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all, despite siblings like create_workflow, update_workflow_task, get_workflow_task and list_workflow_tasks that an agent must choose between. Nothing tells the agent that a workflow must already exist and that workflow_id refers to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertGet AlertCRead-only
Retrieves a specific alert by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert (fills `{id}` in /v1/alerts/{id}). Pass it as `id` -- this tool has no `alert_id` argument. | |
| include | No | comma separated if needed. eg: environments,services,groups | |
| fields_alerts | Yes | Comma-separated list of alert fields to include (reduces payload size) | id,summary,status,started_at,ended_at,short_id,alert_urgency_id,source,noise |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention that `include` expands related resources, that `fields_alerts` shrinks the payload, or what happens with an invalid id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the terseness is part of why usage and behavioral context are missing.
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?
An output schema and complete parameter documentation exist, so return values and parameter syntax need not be restated. What is still missing is routing context against get_alert_by_short_id and list_alerts, which matters given the dense sibling set.
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%, including a note that `id` fills `{id}` and there is no `alert_id` argument, plus a full enum for `include`. The description adds no parameter meaning beyond that, so the baseline 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?
States a specific verb and resource (retrieves an alert by id), which is unambiguous on its own. However, it offers no differentiation from the sibling get_alert_by_short_id, so an agent must infer which lookup key applies where.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The sibling list contains get_alert_by_short_id, list_alerts, and get_alert_group, yet the description never says when this tool is the right choice versus those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_by_short_idGet Alert By Short IdARead-only
Get alert details by short_id or alert URL. Use this when a user pastes an alert URL or short_id from a pager notification and wants to investigate the alert.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The alert short_id (e.g., 'PhIQtP') or full alert URL (e.g., 'https://rootly.com/account/alerts/PhIQtP') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds the useful behavioral detail that the input may be a full URL rather than an ID, but says nothing about resolution failures (what happens if the short_id is unknown) or scope/permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste: the capability comes first, then the triggering scenario. Everything is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and annotations carry the safety profile; the parameter is fully documented in schema. What remains is minor — no mention of behavior when the short_id doesn't resolve — but an agent has enough to call this 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% and the single parameter already documents both the short_id form ('PhIQtP') and the URL form with a concrete example. The description restates the same dual-input fact without adding format, normalization, or error semantics beyond the schema — baseline 3 is correct.
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?
States a specific verb and resource ("Get alert details") and adds a distinguishing identifier trait — lookup by short_id or alert URL — which separates it from the generic get_alert sibling in the same family. It stops short of naming that sibling explicitly, so an agent must infer which one to pick.
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?
Gives a concrete triggering scenario: the user pastes an alert URL or short_id from a pager notification and wants to investigate. That is a clear positive-use condition. It does not state when to prefer get_alert instead, nor any exclusions, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_eventGet Alert EventARead-only
Retrieves a specific alert_event by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert event (fills `{id}` in /v1/alert_events/{id}). Pass it as `id` -- this tool has no `alert_event_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no further behavioral context such as error behavior or return characteristics, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It communicates the essential action and lookup key immediately.
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 get-by-id operation, rich annotations, complete schema, and an output schema, the description is nearly sufficient. A minor gap is the absence of any note about not-found behavior, but that is not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is fully documented in the schema, including the note about not using alert_event_id. The description adds only the phrase 'by id', 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?
States a specific verb (Retrieves) and resource (alert_event) with the lookup key (by id). It does not differentiate from siblings like list_alert_events or get_alert, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies this is the tool to use when you already have a specific alert event ID, distinguishing it implicitly from list_alert_events. However, it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_groupGet Alert GroupBRead-only
Retrieves a specific alert group by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert group (fills `{id}` in /v1/alert_groups/{id}). Pass it as `id` -- this tool has no `alert_group_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the retrieval-by-id scope and does not contradict annotations, but it provides no additional behavioral context such as error behavior or lookup semantics.
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?
A single front-loaded sentence with no filler. Every word contributes to the stated purpose.
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 get-by-id tool with rich schema coverage, annotations, and an output schema, the description is nearly complete. It could mention not-found behavior or lookup semantics, but the structured fields carry most of the burden.
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 schema itself explains that id accepts a UUID or slug and clarifies there is no alert_group_id argument. The description adds no parameter detail beyond 'by id', so the 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?
States a specific verb (Retrieves) and resource (alert group) with a clear scope (by id). It does not distinguish itself from siblings like list_alert_groups or get_alert, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the tool is used when an id is known, but there is no explicit guidance on when to choose this over list_alert_groups, get_alert, or update_alert_group. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_routeGet Alert RouteARead-only
Get a specific alert route by id. Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.
Optional Parameters
show_nested_ids (query parameter): When set to
true, the response will include IDs for all nested resources (destinations, condition_groups, conditions). This is useful when you need to reference these nested resources for updates or deletions via PATCH requests.
Example: GET /v1/alert_routes/{id}?show_nested_ids=true
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert route (fills `{id}` in /v1/alert_routes/{id}). Pass it as `id` -- this tool has no `alert_route_id` argument. | |
| show_nested_ids | No | Include the IDs of nested destinations, condition groups and conditions, for referencing them in PATCH updates or deletions |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe read-only operation. The description adds meaningful behavioral context by disclosing the Advanced Alert Routing access requirement and explaining how show_nested_ids enables later PATCH updates or deletions.
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 then uses a short optional-parameter section for supporting detail. It is slightly longer than strictly necessary, but the access note and parameter rationale both earn their 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 output schema and full schema description coverage, the description provides the remaining context an agent needs: access eligibility and the purpose of the optional nested-ID behavior. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining why show_nested_ids matters and providing a concrete request example, going beyond the schema's field-level description.
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 opens with a specific verb and resource: "Get a specific alert route by id." This clearly distinguishes it from sibling operations such as list_alert_routes, create_alert_route, and update_alert_route.
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?
It clearly implies usage when a specific alert route id is known and adds an important access prerequisite for Advanced Alert Routing. It does not explicitly name alternatives like list_alert_routes for discovering ids, but the context is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_routing_ruleGet Alert Routing RuleARead-only
Retrieves a specific alert routing rule by id. Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert routing rule (fills `{id}` in /v1/alert_routing_rules/{id}). Pass it as `id` -- this tool has no `alert_routing_rule_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no further behavioral context such as error handling for an unknown id or response characteristics, but the lower bar set by full annotations makes a 3 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?
Two sentences, purpose first, caveat second, zero filler. The support escalation is arguably noise but it is compact and clearly marked as a note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, an output schema, and complete annotations, the description supplies what is needed to invoke it. It stops short of explaining not-found behavior or whether the advanced-user caveat should make an agent prefer get_alert_route, which is a modest remaining gap.
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 the schema itself explains UUID-vs-slug formats and the naming pitfall. The description only says 'by id', adding nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieves a specific alert routing rule by id. The note about the Alert Routes endpoint distinguishes it from the sibling get_alert_route/list_alert_routes, though the differentiation is hedged on user type rather than concrete data.
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?
Explicitly names the alternative ('use the Alert Routes endpoint instead') and the condition (advanced alert routing user), which is more than most definitions offer. The fallback ('contact Rootly customer support') is not actionable for an agent and leaves the decision unresolved, keeping it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alerts_sourceGet Alerts SourceCRead-only
Retrieves a specific alert source by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert source (fills `{id}` in /v1/alert_sources/{id}). Pass it as `id` -- this tool has no `alert_source_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on whether a missing id errors, whether the response is cached, or any rate/scope caveats — so it does not earn credit above a minimal 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?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its terseness borders on under-specification rather than polished conciseness.
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 a simple single-parameter read with full schema coverage, complete annotations and an output schema, so most burdens are carried elsewhere. Given how low-risk and simple it is the description is adequate, but it offers no behavioral detail about failure modes for an invalid id.
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 schema does the real work, including the explicit warning that the argument is `id` and not `alert_source_id`. The description only restates "by id" and contributes no additional semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Retrieves a specific alert source by id"), which cleanly separates it from the sibling list_alerts_sources, create_alerts_source and update_alerts_source operations. It stops short of naming a sibling or describing what an alert source is, so it is clear but not maximally 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?
There is no guidance on when to use this tool versus list_alerts_sources or the other alert-source siblings, and no prerequisites or post-conditions are mentioned. The single sentence implies a lookup use case but leaves the choice between siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_urgencyGet Alert UrgencyBRead-only
Retrieves a specific alert urgency by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert urgency (fills `{id}` in /v1/alert_urgencies/{id}). Pass it as `id` -- this tool has no `alert_urgency_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond them — no note on behavior when the id is unknown (e.g. 404/empty result), no indication that the urgency may be shared across alerts, no extra context whatsoever.
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?
One front-loaded sentence with no filler or redundancy. It is efficient, though its brevity borders on under-specification rather than being maximally informative per word.
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?
An output schema exists, so return values needn't be described, and annotations cover safety. Still, for a get-by-id tool the description could usefully mention the failure mode for a missing id and point at list_alert_urgencies for discovery; as-is it is minimally adequate.
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 single `id` parameter is documented in detail in the schema (path substitution, naming caveat). The description's 'by id' only restates that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('a specific alert urgency') scoped by id, so the agent can distinguish it from list_alert_urgencies at a glance. It does not name the sibling alternatives explicitly, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'a specific ... by id' suggests fetching one known record rather than listing, but the description never says when to prefer this over list_alert_urgencies or where to obtain the id. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalogGet CatalogCRead-only
Retrieves a specific catalog by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog (fills `{id}` in /v1/catalogs/{id}). Pass it as `id` -- this tool has no `catalog_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds nothing on top of that — no error behavior for an unknown id, no note that other-organization catalogs may be visible given the open-world hint, no slug-vs-UUID implications.
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?
A single seven-word sentence with no filler and the resource named up front. It is efficient, though so terse that it flirts with under-specification rather than being optimally sized.
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 one-parameter read-only getter with an output schema, the description plus structured fields are largely sufficient to invoke the tool correctly. The missing piece is disambiguation from the many other catalog retrieval tools, which the description never addresses.
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 the id property already documents UUID-or-slug forms plus the explicit warning that no catalog_id argument exists. The description's "by id" simply restates the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Retrieves") and resource ("a specific catalog") with the lookup key (id), so an agent knows exactly what it does. It does not distinguish itself from catalog-adjacent siblings such as get_catalog_entity or list_catalogs, leaving that differentiation to the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the list_catalogs alternative for enumeration, and no note about when a catalog entity or property lookup is the right call instead. The agent must infer all routing decisions from the name and the surrounding tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalog_entityGet Catalog EntityBRead-only
Retrieves a specific Catalog Entity by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog entity (fills `{id}` in /v1/catalog_entities/{id}). Pass it as `id` -- this tool has no `catalog_entity_id` argument. | |
| include | No | comma separated if needed. eg: catalog,properties |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the schema—nothing about permissions, the effect of the 'include' parameter, or how missing entities are handled.
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?
A single front-loaded sentence with no wasted words. It states the action and resource immediately, which is ideal for a simple lookup 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?
The tool is simple, has an output schema, full schema parameter coverage, and annotations covering safety. The description is sufficient for correct invocation, though it could note the optional 'include' expansion or distinguish itself from neighboring catalog 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 description coverage is 100%, so both the id formats (UUID or slug) and the include enum are fully documented in the schema. The description mentions 'by id' but adds no meaning beyond the structured parameter definitions, making the baseline 3 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?
States a specific verb and resource ('Retrieves a specific Catalog Entity') and clarifies lookup is by id, which distinguishes it from list_catalog_entities. However, it does not differentiate itself from adjacent siblings such as get_catalog or get_catalog_entity_property, so an agent must infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like list_catalog_entities, get_catalog, or get_catalog_entity_property. The 'by id' phrasing implies a single-record lookup, but no exclusions or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalog_entity_propertyGet Catalog Entity PropertyARead-only
Deprecated: This endpoint is deprecated, please use include=fields on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.
Retrieves a specific Catalog Entity Property by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog entity property (fills `{id}` in /v1/catalog_entity_properties/{id}). Pass it as `id` -- this tool has no `catalog_entity_property_id` argument. | |
| include | No | comma separated if needed. eg: catalog_entity,catalog_field |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds lifecycle context the annotations cannot convey — that the endpoint is deprecated and may be superseded — which materially affects whether an agent should call it at all.
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 the deprecation warning front-loaded before the mechanical one-line purpose statement. No wasted prose.
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?
An output schema exists, so return values need no explanation, and the deprecation plus alternatives cover the main decision an agent faces. Only gap: no hint about what a deprecated-but-still-live property response looks like relative to the recommended `include=fields` path.
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 `id` property already explains that it fills `{id}` and that there is no `catalog_entity_property_id` argument; `include` is documented with an enum. The description adds nothing about either parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Retrieves a specific Catalog Entity Property by id' — and immediately marks it as deprecated with named replacements. An agent can distinguish it from list_catalog_entity_properties and get_catalog_entity without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The deprecation notice explicitly routes the agent elsewhere: 'use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments)'. That is strong when-not-to-use guidance, though it never says when this tool remains the correct choice (e.g., legacy IDs or older API versions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalog_propertyGet Catalog PropertyBRead-only
Retrieves a specific Catalog Property by id - returns catalog_properties type
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog property (fills `{id}` in /v1/catalog_properties/{id}). Pass it as `id` -- this tool has no `catalog_property_id` argument. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only a terse return-type note ('returns catalog_properties type') and says nothing about behavior on a missing id or any auth/scoping requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence with the action and lookup key first; nothing is padded. The trailing 'returns catalog_properties type' is slightly jargon-y and less informative than a plain statement of what comes back, but it is not wasteful enough to drop below 4.
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 one-parameter read tool with no output schema, the definition covers the essentials, but with no output schema the phrase 'returns catalog_properties type' leaves the agent guessing at the response shape and at not-found behavior. Adequate, not 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 coverage is 100% and the single `id` parameter is documented in detail, including the explicit negative hint that there is no `catalog_property_id` argument. The description contributes no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Retrieves') and a specific resource ('Catalog Property') qualified by lookup key ('by id'), which is enough to separate it from list_catalog_properties and from the entity-scoped get_catalog_entity_property. It stops short of explicitly naming a sibling to disambiguate against, so it is clear but not fully differentiating.
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?
'Retrieves a specific Catalog Property by id' implies the use case (single-item lookup when you already hold an id) but never states when to prefer it over list_catalog_properties or search paths. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_causeGet CauseCRead-only
Retrieves a specific cause by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the caus (fills `{id}` in /v1/causes/{id}). Pass it as `id` -- this tool has no `caus_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on behavior for a missing id, no pagination/inclusion behavior, nothing about how causes relate to incidents. It restates the name and stops.
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?
One short sentence, front-loaded with the verb and zero filler. It is efficient, though the extreme brevity edges toward under-specification rather than pure conciseness.
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 single-parameter read with an output schema and full annotation coverage, most of the burden is carried elsewhere, so the description is minimally sufficient. But it leaves an agent without any framing of what a 'cause' is in this system or how the tool relates to list_causes/create_cause.
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 schema itself is unusually helpful (UUID-or-slug anyOf, plus the explicit note that this tool has no 'caus_id' argument). The description's 'by id' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Retrieves') plus specific resource ('a specific cause') and the lookup key ('by id'), so the agent knows exactly what comes back. It implicitly contrasts with list_causes by saying 'a specific cause', but never names that sibling, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the phrase 'by id' — the reader must infer that this is the tool to pick when a cause id/slug is already known. There is no explicit when-to-use, no mention of list_causes or create_cause/update_cause as alternatives, and no prerequisite or not-found guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_userGet Current UserCRead-only
Get current user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, and an output schema exists, so the description's behavioral burden is low. Still, it adds nothing beyond the annotations – not even a note that the result is scoped to the token's owner, which is the one non-obvious behavior here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words, front-loaded and free of padding, so it is not verbose. But the brevity is under-specification rather than discipline – it says nothing an agent could not read off the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read with full annotations and an output schema, the essentials are structurally covered. The missing piece is the one thing the schema cannot express: that 'current' means the caller identified by the credentials, versus any user returned by get_user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete at 100% coverage. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of the obvious alternative get_user, which presumably fetches an arbitrary user by ID. The agent must infer that this is the 'self' variant from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_fieldGet Custom FieldCRead-only
Retrieves a specific custom_field by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom field (fills `{id}` in /v1/custom_fields/{id}). Pass it as `id` -- this tool has no `custom_field_id` argument. | |
| include | No | comma separated if needed. eg: options |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, and an output schema exists, so most of the burden is covered. The description adds no behavioral context of its own, such as whether the id must exist or what happens on a missing id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though its brevity contributes to the gaps in usage and behavioral guidance rather than being a model of tight completeness.
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 full schema coverage, an output schema, and read-only annotations, the description is minimally sufficient to invoke correctly. It omits sibling routing and error behavior, which are the remaining meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema even disambiguates the id argument name from a hypothetical custom_field_id and documents the `include` enum. The description's mention of id adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Retrieves) and resource (custom_field) and scopes it to a single record by id, which distinguishes it from list_custom_fields and create/update_custom_field siblings. It does not, however, differentiate it from the related get_custom_field_option tool, so an agent still has to check the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this instead of list_custom_fields, search variants, or get_custom_field_option. The only implied usage is 'you have an id and want that one field', which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_field_optionGet Custom Field OptionARead-only
[DEPRECATED] Use form field endpoints instead. Retrieves a specific custom field option by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom field option (fills `{id}` in /v1/custom_field_options/{id}). Pass it as `id` -- this tool has no `custom_field_option_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful lifecycle context via the deprecation notice, but does not add auth, rate-limit, or return-behavior details beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the deprecation warning front-loaded. Every sentence carries useful information and there is no filler.
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 low-complexity read tool with annotations and an output schema, the description is nearly complete. It gives the deprecation and alternative category, though naming the exact replacement sibling would make it fully self-contained.
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 single id parameter is fully documented in the schema. The description only restates that retrieval is by id, adding no syntax or format 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?
States a specific verb and resource: retrieves a specific custom field option by id. It also marks the tool deprecated and points to form field endpoints, but does not name the exact sibling replacement such as get_form_field_option.
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?
Explicitly says the tool is deprecated and directs callers to form field endpoints instead. It does not name the exact replacement tool or clarify any remaining legacy-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_formGet Custom FormBRead-only
Retrieves a specific custom form by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom form (fills `{id}` in /v1/custom_forms/{id}). Pass it as `id` -- this tool has no `custom_form_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the annotations — nothing about behavior on a missing/invalid id, whether related field sets or fields are included, or any permission requirement.
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?
A single front-loaded sentence with zero filler — the resource and lookup key come first. It is efficient but so terse that it borders on under-specification rather than true conciseness.
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?
An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. What remains missing is any framing of what a custom form is in relation to form sets/fields or what an agent should expect when the id is unknown.
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 schema itself documents the uuid-or-slug alternatives and even warns that the argument is `id`, not `custom_form_id`. The description's 'by id' adds nothing beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieves) and resource (custom form) plus the lookup key (by id), which clearly separates it from list_custom_forms and create/update_custom_form. It does not explicitly name those siblings, so an agent must infer the boundary rather than being told.
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?
Usage is only implied: 'by id' suggests it is the single-item lookup used when the form's id is already known, in contrast to list_custom_forms. There is no explicit when-to-use, when-not-to-use, or alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboardGet DashboardCRead-only
Retrieves a specific dashboard by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the dashboard (fills `{id}` in /v1/dashboards/{id}). Pass it as `id` -- this tool has no `dashboard_id` argument. | |
| include | No | comma separated if needed. eg: panels |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on what the 'include' expansion does, whether missing dashboards error or return empty, or cross-organization access behavior. An output schema exists, so return-value detail is not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste, correctly scoping the tool to one resource. It is very terse, but nothing in it is filler.
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 annotations and a full output schema present, the remaining gap is the undocumented 'include=panels' option and no routing guidance against list_dashboards. For a simple single-resource getter this is minimally adequate but leaves the agent to discover the panel-expansion behavior on its own.
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 'id' param already documents UUID-vs-slug formats and the naming pitfall; the description only restates 'by id'. The optional 'include' enum is never explained in the description, but the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves a specific dashboard by id'), which is clearly distinguishable from list_dashboards and get_dashboard_panel. It does not explicitly name the sibling it differs from, but the singular-resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_dashboards or get_dashboard_panel, and no mention of prerequisites or when the optional 'include=panels' expansion is appropriate. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_panelGet Dashboard PanelBRead-only
Retrieves a specific dashboard panel by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the dashboard panel (fills `{id}` in /v1/dashboard_panels/{id}). Pass it as `id` -- this tool has no `dashboard_panel_id` argument. | |
| range | No | Date range for panel data, ISO8601 timestamps separated by the word 'to'. Ex: '2022-06-19T11:28:46.029Z to 2022-07-18T21:58:46.029Z'. | |
| period | No | The time period to group data by. Accepts 'day', 'week', and 'month' | |
| time_zone | No | The time zone to use for period |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context, such as whether it returns panel configuration versus rendered time-series data, or how range/period/time_zone affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise for a straightforward retrieval 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?
The output schema and full input-schema coverage carry most of the burden, so the description need not explain return values. However, it does not clarify the relationship between this panel and its parent dashboard or whether the range-bearing call returns data rather than configuration.
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 schema fully documents all four parameters, including the id URL mapping and date-range format. The description itself adds no parameter meaning beyond what the schema provides, so the 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 states a specific verb and resource: retrieves a dashboard panel by id. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as get_dashboard, list_dashboards, or update_dashboard_panel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. An agent can infer that it is for fetching one panel by id, but the description does not mention when to use get_dashboard or list_dashboards instead, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environmentGet EnvironmentCRead-only
Retrieves a specific environment by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the environment (fills `{id}` in /v1/environments/{id}). Pass it as `id` -- this tool has no `environment_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds nothing beyond that: it does not say what happens if the id is unknown, whether partial or archived environments are returned, or any other behavioral trait beyond the annotation set.
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?
A single front-loaded sentence with no filler. It is efficient rather than padded, though its brevity borders on under-specification given the sibling landscape.
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?
An output schema exists, so return values needn't be described, and annotations carry the safety profile. What is still missing is the routing context (how to obtain the id, when list_environments is the better call), which matters in a catalog this dense.
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 single `id` parameter documents both UUID and slug forms plus the `{id}` path substitution. The description's "by id" merely repeats what the schema already establishes, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Retrieves a specific environment by id"), so the operation is unambiguous. It does not distinguish this from siblings such as list_environments, create_environment, or update_environment, so an agent must infer the difference from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_environments (to find an id) or update_environment, and no mention of prerequisites or failure conditions. The only usage hint -- that the argument is `id`, not `environment_id` -- lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_levelGet Escalation LevelCRead-only
Retrieves a specific escalation level by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation level (fills `{id}` in /v1/escalation_levels/{id}). Pass it as `id` -- this tool has no `escalation_level_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context of its own — nothing about what happens when the id is unknown, whether the response is cached, or any access constraints — so it contributes essentially nothing beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no filler, which suits a trivial getter. But it is under-specified rather than genuinely concise — the brevity comes at the cost of any differentiating or routing 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?
An output schema exists, so return values need not be explained, and the sole parameter is fully described in the schema; annotations cover safety. The remaining gap is the absence of any routing guidance among the many escalation-related siblings, which leaves the definition minimally viable rather than 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 coverage is 100% and the single `id` parameter is thoroughly documented there, including the path template and the explicit note about the argument name. The description's "by id" adds no information beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ("Retrieves") and a resource ("escalation level") scoped to a single record by id, so the basic purpose is understandable. However, it largely restates the name/title and does nothing to distinguish it from nearby siblings such as list_escalation_levels, get_escalation_policy, or update_escalation_level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_escalation_levels (all levels) or get_escalation_policy (parent object). The word "specific" hints at single-record retrieval, but the agent must infer that routing decision entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_pathGet Escalation PathCRead-only
Retrieves a specific escalation path by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation path (fills `{id}` in /v1/escalation_paths/{id}). Pass it as `id` -- this tool has no `escalation_path_id` argument. | |
| include | No | comma separated if needed. eg: escalation_policy_levels |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of what happens for an unknown id, whether the response expands with `include=escalation_policy_levels`, or any permission scope for this open-world read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, but that brevity comes from omission rather than economy — there is no front-loaded guidance on the optional expansion parameter or on error behavior.
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?
An output schema exists, so return values need not be described, and annotations cover the read-only safety profile. However, for a two-parameter retrieval tool the absence of any mention of the `include` parameter or of missing-id behavior leaves the definition at the minimum viable 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?
Schema description coverage is 100% and the schema itself clarifies the non-obvious naming (that the argument is `id`, not `escalation_path_id`). The description only echoes 'by id' and says nothing about the optional `include` enum, so it neither compensates nor detracts; 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 states a specific verb and resource ('Retrieves a specific escalation path') and scopes it to lookup by id, which separates it from list_escalation_paths and create/update_escalation_path in the sibling set. It stops short of explicitly naming a sibling or the alternative, so it is clear but not fully 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 gives no when-to-use guidance: it does not say to prefer this over list_escalation_paths when the id is known, nor when to add the `include` option. Usage must be inferred entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_policyGet Escalation PolicyBRead-only
Retrieves a specific escalation policy by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation policy (fills `{id}` in /v1/escalation_policies/{id}). Pass it as `id` -- this tool has no `escalation_policy_id` argument. | |
| include | No | comma separated if needed. eg: escalation_policy_levels,escalation_policy_paths |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note about error behavior on a missing/invalid id, or that `include` can expand nested resources. With annotations doing the heavy lifting, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence with zero filler, front-loading both the verb and the lookup key. Nothing to trim and nothing ambiguous in the phrasing itself.
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?
An output schema exists and parameter documentation is complete, so the description need not explain return values. What is missing is only the optional-expansion capability implied by `include` and any hint of when to prefer this over sibling getters — minor gaps given the structured data already present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself is unusually helpful (it warns there is no `escalation_policy_id` argument and documents the `include` enum with comma-separated syntax). The description adds no parameter meaning whatsoever, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('escalation policy') qualified by 'specific ... by id', which distinguishes it from list_escalation_policies and from the level/path getters. However, it never names those siblings or says what makes this the right pick among the escalation-policy family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of alternatives such as list_escalation_policies for discovery or the escalation-level/path getters. The agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_fieldGet Form FieldCRead-only
Retrieves a specific form_field by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field (fills `{id}` in /v1/form_fields/{id}). Pass it as `id` -- this tool has no `form_field_id` argument. | |
| include | No | comma separated if needed. eg: options,positions |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered by structured data. The description adds no behavioral context of its own — no note on error behavior for a bad id, no mention of what `include` expands, no return-shape hint beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the resource and lookup key are front-loaded. It is efficient but so minimal that there is no room for anything the agent actually needs beyond the 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?
An output schema exists and schema coverage is 100%, so return values and parameter formats are handled elsewhere. The remaining gap is the `include` parameter's practical effect (options vs positions expansion) and the relationship to get_form_field_option / get_form_field_placement, neither of which the description touches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `id` (uuid or slug, with the explicit 'no form_field_id argument' note) and the `include` enum are fully documented in the schema. The description's 'by id' merely restates the schema, earning the baseline 3.
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?
States a specific verb ('Retrieves') and a specific resource ('a specific form_field by id'), so an agent knows exactly what it returns. It does not differentiate from siblings like list_form_fields or get_form_field_option, which are the obvious confusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative is given; the agent must infer that this is the id-based single-record fetch versus list_form_fields. Nothing addresses prerequisites such as whether the form field must belong to a form set the caller can access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_field_optionGet Form Field OptionARead-only
Retrieves a specific form_field_option by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field option (fills `{id}` in /v1/form_field_options/{id}). Pass it as `id` -- this tool has no `form_field_option_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered structurally. The description adds nothing beyond that — no note on behavior for a missing/invalid id, no error or permission context — so it neither helps nor contradicts.
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?
A single front-loaded sentence with zero padding, appropriately sized for a one-parameter lookup tool. It is terse to the point of omitting routing hints, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only lookup with one required, fully documented parameter and an output schema that covers return values, so the description needn't explain more. Only the relationship to list_form_field_options is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description is unusually explicit (it fills `{id}` in /v1/form_field_options/{id} and warns there is no `form_field_option_id` argument). The description only restates 'by id', adding no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Retrieves a specific form_field_option by id'. The word 'specific' implicitly contrasts with the sibling list_form_field_options, but the description never names that sibling, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by id' phrasing implies a single-record fetch rather than enumeration, but there is no explicit guidance on when to use this versus list_form_field_options or how to obtain the id in the first place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_field_placementGet Form Field PlacementCRead-only
Retrieves a specific form_field_placement by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field placement (fills `{id}` in /v1/form_field_placements/{id}). Pass it as `id` -- this tool has no `form_field_placement_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note on not-found behavior, whether the id must be globally unique or scoped to a form set, or any other operational detail.
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?
A single front-loaded sentence with zero filler, which is appropriately terse. It is underspecified rather than bloated, but nothing in it is wasteful.
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 one fully documented parameter, an output schema, and complete read-only annotations, the description is minimally sufficient for correct invocation. It nonetheless omits what the entity represents in the form/field hierarchy and any failure-mode context, which for a tool surrounded by many similarly named form-related getters is a real gap.
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 id parameter's schema text is unusually thorough, documenting the path template and even warning against a `form_field_placement_id` naming mistake. The description's "by id" phrasing aligns with the schema without adding anything further, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Retrieves") and resource ("form_field_placement") scoped by id, so the basic purpose is understandable. However, it is essentially a restatement of the tool name and does not distinguish this from sibling reads such as get_form_field, get_form_field_option, or get_form_field_placement_condition, leaving ambiguity about which entity is being fetched.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no note on what to do if the id is unknown. The agent must infer usage entirely from the name and the single required parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_field_placement_conditionGet Form Field Placement ConditionBRead-only
Retrieves a specific form_field_placement_condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field placement condition (fills `{id}` in /v1/form_field_placement_conditions/{id}). Pass it as `id` -- this tool has no `form_field_placement_condition_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The description adds nothing beyond that — no error/not-found behavior, no rate limits, no indication of what a 'condition' record contains. It essentially restates the name.
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?
One short, front-loaded sentence with zero filler. It is tight but borders on under-specification rather than elegant brevity.
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 single-parameter getter with an output schema present and a fully documented id, the description supplies enough for an agent to invoke it correctly. Only the failure mode for a bad id is left undocumented, which is a minor gap at this 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?
There is a single parameter with 100% schema description coverage, including a useful note that it maps to `{id}` in the URL and is not named `form_field_placement_condition_id`. The description itself contributes no parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and a specific resource ('form_field_placement_condition') scoped to a single record by id. An agent can distinguish it from sibling list/get tools such as get_form_field_placement or get_form_set_condition by resource name, though the description does no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus listing/filtering tools, no prerequisites, no mention of what happens if the id is unknown. The only procedural hint lives in the schema's id description, not the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_setGet Form SetCRead-only
Retrieves a specific form_set by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form set (fills `{id}` in /v1/form_sets/{id}). Pass it as `id` -- this tool has no `form_set_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the name: no mention of error behavior for missing IDs, permission needs, or whether the response includes related conditions/fields.
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?
A single clean sentence with no filler. It is efficient, though the brevity borders on under-specification rather than true conciseness.
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?
An output schema exists and annotations cover the safety profile, so return values and side effects need no elaboration. Still, for a tool in a dense family of form_set and form_* siblings, the description leaves the agent without routing 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?
Schema description coverage is 100% and the schema itself explains the uuid-or-slug anyOf and even warns there is no `form_set_id` argument. The description contributes no additional parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves a specific form_set by id'), so the operation is unambiguous. However, it offers no differentiation from close siblings such as list_form_sets, get_form_set_condition, or update_form_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_form_sets or get_form_set_condition. The agent must infer that this is a single-resource lookup from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_set_conditionGet Form Set ConditionCRead-only
Retrieves a specific form_set_condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form set condition (fills `{id}` in /v1/form_set_conditions/{id}). Pass it as `id` -- this tool has no `form_set_condition_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered structurally. The description adds nothing further — no behavior on a missing/invalid id, no note about permissions or the open-world remote fetch implied by openWorldHint.
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?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity reflects under-specification rather than tight editing of richer 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?
With an output schema present and full parameter coverage, the essentials for calling the tool are in place. Still missing is any differentiation from the many sibling get_* and form-set tools, which is the main gap for an agent navigating this crowded namespace.
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 single `id` parameter is documented in detail, including a caution about the argument name. The description's 'by id' merely echoes the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieves) and resource (form_set_condition) scoped to a single record by id, which is unambiguous on its own. It does not, however, distinguish itself from nearby siblings such as get_form_set or update_form_set_condition, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use, when-not-to-use, or alternative tool guidance. Usage is only implied by the phrase 'by id' — an agent gets no help choosing between this and list_form_sets or get_form_set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionalityGet FunctionalityCRead-only
Retrieves a specific functionality by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the functionality (fills `{id}` in /v1/functionalities/{id}). Pass it as `id` -- this tool has no `functionality_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description adds no behavioral context of its own — no note on failure behavior for unknown or archived functionalities, nor on whether slug lookups resolve differently from UUID lookups.
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?
A single front-loaded sentence with no filler or repetition. It is efficient but so terse that it borders on under-specification rather than tight communication.
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 one required parameter fully documented in the schema and an output schema available for return values, the minimum an agent needs to call it correctly is present. Still, for a lookup tool the description could have added selection context against list_functionalities or get_functionality_* siblings.
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 schema itself explains that the single `id` argument accepts a UUID or a slug pattern, plus the misleading-argument caveat. The description only restates "by id", so the baseline 3 applies — the schema does all the work here.
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?
States a specific verb and resource ("Retrieves a specific functionality") scoped to a single record by id, which is unambiguous. It does not distinguish itself from siblings like list_functionalities or update_functionality, but the singular fetch semantics are clear from the name and phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_functionalities or the chart siblings (get_functionality_incidents_chart, get_functionality_uptime_chart). Nor does it state prerequisites, or what happens if the id does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionality_incidents_chartGet Functionality Incidents ChartCRead-only
Get functionality incidents chart
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the functionality (fills `{id}` in /v1/functionalities/{id}/incidents_chart). Pass it as `id` -- this tool has no `functionality_id` argument. | |
| period | Yes | ||
| include | No | Related resources to include (empty for minimal payload) | |
| page_size | No | Number of results per page (max: 20) | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no mention of chart granularity, period semantics, aggregation behavior, or pagination implications for a chart endpoint.
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 only four words, which is concise but reflects under-specification rather than efficiency. There is no front-loading of meaningful information because there is no meaningful information to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, an output schema, and a chart-oriented tool, the description leaves critical gaps: what the chart plots, what 'period' accepts, and how this differs from the uptime chart sibling. The output schema covers return values, but the input-side and selection context remain unexplained.
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 83%, well above the 80% threshold, so the schema itself documents id, include, page_size, page_number, and fields_incidents. The description adds no parameter semantics, but per the baseline rule a 3 is appropriate when the schema carries that load — though 'period' notably lacks a schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when to prefer the service/team chart variants, or what prerequisites exist. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionality_uptime_chartGet Functionality Uptime ChartCRead-only
Get functionality uptime chart
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the functionality (fills `{id}` in /v1/functionalities/{id}/uptime_chart). Pass it as `id` -- this tool has no `functionality_id` argument. | |
| period | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds nothing beyond that — no indication of the chart format returned, granularity, default time range, or permission requirements, which for an open-world read tool would be the useful extra 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?
It is short, but shortness here reflects under-specification rather than efficiency — the single sentence only echoes the title and carries no information an agent could act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still leaves the undocumented 'period' parameter, the chart granularity/window, and the distinction from sibling uptime/incidents chart tools entirely unaddressed.
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 only 50% schema description coverage, the description must compensate, but it does not. The required 'id' is well documented in the schema (UUID or slug, with an explicit note about the argument name), while 'period' is completely undocumented in both schema and description, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_service_uptime_chart, get_functionality_incidents_chart, or get_functionality. No prerequisites, time-window expectations, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_heartbeatGet HeartbeatBRead-only
Retrieves a specific heartbeat by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the heartbeat (fills `{id}` in /v1/heartbeats/{id}). Pass it as `id` -- this tool has no `heartbeat_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered and the description need not repeat it. The description adds nothing further — no mention of not-found behavior, slug-vs-uuid resolution, or error conditions — which is acceptable but thin against an already-complete annotation block.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, leading with the operation and its scoping qualifier. Nothing is wasted and nothing important is buried.
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 single-record lookup with an output schema, full param coverage and safety annotations, the terse description is broadly sufficient. It is missing any note about behavior when the id is unknown or whether slug and UUID are equally valid, which would help an agent recover from mistakes.
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 schema already spells out UUID-or-slug acceptance and even warns that the argument is `id`, not `heartbeat_id`. The description's 'by id' adds no syntax or format detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Retrieves') and resource ('a specific heartbeat by id'), which cleanly separates it from the list_heartbeats sibling. It does not, however, explicitly name its alternatives (list_heartbeats, create/update_heartbeat), so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_heartbeats or the create/update variants, and no mention of prerequisites such as needing a known id. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incidentGet IncidentARead-only
Retrieve a single incident with PIR-related fields for direct verification.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes | Incident reference to retrieve. Accepts: UUID, bare sequential number (4460), #4460, or INC-4460. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds only that PIR-related fields are included; it says nothing about behavior on an unknown ID (error vs empty), or any permission/visibility scoping on incidents.
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?
A single front-loaded sentence with no filler; the resource comes first and the qualifier follows. Nothing is redundant enough to cut.
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 one-parameter read tool with an output schema and full annotation coverage, this is close to sufficient. The only omission is how it relates to sibling retrieval tools (search_incidents, get_incident_retrospective), which would sharpen selection.
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 the incident_id description already enumerates the accepted formats (UUID, 4460, #4460, INC-4460). The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Retrieve a single incident') with a qualifier that it includes PIR-related fields, which distinguishes it from a plain list/get. It doesn't name or contrast with search_incidents or list_incidents, so the differentiation is implied rather than explicit.
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?
'for direct verification' hints at the use case (confirming details on one known incident), implying search_incidents for discovery. There is no explicit when-not guidance or named alternative, so an agent must infer routing from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_action_itemsGet Incident Action ItemsCRead-only
Retrieves a specific incident_action_item by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the action item (fills `{id}` in /v1/action_items/{id}). Pass it as `id` -- this tool has no `action_item_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: no indication of what happens when the id doesn't exist, no note on whether the response includes incident context, no permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the retrieval key is front-loaded. It is efficient rather than padded, though the brevity borders on under-specification.
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?
An output schema exists, so return values needn't be described, and the single parameter is fully documented in the schema. What's missing is the surrounding context an agent needs: how this relates to the list/update action-item siblings and what identifying an item by bare id implies.
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 schema itself carries a useful disambiguation note ('this tool has no `action_item_id` argument'). The description contributes no parameter detail beyond 'by id', so baseline 3 applies since the schema does the heavy lifting.
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 verb 'Retrieves' and resource 'incident_action_item by id' are present, so the basic action is clear. But the tool name is plural (get_incident_action_items) while the description says it returns 'a specific' item, and nothing distinguishes it from sibling list_incident_action_items or list_all_incident_action_items. An agent must infer that this is the single-record getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. With three action-item tools in the sibling set (list, list_all, get, plus update_incident_action_item), the description gives no signal about when to pick this one over the listers or the updater.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_custom_field_selectionGet Incident Custom Field SelectionARead-only
[DEPRECATED] Use form field endpoints instead. Retrieves a specific incident custom field selection by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident custom field selection (fills `{id}` in /v1/incident_custom_field_selections/{id}). Pass it as `id` -- this tool has no `incident_custom_field_selection_id` argument. | |
| include | No | Related resources to include (empty for minimal payload) | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so safety is covered structurally. The description's only additional disclosure is the deprecation status, which is genuinely valuable, but nothing is said about whether the endpoint still functions or whether calls will fail.
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 short sentences with the deprecation warning front-loaded ahead of the functional description – exactly the ordering an agent needs. Zero filler.
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?
An output schema exists and the parameters are fully documented, so the description's job is mostly to convey status and purpose, which it does. The one gap is not naming the concrete replacement tool, which matters for a deprecated 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?
Schema description coverage is 100% and the id parameter even explains the path substitution and the naming gotcha, so the description need not compensate. It adds nothing beyond the schema, which is the baseline-3 case for fully documented 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?
States a specific verb and resource ('Retrieves a specific incident custom field selection by id') and flags deprecation up front, which distinguishes it from the many active read tools. However, the redirect target is generic ('form field endpoints') rather than the exact sibling get_incident_form_field_selection.
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 '[DEPRECATED] Use form field endpoints instead' prefix does tell the agent to prefer an alternative, which is real usage guidance. But it never names the concrete sibling (get_incident_form_field_selection is right there in the sibling list), so the agent must still infer the replacement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_form_field_selectionGet Incident Form Field SelectionCRead-only
Retrieves a specific incident form field selection by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident form field selection (fills `{id}` in /v1/incident_form_field_selections/{id}). Pass it as `id` -- this tool has no `incident_form_field_selection_id` argument. | |
| include | No | Related resources to include (empty for minimal payload) | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds no behavioral context beyond the schema, such as how include expansions work or what happens if the id is missing.
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 clear sentence with no wasted words. It is front-loaded but minimal to the point of leaving important routing and behavioral details unstated.
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 and has an output schema, so return values need not be explained. However, the description does not clarify when to choose this tool over list_incident_form_field_selections or discuss the include/fields_incidents expansions.
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 id, include, and fields_incidents parameters. The description only says 'by id' and adds no 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 states a retrieval verb and resource, but it nearly restates the tool name and title with only the addition of 'by id'. It does not explicitly differentiate itself from sibling operations such as list_incident_form_field_selections or update_incident_form_field_selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus listing incident form field selections or updating one. Usage is only implied by the generic 'get by id' pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_meeting_transcriptsGet Incident Meeting TranscriptsARead-only
Read what was said on an incident's calls (Rootly Meeting Scribe).
Returns the spoken transcript of each recorded call for the incident, as text per speaker turn, alongside Scribe's own summary. Covers Google Meet, Zoom and Microsoft Teams calls that Scribe recorded.
Use this to catch up on a call you missed, or to pull decisions and actions out of an incident bridge. Recordings where nobody spoke are skipped rather than returned empty.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes | Incident UUID or number (e.g. '5185', '#5185', 'INC-5185'). | |
| max_recordings | No | How many recordings to read transcripts for, newest first. Max: 10; defaults to 3. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint, and the description goes beyond them by disclosing that empty recordings are skipped rather than returned as blanks, and that Scribe's summary accompanies the transcript. It also names the covered platforms, which sets expectations about what will be missing. Minor gap: no hint about size or truncation of long transcripts.
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?
Front-loaded with the core action, then payload shape, then use cases, then the empty-call caveat. Every sentence contributes distinct information and nothing is repeated from the schema or annotations.
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 an output schema present, return structure need not be explained; the description covers source platforms, payload nature, and the empty-result rule, which is everything an agent needs to decide and call correctly for a 2-parameter read 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 description coverage is 100%, with both incident_id formats and the max_recordings default/cap documented in the schema. The description adds nothing about parameters beyond the implication that multiple calls may be covered; baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a concrete verb and resource ('Read what was said on an incident's calls') and the body specifies the exact payload: per-speaker-turn transcript text plus Scribe's summary. It implicitly separates itself from metadata-oriented siblings like get_meeting_recording by scoping to spoken content, but never names a sibling outright.
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?
It supplies clear usage contexts ('catch up on a call you missed', 'pull decisions and actions out of an incident bridge'), which tells an agent when this is the right tool. It stops short of stating when NOT to use it or pointing at the recording-listing tools as the alternative for metadata-only needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_retrospectiveGet Incident RetrospectiveARead-only
Fetch the written retrospective for one incident.
Answers "what did we learn from INC-4460" in a single call. Returns the document's title, content and status alongside the incident it belongs to, and reports the incident's retrospective progress so a blank document is distinguishable from one nobody has started.
The route exists only in this direction: /post_mortems cannot be
filtered by incident, and the document carries no reference back to one,
so the id has to come from the incident's own relationship. Doing that
here keeps a caller from having to know it. Use
list_incident_post_mortems to search across retrospectives instead.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes | Incident whose retrospective to fetch. Accepts: UUID, bare sequential number (4460), #4460, or INC-4460. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds real value beyond them: it names the returned fields (title, content, status, owning incident) and the retrospective-progress signal that lets a caller tell a blank document from an unstarted one. It does not discuss permissions or error behavior for a nonexistent incident, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in a one-line opener, with the motivating question and routing rationale following. The routing paragraph is longer than strictly necessary, but every sentence carries information an agent cannot get from the schema or annotations.
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 single-parameter, read-only fetch with an output schema and full annotation coverage, this description supplies everything else needed: what is fetched, what comes back, how a blank result should be interpreted, and which sibling to use for the alternative task.
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 the schema itself enumerates the accepted id formats (UUID, 4460, #4460, INC-4460), so the baseline is 3. The description still adds meaning by explaining that the incident id must be sourced from the incident's own relationship rather than from the retrospective route, which is a non-obvious constraint on how the parameter should be obtained.
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 opening sentence states a specific verb and resource (fetch the written retrospective for one incident) and the framing question ('what did we learn from INC-4460') makes the scope unambiguous. It is cleanly distinguishable from siblings such as list_incident_post_mortems and get_incident_retrospective_step.
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?
Explicitly routes the agent: use this tool for a single incident's retrospective, use list_incident_post_mortems to search across retrospectives. It also explains why the incident-scoped route is required (the document carries no back-reference and /post_mortems cannot be filtered by incident), which is exactly the when/when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_retrospective_stepGet Incident Retrospective StepBRead-only
Retrieves a specific incident retrospective step by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident retrospective step (fills `{id}` in /v1/incident_retrospective_steps/{id}). Pass it as `id` -- this tool has no `incident_retrospective_step_id` argument. | |
| include | No | Related resources to include (empty for minimal payload) | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, and the description is consistent with them. However, the description adds no behavioral context beyond annotations, such as auth requirements, rate limits, or how include/fields affect payload shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted text. The core action and target resource are immediately clear.
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?
An output schema and rich annotations exist, and all parameters are documented in the schema, so the description is nearly complete for a simple getter. It could still say more about when to use this versus other retrospective-step siblings.
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 fully documents id, include, and fields_incidents. The description only reinforces that retrieval is by id and adds no syntax or usage 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 states a specific verb and resource: retrieves an incident retrospective step by id. It is clear about the operation, though it does not explicitly distinguish this tool from the sibling get_retrospective_step.
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 the caller has a step id, but gives no explicit when-to-use guidance or comparison with alternative tools such as get_retrospective_step or get_incident_retrospective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_sub_statusGet Incident Sub StatusCRead-only
Retrieves a specific incident_sub_status by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident sub status (fills `{id}` in /v1/incident_sub_statuses/{id}). Pass it as `id` -- this tool has no `incident_sub_status_id` argument. | |
| include | No | comma separated if needed. eg: sub_status,assigned_by_user | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds nothing beyond that: no note on permissions, whether an unknown id errors or returns empty, or what the include/fields expansion costs. With the bar lowered by annotations, this still contributes no 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?
A single short sentence with no filler, so nothing is wasted, but it is under-specified rather than efficient — the brevity comes at the cost of disambiguation the agent actually needs.
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?
An output schema exists so return values need not be described, and the schema documents all three parameters. What is missing is the conceptual context: what an incident sub status is, and how this differs from the sibling get_sub_status. For a get-by-id tool in a dense namespace of near-duplicate names, that gap matters.
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 schema itself is unusually helpful (the id property even warns there is no incident_sub_status_id argument). The description adds no parameter meaning of its own, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (Retrieves) and a resource (incident_sub_status) scoped by id, but it is essentially a restatement of the name/title. It never clarifies how an 'incident_sub_status' differs from the plain 'sub_status' resource exposed by the sibling get_sub_status and list_sub_statuses, so an agent cannot confidently pick between them from this text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of the obvious alternatives (get_sub_status, list_sub_statuses, update_incident_sub_status). The agent must infer that this is the single-record fetch of an incident-scoped sub-status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_typeGet Incident TypeBRead-only
Retrieves a specific incident_type by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident type (fills `{id}` in /v1/incident_types/{id}). Pass it as `id` -- this tool has no `incident_type_id` argument. | |
| include | No | Related resources to include (empty for minimal payload) | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on what is returned, whether missing ids error, or how include/fields affect the payload.
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?
A single short sentence with the key qualifier ('by id') front-loaded and no wasted words. It is efficient but borders on under-specification rather than tight completeness.
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, an output schema exists, and annotations plus a fully documented schema cover most needs. Still, the description does nothing to explain the include/fields_incidents expansion behavior, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the uuid/slug anyOf and the include/fields_incidents options, so the schema carries the parameter burden. The description only restates 'by id' and adds no semantics 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?
States a specific verb ('Retrieves') and resource ('incident_type') scoped to a single record by id, which distinguishes it from list_incident_types. It does not, however, explicitly name the sibling list/create/update tools it differs from.
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?
'by id' implies the precondition that the caller already has an identifier, but there is no explicit when-to-use guidance or reference to list_incident_types for discovery. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_investigationGet InvestigationARead-only
Get an investigation's verdict: summary, root cause, confidence, hypotheses, evidence, causal chain and open_questions (what Rootly couldn't verify, so you can check them with tools only you have).
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | No | Use the latest investigation of this alert. | |
| incident_id | No | Use the latest investigation of this incident. | |
| investigation_id | No | Investigation id. Omit to use alert_id/incident_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that open_questions represent what Rootly could not verify — valuable context — but says nothing about behavior for an incomplete/cancelled investigation or whether the call blocks. A 3 is appropriate given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the outcome (the verdict) followed by the payload contents. Every clause carries information; nothing is padding.
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 an output schema present, the description needn't detail return values, and the selector logic lives in the schema. The only notable gap is investigation lifecycle state — an agent may not know whether this tool returns partial results for a running investigation or should be preceded by get_investigation_progress.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three selectors (alert_id, incident_id, investigation_id) are documented in the schema, including the omit-to-fallback rule. The description adds no parameter semantics of its own, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (investigation) and immediately enumerates the returned payload: verdict, summary, root cause, confidence, hypotheses, evidence, causal chain, open_questions. This clearly distinguishes it from list_investigations (enumeration) and get_investigation_progress (status polling).
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 parenthetical about open_questions implies a follow-up workflow (verify with your own tools), which is useful implied guidance. However, nothing states when to prefer this over get_investigation_progress or list_investigations, nor what to do if the investigation is still running. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_investigation_progressGet Investigation ProgressARead-only
Follow a running investigation. Returns new steps and tool calls since after_cursor, waiting up to wait_seconds for them. Keep calling with after_cursor=next_cursor until done is true.
| Name | Required | Description | Default |
|---|---|---|---|
| after_cursor | No | next_cursor from the previous call. | |
| wait_seconds | No | How long to wait for new progress before returning (0-15s). | |
| investigation_id | Yes | Investigation id (UUID). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds genuinely new behavior: this is a long-poll that blocks up to wait_seconds and returns only deltas since a cursor. It does not describe terminal states beyond 'done is true' or behavior on an invalid/finished investigation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose and then the loop mechanics. Every sentence carries actionable information with no padding.
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?
An output schema exists, so return-value explanation is not needed, and the description covers the polling contract end to end. Minor gaps remain around edge cases (already-finished investigation, cancelled runs), but nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already documented in the schema (after_cursor, wait_seconds range, investigation_id UUID). The description reinforces the cursor-chaining pattern but adds no format or semantics beyond what the schema states; 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?
States a specific verb and resource — follows a running investigation and returns incremental steps and tool calls. This clearly distinguishes polling from get_investigation or list_investigations in practice, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit usage loop: call with after_cursor=next_cursor and repeat until done is true. It does not state when to prefer this over get_investigation (for a snapshot) or what to do if the investigation was cancelled, so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_call_routerGet Live Call RouterBRead-only
Retrieves a specific Live Call Router by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the live call router (fills `{id}` in /v1/live_call_routers/{id}). Pass it as `id` -- this tool has no `live_call_router_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no note on not-found behavior, no indication that it reads live state, no mention of permissions. Since annotations carry the load, this is a minimal addition rather than a 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?
A single front-loaded sentence with zero filler; the purpose and retrieval key come first. It is efficient, though the terseness comes partly from omitting useful context rather than from disciplined editing alone.
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 required param, fully described in schema, output schema present, annotations covering the safety profile), so the description need not explain return values or behavior in depth. What remains missing is minor routing context relative to the create/update/list siblings.
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 id property is already well documented, including the explicit disambiguation note that there is no `live_call_router_id` argument. The description adds no parameter meaning beyond 'by id', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieves) and resource (Live Call Router) with the retrieval key (by id), so an agent can tell this apart from list/create/update siblings by the 'specific ... by id' scoping. It stops short of naming the siblings explicitly, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by id' signals a single-resource fetch, which implicitly contrasts with list_live_call_routers, but the description never says when to use this vs the list tool or what to do if you lack an id. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meeting_recordingGet Meeting RecordingBRead-only
Retrieve a single meeting recording session including its status, duration, speaker count, word count, and transcript summary.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Meeting Recording UUID | |
| include | No | comma separated if needed. eg: transcript |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that it returns status, duration, speaker count, word count, and transcript summary, but does not clarify authorization requirements, error behavior for missing/inaccessible recordings, or what the 'include' parameter changes behaviorally.
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?
A single efficient sentence that front-loads the action and then lists return fields. It is appropriately sized, though the bulky field enumeration overlaps with what the output schema likely documents.
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 an output schema and safety annotations present, the description need not document return structure or safety. However, for a tool with a non-obvious 'include=transcript' option and nearby list-oriented siblings, it should do more to explain selection and inclusion semantics.
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 baseline is 3. The description does not explain the 'id' format beyond what the schema says, and it does not clarify the important semantic distinction of 'include=transcript' (full transcript retrieval versus the default transcript summary). It adds little parameter 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?
States a specific verb and resource: retrieve a single meeting recording session, and enumerates the fields returned (status, duration, speaker count, word count, transcript summary). The word 'single' implicitly distinguishes it from list_meeting_recordings and list_all_meeting_recordings, though those siblings are not named.
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?
Usage is only implied: an agent can infer this is the by-id fetch tool to use after listing recordings. There is no explicit guidance on when to use this versus list_meeting_recordings, list_all_meeting_recordings, or get_incident_meeting_transcripts, and no mention of prerequisites such as needing an id from a list call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_oncall_handoff_summaryGet Oncall Handoff SummaryARead-only
Get current on-call handoff summary. Shows who's currently on-call and who's next.
Optionally fetch incidents (set include_incidents=True, but slower).
Each responder's role is their On-Call role (e.g. Responder, Admin);
shifts themselves carry no role.
Use filter_by_region=True with a timezone to see only people on-call during business hours in that region (e.g., timezone='Asia/Tokyo', filter_by_region=True shows only APAC on-call during APAC business hours).
Useful for:
Quick on-call status checks
Daily handoff meetings
Regional on-call status (APAC, EU, Americas)
Team coordination across timezones
| Name | Required | Description | Default |
|---|---|---|---|
| team_ids | No | Comma-separated list of team IDs to filter schedules (optional) | |
| timezone | No | IANA timezone for display and filtering (e.g., 'America/Los_Angeles', 'Europe/London', 'Asia/Tokyo'). Defaults to UTC. | UTC |
| schedule_ids | No | Comma-separated list of schedule IDs (optional) | |
| filter_by_region | No | If True, only show on-call for people whose shifts are during business hours (9am-5pm) in the specified timezone. Defaults to False. | |
| include_incidents | No | If True, fetch incidents for each shift (slower). If False, only show on-call info (faster). Defaults to False for better performance. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds meaningful beyond-annotation context: the performance tradeoff of include_incidents ('slower' vs 'faster') and the semantic nuance that `role` is the On-Call role while shifts carry none. These are useful behavioral details, though return-shape/pagination is left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the include_incidents note are front-loaded, and the filter_by_region example is well-placed. The four-item 'Useful for' list is slightly padding-like and overlaps the usage guidance, but overall the text is organized and readable.
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 an output schema covering return values and annotations covering the safety profile, the description supplies the operational nuance an agent needs (regional filtering, incident-fetch cost, role semantics). The only gap is no explicit sibling disambiguation, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description still adds value by giving a concrete example of timezone+filter_by_region interaction ('Asia/Tokyo' shows only APAC business-hours on-call) and clarifying the speed impact of include_incidents. It does not explain team_ids or schedule_ids 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?
States a specific verb and resource ('get current on-call handoff summary') and defines the content ('who's currently on-call and who's next'), which is concrete enough for an agent to grasp the scope. It does not, however, differentiate itself from closely-named siblings like get_oncall_schedule_summary or check_responder_availability, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context via the 'Useful for' list (handoff meetings, regional status, cross-timezone coordination) and explains the trigger conditions for optional flags (include_incidents=True is slower; filter_by_region=True needs a timezone). It lacks explicit when-not or alternative-tool routing, keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_on_call_roleGet On Call RoleBRead-only
Retrieves a specific On-Call Role by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the on call role (fills `{id}` in /v1/on_call_roles/{id}). Pass it as `id` -- this tool has no `on_call_role_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, and the description adds no behavioral context beyond them — no error/not-found behavior, no note about the open-world lookup, nothing about what makes this call fail. With annotations carrying the safety profile the bar is lower, but there is essentially no added information.
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?
A single short sentence with the key qualifier ('by id') front-loaded and zero filler. It is a bit terse rather than padded, so the only knock is that the brevity borders on under-specification.
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 one-parameter read tool with full schema coverage, an output schema, and annotations covering safety, this is nearly sufficient — an agent knows exactly what to pass and what to expect. The missing piece is failure semantics (what happens if the id doesn't exist), which is minor here.
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 the schema itself explains that `id` fills the /v1/on_call_roles/{id} path and even warns there is no `on_call_role_id` argument. The description contributes nothing beyond 'by id', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('On-Call Role') scoped by 'by id', which implicitly distinguishes it from the sibling list_on_call_roles. It does not explicitly name the list/update siblings, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you must already have an id, which suggests it follows a list call, but no sibling (list_on_call_roles, update_on_call_role) is named and there are no exclusions or prerequisites. Adequate for a trivial getter, but it offers no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_oncall_schedule_summaryGet Oncall Schedule SummaryARead-only
Get compact on-call schedule summary for a date range.
Returns one entry per user per schedule (not raw shifts), with aggregated hours. Optimized for AI agent context windows.
Use this instead of list_shifts when you need:
Aggregated hours per responder
Schedule coverage overview
Responder load analysis with warnings
One row per user per schedule, so the response stays the same size whether the range is a week or a year. For individual shift times, or for one person's schedule, use list_shifts instead.
Ranges longer than the upstream cap are split into windows and merged automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date (ISO 8601, e.g., '2026-02-15') | |
| team_ids | No | Comma-separated team IDs to filter (optional) | |
| start_date | Yes | Start date (ISO 8601, e.g., '2026-02-09') | |
| schedule_ids | No | Comma-separated schedule IDs to filter (optional) | |
| include_user_ids | No | Include numeric user IDs for cross-platform correlation |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds real behavioral context beyond them: the auto-splitting/merging of ranges that exceed the upstream cap, and the guarantee that response size is stable regardless of range length. It stops short of describing pagination, error behavior, or what the 'warnings' look like, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior, then a bulleted decision list, then the fallback rule — easy to scan. There is minor redundancy between 'one entry per user per schedule (not raw shifts)' and the later restatement, though the second instance adds the size-stability point.
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 an output schema present, the description need not detail return fields, and it still conveys aggregation semantics, constant response size, and range-splitting behavior. Combined with full schema coverage and read-only annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema, which sets the baseline at 3. The description only reinforces the date-range semantics (long ranges split and merged) and does not touch team_ids, schedule_ids, or the include_user_ids toggle, so it adds little parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get compact on-call schedule summary for a date range') and immediately defines the return granularity ('one entry per user per schedule, not raw shifts') with aggregated hours. It is clearly differentiated from list_shifts, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates the three conditions that select this tool (aggregated hours, coverage overview, responder load analysis) and names the alternative with the inverse condition ('For individual shift times, or for one person's schedule, use list_shifts instead'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_on_call_shadowGet On Call ShadowARead-only
Retrieves a specific On Call Shadow configuration by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the on call shadow (fills `{id}` in /v1/on_call_shadows/{id}). Pass it as `id` -- this tool has no `on_call_shadow_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds little beyond confirming a specific retrieval by ID, but it does not contradict the annotations or omit critical behavior for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence with no wasted language. The key action and lookup key are stated immediately.
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 one-parameter read operation, complete schema coverage, annotations, and an output schema, the description is nearly sufficient for correct invocation. A brief note about how to obtain the ID would make it 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 single id parameter is fully documented in the schema. The description reinforces that lookup is by ID but adds no syntax or format details 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 states a specific verb and resource: retrieves a specific On Call Shadow configuration by ID. This clearly distinguishes it from list/create/update siblings, though it does not explicitly name those 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?
The phrase 'by ID' implies the tool should be used when the On Call Shadow ID is already known. However, there is no explicit guidance on when to use it versus list_on_call_shadows or how to obtain the ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_oncall_shift_metricsGet Oncall Shift MetricsARead-only
📊 Get on-call workload metrics and shift statistics - ESSENTIAL for fairness and planning.
WHEN TO USE: • Monthly/quarterly reviews of on-call distribution • Before adjusting schedules to ensure fair workload • For management reporting on on-call burden • When investigating potential on-call burnout
Returns shift counts, total hours, and statistics grouped by user, schedule, or team.
Examples:
Monthly report: start_date='2025-10-01', end_date='2025-10-31'
Specific user: start_date='2025-10-01', end_date='2025-10-31', user_ids='123,456'
Specific team: team_ids='team-1' (will query schedules for that team first)
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date for metrics (ISO 8601 format, e.g., '2025-10-31' or '2025-10-31T23:59:59Z') | |
| group_by | No | Group results by: 'user', 'schedule', 'team', or 'none' | user |
| team_ids | No | Comma-separated list of team IDs to filter by (requires querying schedules first) | |
| user_ids | No | Comma-separated list of user IDs to filter by (optional) | |
| start_date | Yes | Start date for metrics (ISO 8601 format, e.g., '2025-10-01' or '2025-10-01T00:00:00Z') | |
| schedule_ids | No | Comma-separated list of schedule IDs to filter by (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: 'team_ids ... will query schedules for that team first', disclosing an extra lookup step and its implications. It omits pagination and any cost/latency caveats for large ranges, keeping it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then return shape, then examples — a clean scannable order. Slight verbosity from the emoji, the ALL-CAPS 'ESSENTIAL' emphasis, and three examples, but each example demonstrates a distinct filter mode rather than repeating itself.
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 full schema coverage, annotations, and an existing output schema, the description need not explain return values and correctly does not try to. What remains thin is guidance on time-range size limits and what happens when filters yield no schedules, which matters for an open-world aggregation 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 baseline is 3; the description earns an extra point by supplying worked examples that show the comma-separated ID convention ('user_ids=123,456') and the distinction between filtering by user vs team, meaning beyond the schema's per-field text. It does not explain 'group_by' values in more depth than the schema already does.
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?
States a specific verb and resource ('Get on-call workload metrics and shift statistics') and specifies the returned metrics (shift counts, total hours, grouped statistics), which distinguishes it in spirit from raw-listing siblings like get_schedule_shifts or list_shifts. However, no sibling tool is named, so the agent must infer the aggregate-vs-raw distinction.
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 'WHEN TO USE' block gives four concrete scenario triggers (reviews, schedule adjustments, management reporting, burnout investigation), which is well above average. It stops short of explicit exclusions or naming alternatives, so the agent still has to reason about when a sibling shift-listing tool is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_override_shiftGet Override ShiftARead-only
Retrieves a specific override shift by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the override shift (fills `{id}` in /v1/override_shifts/{id}). Pass it as `id` -- this tool has no `override_shift_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds no further behavior context (e.g., what happens on a missing ID, or which related objects are embedded), which is acceptable for a trivial read but earns no extra credit.
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?
A single short sentence with the verb and lookup key front-loaded. No filler, no redundancy with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so return values and side effects need not be described. For a one-parameter, single-resource getter the description is adequate, though it omits error/not-found 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% and the schema itself carries the useful note about passing the argument as `id` rather than `override_shift_id`. The description only echoes 'by id', adding nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves a specific override shift') plus the lookup key ('by id'), which distinguishes it from the list/create/update siblings in the same family. It does not explicitly name those siblings, but the get-by-id framing 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?
Usage is only implied: 'by id' signals that you already have a known override shift ID, which stands in contrast to list_override_shifts. No explicit when-to-use, when-not, or named alternative appears in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbookGet PlaybookCRead-only
Retrieves a specific playbook by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the playbook (fills `{id}` in /v1/playbooks/{id}). Pass it as `id` -- this tool has no `playbook_id` argument. | |
| include | No | comma separated if needed. eg: severities,environments,services |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the description needn't restate safety. But it adds nothing beyond them: the notable behavior of the `include` parameter (side-loading related severities/environments/services/groups/causes/incident_types) and any not-found or permission behavior go unmentioned.
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?
A single front-loaded sentence with zero filler; the resource and scoping key appear immediately. It is efficient but so short that the brevity reads as under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the input schema is fully documented. However, for a two-parameter read tool with a non-obvious `include` expansion option, the description leaves the agent without any statement of what the tool returns or how expansion changes the payload.
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%, including a helpful note that the argument is `id` and not `playbook_id`, so the schema carries the parameter burden. The description only echoes 'by id' and says nothing about the `include` enum, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('a specific playbook') scoped by id, which is enough to separate it from list_playbooks. It does not name the sibling get_playbook_task or explain the relationship, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_playbooks or get_playbook_task. The agent must infer from the tool name alone that this is the single-record fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbook_taskGet Playbook TaskCRead-only
Retrieves a specific playbook_task by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the playbook task (fills `{id}` in /v1/playbook_tasks/{id}). Pass it as `id` -- this tool has no `playbook_task_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on error behavior for missing ids, no indication of what object shape is returned, and no scoping/auth context, which is the bare minimum with annotations present.
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?
A single short sentence with the verb and lookup key front-loaded and no wasted words. It is efficient, though the extreme brevity borders on under-specification rather than disciplined conciseness.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a get-by-id tool in a large sibling set, the description does nothing to orient the agent on retrieval context or usage, leaving it only minimally viable.
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 single parameter's description already explains that it fills `{id}` in the path and that there is no `playbook_task_id` argument. The description contributes nothing further about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieves) and resource (playbook_task) with the lookup key (by id), so the operation is unambiguous. It does not differentiate from siblings such as get_playbook or update_playbook_task, leaving the agent to infer that this is the read-by-id counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like get_playbook or update_playbook_task. There is no mention of prerequisites, when the tool is not appropriate, or how to obtain the id in the first place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pulseGet PulseARead-only
Retrieves a specific pulse by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the pulse (fills `{id}` in /v1/pulses/{id}). Pass it as `id` -- this tool has no `pulse_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description is consistent with a read-only retrieval operation. The description adds little beyond that, such as error behavior or permission requirements, so the annotations carry most of the behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise for a simple get-by-id 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?
This is a simple retrieval tool with a fully described ID parameter, rich annotations, and an output schema, so the description does not need to explain return values. It is nearly complete, with the main gap being no routing guidance relative to list_pulses or other pulse 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 description coverage is 100%, and the single id parameter is fully documented in the schema, including its path usage and a warning that there is no pulse_id argument. The description only says 'by id' and adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: retrieves a specific pulse by id. It implicitly distinguishes the tool from list/create/update siblings by saying 'specific' and 'by id,' though it does not explicitly name or contrast those 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?
The phrase 'by id' implies the tool should be used when the caller already has a pulse ID, giving some usage context. However, it does not explicitly state when to use this versus list_pulses or how to obtain an ID, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_retrospective_processGet Retrospective ProcessCRead-only
Retrieves a specific retrospective process by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective process (fills `{id}` in /v1/retrospective_processes/{id}). Pass it as `id` -- this tool has no `retrospective_process_id` argument. | |
| include | No | comma separated if needed. eg: retrospective_steps,severities |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note on behavior when the ID is missing, no mention of what the 'include' expansions change in the response, and no indication of permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is also part of why other dimensions are thin.
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, an output schema exists so return values need not be described, and the schema documents both parameters well. What is missing is the relational context — when to call this versus list_retrospective_processes or get_retrospective_step — which is the main gap for a getter in a large sibling set.
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 schema itself is unusually strong (it notes the {id} path binding and warns there is no retrospective_process_id argument). The description contributes no parameter meaning of its own, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('a specific retrospective process') with the lookup key ('by id'), so the operation is unambiguous. It does not differentiate itself from close siblings such as list_retrospective_processes, get_retrospective_step, or get_retrospective_process_group, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' weakly implies the tool requires an existing identifier, but there is no explicit when-to-use, no when-not-to-use, and no pointer to list_retrospective_processes for discovering IDs or browsing. The agent gets no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_retrospective_process_groupGet Retrospective Process GroupCRead-only
Retrieves a specific Retrospective Process Group by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective process group (fills `{id}` in /v1/retrospective_process_groups/{id}). Pass it as `id` -- this tool has no `retrospective_process_group_id` argument. | |
| include | No | comma separated if needed. eg: retrospective_process_group_steps |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered; the description contributes no additional behavioral context beyond 'by id', which is already implied by the required parameter. No mention of error behavior for missing ids or whether an `include` expansion changes payload size.
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?
A single short sentence with zero filler and the key qualifier ('by id') front-loaded. It is efficient, though arguably under-specified rather than maximal conciseness.
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?
An output schema exists and the annotations cover the read-only safety profile, so the description need not explain return values. Still, for a getter surrounded by similarly named retrospective siblings, the absence of any routing or expansion guidance leaves the definition minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `id` and the `include` enum are documented in the schema, including the unusual note that this tool has no `retrospective_process_group_id` argument. The description adds nothing beyond 'by id', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ('Retrieves') plus resource ('Retrospective Process Group') qualified by 'by id', so the agent knows exactly what the tool returns. However, it does nothing to distinguish it from the many sibling getters, notably get_retrospective_process and get_retrospective_step, which sit in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the alternatives (get_retrospective_process, list_retrospective_processes) and no prerequisites such as needing a valid id. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_retrospective_stepGet Retrospective StepBRead-only
Retrieves a specific retrospective step by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective step (fills `{id}` in /v1/retrospective_steps/{id}). Pass it as `id` -- this tool has no `retrospective_step_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds only the fact that lookup is by id and does not disclose behavior beyond that, which is acceptable but minimal given the annotations and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently front-loaded and contains no filler. It is appropriately short, though it could be slightly more informative without losing conciseness.
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 one required parameter, 100% schema coverage, annotations, and an output schema, the definition is minimally complete for invocation. However, it omits sibling differentiation, which is important in a large toolset containing get_incident_retrospective_step and update_retrospective_step.
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 schema already explains that the id fills the endpoint path and must be passed as `id`. The description's phrase "by id" does not add meaning 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 uses a specific verb and resource ("Retrieves a specific retrospective step by id"), so the agent can tell what the tool does. It does not distinguish the tool from the similar sibling get_incident_retrospective_step, leaving ambiguity about which step endpoint is intended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as get_incident_retrospective_step or update_retrospective_step. There are no explicit inclusion, exclusion, or prerequisite hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduleGet ScheduleCRead-only
Retrieves a specific schedule by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the schedule (fills `{id}` in /v1/schedules/{id}). Pass it as `id` -- this tool has no `schedule_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered without help from the description. The description adds nothing beyond the verb — no note on what the returned schedule contains (rotations, shifts, participants), no mention of permissions, missing-id behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. It is arguably over-trimmed for a tool with this many siblings, but nothing in the text is wasted.
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?
An output schema exists, so return values need not be described. However, for a get tool sitting among list_schedules, get_schedule_shifts, and get_oncall_schedule_summary, the description does not clarify what scope of schedule data is returned, which is the main ambiguity an agent faces here.
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 the schema itself already explains that `id` fills `{id}` in the path and warns there is no `schedule_id` argument, so parameter meaning is fully documented upstream. The description's 'by id' is a restatement rather than an addition, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieves) and resource (a specific schedule) qualified by id, so the agent knows it fetches a single schedule rather than a list. It does not explicitly differentiate itself from near-siblings such as list_schedules, get_schedule_shifts, or get_oncall_schedule_summary, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many related schedule tools in the sibling list, nor any prerequisite or exclusion. The agent must infer from the name alone that this is the single-record fetch counterpart to list_schedules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schedule_rotationGet Schedule RotationCRead-only
Retrieves a specific schedule rotation by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the schedule rotation (fills `{id}` in /v1/schedule_rotations/{id}). Pass it as `id` -- this tool has no `schedule_rotation_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond that restatement — no notes on what happens for a missing/invalid id, no cross-account/visibility scope despite openWorldHint, and no mention of the returned rotation shape.
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?
A single front-loaded sentence with no filler or repetition. It is efficient, though borderline thin for a tool with a real behavioral surface.
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 a simple single-param getter with a fully documented schema and an output schema, so the description needn't explain return values. However, it omits any error/not-found behavior or relationship to the parent schedule, leaving it merely adequate.
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 schema already explains that the id fills `/v1/schedule_rotations/{id}` and that no `schedule_rotation_id` argument exists. The description contributes nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and resource ('schedule rotation') plus the lookup key ('by id'), so the action is unambiguous. It does not distinguish itself from close siblings like list_schedule_rotations or update_schedule_rotation, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus list_schedule_rotations (to find the id) or get_schedule (parent resource). The 'by id' phrasing only weakly implies a lookup-after-listing workflow; no alternatives or prerequisites are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schedule_shiftsGet Schedule ShiftsARead-only
List shifts for one schedule over a date range.
Replaces the generated getScheduleShifts, which passed the range
straight through and failed with Datetime range exceeds 1 month on
anything longer than the upstream accepts. Ranges longer than that are
split into windows and merged here, so a two-month question is a normal
request.
Use list_shifts instead when the question spans schedules or filters by user.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Schedule ID (UUID) to fetch shifts for | |
| end_date | No | End date/time (ISO 8601, e.g. '2026-09-30T23:59:59Z') | |
| start_date | No | Start date/time (ISO 8601, e.g. '2026-08-01T00:00:00Z') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description goes further and discloses non-obvious behavior: upstream rejects ranges over one month, and this tool splits and merges windows so a two-month query works transparently. That is exactly the kind of hidden limit an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the sibling routing are front-loaded in the first and last sentences. The middle paragraph about replacing generated getScheduleShifts is somewhat implementation-flavored, but it justifies the range-splitting behavior and is short enough to earn 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?
An output schema exists so return values need no explanation; params are fully documented in the schema; annotations cover the safety profile. The added range-merging context closes the remaining gap an agent would otherwise hit as a runtime error.
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 all three parameters carry ISO 8601 examples, so the schema does the heavy lifting. The description adds no format or default semantics for id/start_date/end_date beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb, resource, and scope: 'List shifts for one schedule over a date range.' The scope qualifier 'for one schedule' immediately separates it from the schedule-agnostic sibling list_shifts.
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?
Explicitly names the alternative ('Use list_shifts instead when the question spans schedules or filters by user') and gives the exact conditions that select it. Both when-to-use and when-not-to-use are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_versionGet Server VersionARead-only
Get the Rootly MCP server version.
Returns the current version of the deployed MCP server. Useful for checking if the server has been updated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only that the value reflects the deployed server's current version, which is modest added context; no rate limits, caching, or freshness caveats are mentioned.
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?
Front-loaded with the core action in the first line. The second sentence ('Returns the current version of the deployed MCP server') partly restates the first, but the whole thing is three short lines with no padding.
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?
An output schema exists, so return-shape explanation is unnecessary, and with no parameters there is little else an agent needs. For a simple version-check tool the description is sufficient, though it could note the version string format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The empty schema is consistent with the described behavior.
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 a specific verb+resource ('Get the Rootly MCP server version') and scopes it to the deployed MCP server, which no sibling tool touches. It is unambiguous, though trivially so – no sibling differentiation work is actually needed here.
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?
'Useful for checking if the server has been updated' implies a use case but gives no explicit when-to-use/when-not guidance or alternatives. Implied usage only, which is adequate for a zero-argument version check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serviceGet ServiceCRead-only
Retrieves a specific service by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the service (fills `{id}` in /v1/services/{id}). Pass it as `id` -- this tool has no `service_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered externally. The description adds nothing beyond that: no mention of 404/not-found behavior, permission requirements, or what is returned, which is where a short description could still have earned credit.
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?
A single front-loaded sentence with zero filler. It is appropriately terse for a one-parameter read, though the terseness borders on under-specification rather than economical precision.
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 (1 required param, output schema present, annotations covering safety), so the description needn't explain return values. Still, it leaves entirely unaddressed the slug-vs-uuid dual input path and error behavior, both of which an agent would benefit from seeing surfaced at the description 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?
Schema coverage is 100%, and the schema itself carries the useful detail (UUID or slug accepted, and the explicit note that the argument is `id` not `service_id`). The description only says 'by id' and adds no meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieves a specific service by id. Clear what it does, but gives no differentiation from the many neighboring get_* tools (e.g., get_service_uptime_chart, get_catalog) or its list_services counterpart; the agent must infer 'single resource fetch by identifier' from name conventions alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_services or the chart endpoints, and no prerequisites or error conditions (e.g., what happens on an unknown id). The 'by id' phrasing implies single-resource lookup but the description never routes the agent to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_incidents_chartGet Service Incidents ChartCRead-only
Get service incidents chart
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the service (fills `{id}` in /v1/services/{id}/incidents_chart). Pass it as `id` -- this tool has no `service_id` argument. | |
| period | Yes | ||
| include | No | Related resources to include (empty for minimal payload) | |
| page_size | No | Number of results per page (max: 20) | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing about chart behavior, period semantics, pagination, or what the chart represents, leaving a gap even for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, but that brevity reflects under-specification rather than efficient communication. There is no front-loaded scope or useful detail beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still omits what the chart shows, how period affects it, and how it differs from related chart tools. For a chart endpoint with six parameters, this is not complete 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 description coverage is 83%, so the schema already documents most parameters, including id, include, page_size, page_number, and fields_incidents. The description adds no parameter meaning, but baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to use it, or which sibling chart/incident tool is the alternative. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_uptime_chartGet Service Uptime ChartCRead-only
Get service uptime chart
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the service (fills `{id}` in /v1/services/{id}/uptime_chart). Pass it as `id` -- this tool has no `service_id` argument. | |
| period | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds nothing beyond that — no note on what the chart contains, granularity, default time window, or whether missing data yields empty results, despite openWorldHint implying external dependency 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 single-sentence description is trivially short and front-loaded, but its brevity stems from under-specification rather than efficiency. It wastes no words, yet conveys almost no 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?
An output schema and annotations exist, so return-value explanation is not strictly required, but the description still omits the meaning of `period`, the chart's time semantics, and how it differs from adjacent chart tools. For a tool whose only distinguishing feature is 'uptime chart', that leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the `id` parameter is richly documented with UUID/slug formats and an explicit note that there is no `service_id` argument. The `period` parameter has no description in either schema or description, and the description does not compensate at all — it never mentions timeframe or its accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only implied usage is that this returns a chart of uptime for a service, which the name already conveys; sibling chart tools are never mentioned as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_severityGet SeverityBRead-only
Retrieves a specific severity by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the severity (fills `{id}` in /v1/severities/{id}). Pass it as `id` -- this tool has no `severity_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered without the description. The description adds nothing behavioral beyond restating 'retrieves' and does not mention the UUID-or-slug lookup flexibility or the response shape (though an output schema exists, lowering the burden).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise, front-loaded sentence with zero padding. It is efficient, though its brevity leaves the tool slightly under-explained rather than over-explained.
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 single-parameter getter with full schema coverage, annotations, and an output schema, the essentials are present. However, the description omits any hint about what a severity represents or how the ID is obtained, leaving a mild gap for an unfamiliar 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 description coverage is 100% and the schema already explains that id accepts a UUID or a slug and warns against using a nonexistent severity_id argument. The description's 'by id' adds no meaning beyond the schema, so the 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?
States a specific verb (retrieves) and resource (severity) scoped to a single record by id, which reads clearly as the get-by-id counterpart to list_severities. It does not explicitly name or differentiate against its siblings (list_severities, update_severity, create_severity), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no mention of when to prefer list_severities versus fetching a single severity, and no prerequisites or exclusions. An agent must infer all routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shift_coverage_requestGet Shift Coverage RequestCRead-only
Retrieves a specific shift coverage request.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the shift coverage request (fills `{id}` in /v1/shift_coverage_requests/{id}). Pass it as `id` -- this tool has no `shift_coverage_request_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond the word 'Retrieves' — no auth requirements, no note on behavior for missing IDs, no scoping context. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste. However, the brevity edges into under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-record getter with a fully documented parameter, annotations covering safety, and an output schema, so not much is required. Still, the description omits any mention of the paired list tool or error behavior, leaving the minimum viable picture.
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 id parameter is documented there in detail, including the naming gotcha about `id` vs `shift_coverage_request_id`. The description adds no parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource: retrieves a specific shift coverage request by ID. It is distinguishable in shape from list_shift_coverage_requests, but the description never acknowledges that sibling, so differentiation is left to the name alone.
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 statement of when to use this rather than list_shift_coverage_requests or other on-call/schedule lookup tools. The agent must infer that this is the single-record fetch and gets no exclusion or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shift_incidentsGet Shift IncidentsBRead-only
Get incidents and alerts that occurred during a specific shift or time period.
Useful for:
Shift handoff summaries showing what happened during the shift
Post-shift debriefs and reporting
Incident analysis by time period
Understanding team workload during specific shifts
Returns incident details including severity, status, duration, and basic summary.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Deprecated and ignored: Rootly incidents have no tags, so this does not filter anything (a `warnings` entry is returned when it is set). Incidents carry key:value labels instead (filter[labels] on the incidents API). | |
| status | No | Filter by status: 'started', 'detected', 'acknowledged', 'investigating', 'identified', 'monitoring', 'resolved', 'cancelled' (optional) | |
| end_time | Yes | End time for incident search (ISO 8601 format, e.g., '2025-10-01T23:59:59Z') | |
| severity | No | Filter by configured severity name, slug, ID, or level (critical, high, medium, low) | |
| start_time | Yes | Start time for incident search (ISO 8601 format, e.g., '2025-10-01T00:00:00Z') | |
| schedule_ids | No | Deprecated and ignored: Rootly incidents are not linked to on-call schedules, so this does not filter anything (a `warnings` entry is returned when it is set). Results cover every incident in the time range. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds nothing about scope limits — critically, it never says that shift-scoped filtering is not possible (tags and schedule_ids are deprecated no-ops) and that results always cover every incident in the range, which is exactly the behavioral fact an agent needs here.
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?
Purpose is front-loaded in the first sentence, followed by a short bulleted use-case list and a one-line return summary. No filler, though the bullet list is somewhat padded relative to the amount of unique information it conveys.
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?
An output schema exists, so the return-value sentence is supplementary rather than necessary, and annotations cover safety. What is missing is the operational caveat that shift-based filtering is unavailable despite the name and title, plus any pointer to sibling tools for narrower searches or handoff metrics.
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 two required ISO-8601 time params are fully documented in the schema, as are the deprecated tags/schedule_ids and the status/severity filters. The description adds no parameter meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — get incidents/alerts within a time window — which an agent can distinguish from list_incidents or search_incidents. However, the framing 'during a specific shift' overpromises: the schema has no shift identifier, and schedule_ids is explicitly deprecated and ignored, so only a raw time range is actually supported.
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 'Useful for' bullets give plausible scenarios (handoff summaries, debriefs, workload analysis), which is more than nothing. But there is no explicit when-to-use-this-vs-alternative guidance: siblings like search_incidents, list_incidents, get_oncall_handoff_summary and get_oncall_shift_metrics are never mentioned, and no conditions for choosing among them are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_status_pageGet Status PageCRead-only
Retrieves a specific status page by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the status page (fills `{id}` in /v1/status-pages/{id}). Pass it as `id` -- this tool has no `status_page_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description adds nothing beyond that — no note on not-found behavior, whether it returns the full page including components, or how it interacts with the open-world hint. For a one-line description with zero extra disclosure, a 2 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?
A single front-loaded sentence with no filler. It is arguably too terse rather than padded, which is the better failure mode.
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 an output schema and full annotation coverage, the description need not explain return values or safety. It is minimally complete for a trivial one-param getter, though it leaves the agent to infer scope (what a status page object contains) on its own.
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 the schema itself explains the UUID-or-slug anyOf and even warns off the `status_page_id` mistake. The description's 'by id' adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieves) and resource (a status page) plus the key selector (by id), so the agent knows exactly what it fetches. It does not name or distinguish itself from siblings like list_status_pages or get_status_page_template, but the singular retrieval is 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?
No guidance on when to call this versus list_status_pages, get_status_page_template, or update_status_page. The agent must infer that this is the read path for a single known status page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_status_page_templateGet Status Page TemplateBRead-only
Retrieves a specific status_page_template by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the template (fills `{id}` in /v1/templates/{id}). Pass it as `id` -- this tool has no `template_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that — no note on what happens when the id doesn't exist or what the template payload contains — but it does not contradict the annotations either.
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?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly under-specification rather than disciplined compression.
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 an output schema present, return values need no explanation, and the single parameter is fully documented in the schema. What is missing is how an agent obtains a valid id (i.e. calling list_status_page_templates first), which is the only real gap for this low-complexity 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% and the schema description is unusually rich, explicitly noting that `id` fills `{id}` in /v1/templates/{id} and warning there is no `template_id` argument. The description's 'by id' phrasing adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieves) and resource (status_page_template) scoped to a single record by id, which cleanly separates it from list_status_page_templates and create/update_status_page_template. It stops short of any explicit sibling naming, but the get-vs-list distinction is 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?
There is no when-to-use guidance, no prerequisite (e.g. where to obtain a valid id), and no mention of the list_status_page_templates alternative. Usage is only inferable from the conventional get-by-id pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sub_statusGet Sub StatusCRead-only
Retrieves a specific Sub-Status by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the sub status (fills `{id}` in /v1/sub_statuses/{id}). Pass it as `id` -- this tool has no `sub_status_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on error behavior for unknown ids, no mention that the resource is account-scoped despite openWorldHint, and no retrieval characteristics.
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?
A single short sentence with no filler and the key noun front-loaded. It is efficient, though its brevity is partly under-specification rather than pure tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists so return values need no explanation, and the single parameter is fully documented in the schema. What is missing is the usage context — how this differs from list_sub_statuses and get_incident_sub_status — leaving the definition minimally viable rather than 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?
With one parameter and 100% schema coverage, the schema already documents the UUID/slug duality and even warns that the argument is `id`, not `sub_status_id`. The description's 'by id' adds nothing beyond that baseline, so 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?
States a specific verb and resource ('Retrieves a specific Sub-Status by id'), which is unambiguous about what the tool does. However, it does not distinguish itself from close siblings such as list_sub_statuses, get_incident_sub_status, or update_sub_status, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_sub_statuses (bulk listing) or get_incident_sub_status (fetching a sub-status attached to an incident). The description gives no preconditions, no exclusions, and no alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teamGet TeamCRead-only
Retrieves a specific team by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the team (fills `{id}` in /v1/teams/{id}). Pass it as `id` -- this tool has no `team_id` argument. | |
| include | No | comma separated if needed. eg: users |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, openWorldHint=true and destructiveHint=false already declared, the safety profile is covered by annotations, so the description carries a lower burden. It adds nothing beyond them, however: no note on what happens with an unknown id, whether the id may be a slug or UUID in practice, or what the `include` expansion does to the payload.
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?
A single six-word sentence with no filler and the key scoping detail ("by id") front-loaded. Nothing is wasted, though the extreme terseness edges toward under-specification rather than tight 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?
The tool is simple, an output schema exists so return values need no explanation, and annotations cover the safety profile, which makes a short description defensible. Still, the vague `include` semantics ("comma separated if needed. eg: users") are not resolved anywhere, and an agent has no hint about what the expansion adds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `id` (with UUID-or-slug anyOf and the explicit "no team_id argument" note) and `include` are already fully documented in the schema. The description's "by id" merely echoes that. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Retrieves") and resource ("a specific team") scoped by id, so the agent knows exactly what it does. It makes no attempt to differentiate from the obvious siblings list_teams, update_team, or create_team, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance: it never says to prefer this over list_teams when the id is already known, nor does it state any prerequisite such as the team existing. The routing signal is only inferable from the phrase "by id".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_incidents_chartGet Team Incidents ChartCRead-only
Get team incidents chart
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the team (fills `{id}` in /v1/teams/{id}/incidents_chart). Pass it as `id` -- this tool has no `team_id` argument. | |
| period | Yes | ||
| include | No | Related resources to include (empty for minimal payload) | |
| page_size | No | Number of results per page (max: 20) | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds nothing beyond that: no indication of what the chart returns, how the period is aggregated, or any rate/limit behavior. With annotations carrying the full burden, a 2 reflects a description that contributes zero additional 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?
It is short, but the brevity comes from under-specification rather than economy — the single phrase is tautological and front-loads nothing an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with a required, undocumented 'period' argument, an output schema, and several near-identical chart siblings, the description should at minimum state the chart's metric, period format, and team scoping. It supplies none of this, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, above the high-coverage threshold, so the schema documents most parameters (id, include, page_size, page_number, fields_incidents). The one notable gap is the required 'period' parameter, which has no description anywhere; the description does nothing to compensate. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer from the name alone that this is the team-scoped variant of the incidents chart family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userGet UserCRead-only
Retrieves a specific user by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the user (fills `{id}` in /v1/users/{id}). Pass it as `id` -- this tool has no `user_id` argument. | |
| include | No | comma separated if needed. eg: email_addresses,phone_numbers |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds nothing beyond that — no mention of what happens with an invalid or deleted ID, no note about the open-world lookup, and no behavioral context for the `include` expansion.
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?
A single short, front-loaded sentence with zero padding. It is efficient, though its brevity borders on under-specification rather than genuine conciseness.
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 only one terse sentence for a tool that has an output schema, an enum parameter, and a dense set of near-identical siblings, the description leaves real gaps: no sibling disambiguation, no mention of the `include` sideloading behavior, and no hint about the returned payload shape. Adequate only for the simplest possible call.
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 explains `id` (including the `{id}` path mapping and the no-`user_id` warning) and the `include` enum. The description adds no parameter meaning beyond "by id" and never acknowledges the `include` expansion parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Retrieves a specific user by id"), so the agent immediately knows what it does. However, it offers no differentiation from the many closely-named siblings such as get_current_user, list_users, get_user_email_addresses, or get_user_phone_numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The phrase "a specific user by id" weakly implies the precondition (you already have an ID), but the description never routes the agent to get_current_user for self-lookup or list_users when searching, which is the main confusion risk given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_email_addressesGet User Email AddressesBRead-only
Retrieves all email addresses for the specified user
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/email_addresses). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds essentially nothing beyond that — the word "all" weakly implies a complete, unpaginated list, but pagination, ordering, and whether unverified addresses are included are all unstated.
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?
A single front-loaded sentence with zero filler and nothing repeated from the title or schema. It is efficient, though its brevity comes at the cost of any usage or behavioral context.
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 one required parameter at 100% schema coverage and an output schema available, the description is sufficient for correct invocation. It falls short of fully adequate by omitting whether results are paginated and whether this is the canonical way to obtain a user's emails versus reading them off get_user.
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% for the single user_id parameter, including its URL path mapping, so the schema already carries parameter semantics. The description only restates that the user is "specified" and adds no format, source, or lookup guidance beyond it — 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?
States a concrete verb+resource pair ("Retrieves all email addresses") scoped to a single user, which an agent can distinguish from mutating siblings like create_user_email_address. It does not, however, differentiate itself from adjacent read tools such as get_user or get_user_phone_numbers, which may surface overlapping identity data.
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 purpose implies when to call it (an agent needing a user's email addresses), and the required user_id makes the precondition evident. No explicit when-to-use, when-not-to-use, or alternative routing (e.g., use get_user if you also need phone/profile data) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_phone_numbersGet User Phone NumbersARead-only
Retrieves all phone numbers for the specified user
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/phone_numbers). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered without the description. The description adds only the word 'all,' hinting at an unfiltered full listing, but says nothing about auth requirements, result ordering, or what happens when the user has no numbers.
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?
A single front-loaded sentence with no filler, hedging, or redundant restatement of the title. Every word carries information about the operation and its scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present to explain return values and annotations covering safety, a one-parameter read tool needs little more than this. The remaining gap is minor: nothing about the user not existing or about the relationship between this tool and create_user_phone_number.
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 single user_id parameter is fully documented in-schema, including its path-template role. The description's 'specified user' merely restates the schema rather than adding format, validation, or sourcing guidance (e.g., where to obtain the user ID).
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?
States a specific verb (retrieves) and resource (phone numbers) scoped to a single user, so the operation is unambiguous. It does not explicitly contrast with nearby siblings such as get_user_email_addresses or create_user_phone_number, relying on the tool name for that distinction.
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?
Usage is only implied: an agent infers 'call this when you need a user's phone numbers.' There is no statement of when not to use it, no mention of pagination limits, and no pointer to alternatives like get_user or list_users for broader profile data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflowGet WorkflowCRead-only
Retrieves a specific workflow by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow (fills `{id}` in /v1/workflows/{id}). Pass it as `id` -- this tool has no `workflow_id` argument. | |
| include | No | comma separated if needed. eg: form_field_conditions,alert_field_conditions |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of behavior for a missing/unknown id, no note on whether soft-deleted workflows are returned, and no indication that `include` expands the response payload.
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?
One short sentence with the resource and lookup key front-loaded; there is no padding or redundancy. It is tight to the point of under-specification rather than 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?
The tool is simple (2 params), annotations cover safety, and an output schema exists, so the return shape needn't be described. However, the description ignores the `include` parameter's ability to expand related resources, which is the one non-obvious decision an agent has to make when calling this 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 description coverage is 100%, so both `id` (uuid or slug, with an explicit note about the argument name) and the `include` enum are fully documented in the schema. The description only restates "by id" and adds no meaning beyond the structured field.
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?
States a specific verb ("Retrieves") and resource ("workflow") plus the lookup key ("by id"), which cleanly distinguishes it from list_workflows and create/update_workflow. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to reach for this tool versus list_workflows or get_workflow_form_field_condition, and offers no prerequisites or exclusions. The agent must infer that it needs an id from a prior list call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_form_field_conditionGet Workflow Form Field ConditionCRead-only
Retrieves a specific workflow form field condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow form field condition (fills `{id}` in /v1/workflow_form_field_conditions/{id}). Pass it as `id` -- this tool has no `workflow_form_field_condition_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that—no note on behavior when the id does not exist, whether the lookup crosses workspace boundaries, or any rate/permission context—so it does not earn credit for added 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?
One short sentence with the resource and the id-scoping front-loaded, no filler. It is efficient, though the terseness borders on under-specification rather than true economy.
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?
An output schema exists, so return values need not be explained, and annotations plus a fully documented single parameter cover the mechanical contract. What is missing is the minimal retrieval workflow context: how to obtain a valid id and what happens on a not-found id—acceptable gaps for a simple getter, but enough to keep this at minimum viable.
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 single id parameter is fully documented in the schema, including the path-template mapping and a disambiguation note about the argument name. The description's 'by id' merely restates the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Retrieves') and a precise resource ('workflow form field condition') scoped to a single item by id, which distinguishes it from the sibling list_workflow_form_field_conditions. It does not explicitly name the sibling alternatives (list/create/update), so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_workflow_form_field_conditions or the update/create variants. The only implicit guidance is 'by id', leaving the agent to infer that an id must already be known and where to get one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_groupGet Workflow GroupCRead-only
Retrieves a specific workflow group by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow group (fills `{id}` in /v1/workflow_groups/{id}). Pass it as `id` -- this tool has no `workflow_group_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that – no not-found behavior, no note on what the openWorld lookup implies, no response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficiently structured, though its terseness pushes the missing differentiation and behavioral detail onto other dimensions.
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, single-parameter getter with a full schema and an output schema, this is minimally adequate: an agent knows what it does and what to pass. It stops short of stating the retrieval failure mode or how it relates to list_workflow_groups, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented in the schema, including a useful disambiguation about the argument name. The description's 'by id' merely echoes the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Retrieves') and resource ('workflow group') with the scoping qualifier 'by id', which distinguishes it from list_workflow_groups. It never names the sibling alternatives (list/create/update_workflow_group), so differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. An agent must infer from the name that this is the single-item lookup counterpart to list_workflow_groups, and there is no mention of what to do if the id is unknown or of any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_taskGet Workflow TaskBRead-only
Retrieves a specific workflow_task by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow task (fills `{id}` in /v1/workflow_tasks/{id}). Pass it as `id` -- this tool has no `workflow_task_id` argument. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The sentence adds no behavioral context of its own — nothing about missing-id behavior, error cases, or the fact that this hits an external API — so it contributes essentially nothing beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; nothing could be removed without losing meaning.
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 tool, annotations cover safety, an output schema covers the return value, and the input schema is fully documented, so the description is nearly sufficient. Only the not-found/error behavior is left unspecified, which is a minor gap.
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 one parameter at 100% schema description coverage, the schema already explains that `id` fills `{id}` in the path and warns against using `workflow_task_id`. The description's 'by id' restates this without adding format details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (retrieves) and resource (workflow_task) and adds the lookup key (by id), which separates it from list_workflow_tasks. It does not, however, distinguish itself from near neighbors like get_workflow or get_playbook_task.
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?
Single-record lookup by id implies when it's used, but the description never states the precondition (that you already have a task id) or when to prefer list_workflow_tasks instead. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_eventsList Alert EventsCRead-only
List alert_events
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| alert_id | Yes | Required. ID of the alert (fills `{alert_id}` in /v1/alerts/{alert_id}/events). | |
| page_size | No | Number of results per page (max: 20) | |
| filter_kind | No | ||
| page_number | No | Page number to retrieve | |
| fields_alerts | Yes | Comma-separated list of alert fields to include (reduces payload size) | id,summary,status,started_at,ended_at,short_id,alert_urgency_id,source,noise |
| filter_action | No | ||
| filter_groups | No | Filter by team/group IDs (comma-separated) | |
| filter_labels | No | Filter by labels (comma-separated) | |
| filter_source | No | Filter by alert source | |
| filter_status | No | Filter by alert status (e.g., triggered, acknowledged, resolved) | |
| filter_services | No | Filter by service IDs (comma-separated) | |
| filter_ended_at_gt | No | Ended at > (ISO8601 datetime) | |
| filter_ended_at_lt | No | Ended at < (ISO8601 datetime) | |
| filter_ended_at_gte | No | Ended at >= (ISO8601 datetime) | |
| filter_ended_at_lte | No | Ended at <= (ISO8601 datetime) | |
| filter_environments | No | Filter by environment IDs (comma-separated) | |
| filter_created_at_gt | No | Created at > (ISO8601 datetime) | |
| filter_created_at_lt | No | Created at < (ISO8601 datetime) | |
| filter_started_at_gt | No | Started at > (ISO8601 datetime) | |
| filter_started_at_lt | No | Started at < (ISO8601 datetime) | |
| filter_created_at_gte | No | Created at >= (ISO8601 datetime) | |
| filter_created_at_lte | No | Created at <= (ISO8601 datetime) | |
| filter_started_at_gte | No | Started at >= (ISO8601 datetime) | |
| filter_started_at_lte | No | Started at <= (ISO8601 datetime) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond them — no note on pagination limits, payload behavior, filter interactions, or that results are scoped to one alert.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At three words this is under-specification rather than conciseness. There is nothing to front-load because no substantive information is present.
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?
An output schema exists so return values need not be explained, but a 25-parameter filtered-list tool with three undocumented filter parameters deserves at least a sentence on scoping and filter semantics. The definition leaves the agent to infer everything from 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 88%, so the schema carries nearly all parameter meaning; a baseline of 3 applies. The description does not compensate for the few undocumented parameters (include, filter_kind, filter_action), which remain opaque.
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 restates the name and title verbatim ('List alert_events') without adding a specific scope, resource context, or sibling differentiation. An agent cannot tell from this text how it differs from sibling tools like list_alerts, get_alert_event, or list_incident_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mentioned alternatives, and no prerequisites. The only implied usage comes from the required alert_id parameter in the schema (events for a given alert), which the description does not surface.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_groupsList Alert GroupsDRead-only
List alert groups
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of result volume, pagination, or what 'include' expands — so with the lower bar set by annotations it still contributes no 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?
It is short, but brevity here is under-specification rather than conciseness — three words that duplicate the title convey no information. Nothing is front-loaded because nothing is present.
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 presence of an output schema excuses explaining return values, but for a tool with nine optional filter parameters at 0% coverage and several near-identical siblings, this description is wholly inadequate to call 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?
Nine parameters exist with 0% schema description coverage, and the description mentions none of them. The nine filter_name/filter_slug eq/in/not_eq/not_in variants and the unexplained 'include' string are entirely undocumented, forcing the agent to guess semantics and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus get_alert_group (single-group retrieval) or create_alert_group, nor any mention of pagination, prerequisites, or the fact that it lists all groups by default. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_routesList Alert RoutesBRead-only
List all alert routes for the current team with filtering and pagination. Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds an entitlement/auth gate (Advanced Alert Routing access) that annotations cannot express, which is exactly the kind of behavioral context that matters before invocation. It stops short of noting pagination defaults or result caps.
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 the core purpose before the caveat. The bolded support-contact note is slightly verbose for an agent audience but does not obscure the main 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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. But for a 13-parameter filtered list endpoint with zero schema descriptions, the description leaves an agent without enough information to choose among the many filter variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, and the description only says 'filtering and pagination' without explaining any of them. The distinction between filter_name, filter_name_eq, filter_name_in, filter_name_not_eq, filter_slug_*, and filter_search — or the expected format for sort and page_size bounds — is left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all alert routes') plus scope ('for the current team'), which cleanly separates it from get_alert_route, create_alert_route, and list_alert_routing_rules. It does not explicitly name an alternative, but the plural/team-scoped framing makes the list semantics 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?
The entitlement note ('requires access to Advanced Alert Routing') is a real prerequisite that helps an agent decide whether the call can succeed at all. However, there is no guidance on when to prefer this over list_alert_routing_rules or when to fetch a single route via get_alert_route, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_routing_rulesList Alert Routing RulesBRead-only
List alert routing rules. Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the endpoint-selection caveat and says nothing about pagination, result ordering, or volume, which matters given page_size/page_number/sort params.
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 short sentences with the action front-loaded and the caveat second. Efficient, though the bolded support-escalation note consumes space without adding invocation-relevant detail.
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?
An output schema and annotations cover return shape and safety, but an 18-parameter listing tool with zero schema descriptions needs the description to explain filter semantics and pagination, and it does none of that. An agent could call it, but only by guessing at the parameter vocabulary.
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 are 18 parameters with 0% schema description coverage, and the description mentions none of them. It provides no guidance on filter_name* vs filter_slug* variants, include, sort syntax, or date filter formats, leaving the agent to infer everything from terse parameter names.
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 names a specific verb and resource ("List alert routing rules") and distinguishes the tool from the sibling Alert Routes endpoint. It does not, however, differentiate from other close siblings like get_alert_routing_rule or create_alert_routing_rule beyond the implied list semantics.
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?
It explicitly routes advanced alert routing users to a different endpoint and tells uncertain users to contact support. That is real when-not guidance, though it does not state when the tool is the correct choice for non-advanced users or what "advanced" means operationally.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsList AlertsDRead-only
List alerts
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: environments,services,groups | |
| page_size | No | Number of results per page (max: 20) | |
| page_after | No | The cursor to fetch results using cursor pagination. A cursor is provided in meta.next_cursor in the response. | |
| page_number | No | Page number to retrieve | |
| fields_alerts | Yes | Comma-separated list of alert fields to include (reduces payload size) | id,summary,status,started_at,ended_at,short_id,alert_urgency_id,source,noise |
| filter_groups | No | ||
| filter_labels | No | ||
| filter_source | No | ||
| filter_status | No | ||
| filter_services | No | ||
| filter_groups_eq | No | ||
| filter_groups_in | No | ||
| filter_labels_eq | No | ||
| filter_labels_in | No | ||
| filter_source_eq | No | ||
| filter_source_in | No | ||
| filter_status_eq | No | ||
| filter_status_in | No | ||
| filter_ended_at_gt | No | ||
| filter_ended_at_lt | No | ||
| filter_services_eq | No | ||
| filter_services_in | No | ||
| filter_ended_at_gte | No | ||
| filter_ended_at_lte | No | ||
| filter_environments | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_groups_not_eq | No | ||
| filter_groups_not_in | No | ||
| filter_labels_not_eq | No | ||
| filter_labels_not_in | No | ||
| filter_source_not_eq | No | ||
| filter_source_not_in | No | ||
| filter_started_at_gt | No | ||
| filter_started_at_lt | No | ||
| filter_status_not_eq | No | ||
| filter_status_not_in | No | ||
| filter_updated_at_gt | No | ||
| filter_updated_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_started_at_gte | No | ||
| filter_started_at_lte | No | ||
| filter_updated_at_gte | No | ||
| filter_updated_at_lte | No | ||
| filter_environments_eq | No | ||
| filter_environments_in | No | ||
| filter_services_not_eq | No | ||
| filter_services_not_in | No | ||
| filter_environments_not_eq | No | ||
| filter_environments_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context such as pagination behavior, filter semantics, default ordering, or the effect of the many filter parameters. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than useful conciseness. It is front-loaded only in the sense that it has nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 51 parameters, 1 required field, and many undocumented filters, a two-word description is completely inadequate. Even though an output schema exists, the description should explain the filtering model and pagination approach that the sparse schema does not cover.
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 51 parameters and only 10% schema description coverage, the description must compensate but provides zero parameter information. Most filter_* parameters have no schema descriptions, so an agent has no explanation of their semantics from either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like list_incident_alerts, list_alert_events, or get_alert_by_short_id. There are also no prerequisites, exclusions, or context cues to help with tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alerts_sourcesList Alerts SourcesDRead-only
List alert sources
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_enabled | No | ||
| filter_statuses | No | ||
| filter_source_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing on top of that — no note on pagination defaults, result volume, or filter combination behavior for a 9-parameter listing endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short phrase, but this is under-specification rather than conciseness — there is no front-loaded scope or useful content at all.
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 9-parameter, open-world listing tool with zero schema coverage, the description provides no information needed to call it correctly. An output schema exists so returns need not be explained, but the input side is completely bare.
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?
Nine parameters with 0% schema description coverage, and the description does not mention any of them. Filter fields (filter_name, filter_statuses, filter_source_types, filter_enabled) and pagination/sort controls are entirely undocumented anywhere, leaving the agent to guess at 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?
"List alert sources" merely restates the tool name and title without adding a verb nuance or scope. It does not distinguish this tool from siblings like get_alerts_source, create_alerts_source, or update_alerts_source beyond the word "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?
There is no guidance on when to use this tool versus alternatives, no mention of pagination, filtering strategy, or relationship to the single-source get_alerts_source sibling. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_urgenciesList Alert UrgenciesDRead-only
List alert urgencies
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination behavior, how the extensive filter set interacts, or result ordering, which is the kind of context a 14-parameter list endpoint needs.
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?
Brevity here is under-specification rather than conciseness: a three-word phrase that duplicates the title. Nothing is front-loaded because there is nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The annotations and an output schema reduce the burden somewhat (safety and return shape need not be explained), but with 14 undocumented parameters and no usage context, an agent cannot confidently construct a call or choose this over get_alert_urgency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 14 parameters, and the description compensates for none of it. Filters like filter_name_eq / filter_name_in / filter_name_not_in, the sort and include strings, and page_size/page_number all remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling tools that cover the same resource (get/create/update_alert_urgency). The agent has to guess whether to list, get, or create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_incident_action_itemsList All Incident Action ItemsCRead-only
List all action items for an organization
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_kind | No | ||
| page_number | No | ||
| filter_status | No | ||
| filter_kind_eq | No | ||
| filter_kind_in | No | ||
| filter_priority | No | ||
| filter_status_eq | No | ||
| filter_status_in | No | ||
| filter_due_date_gt | No | ||
| filter_due_date_lt | No | ||
| filter_kind_not_eq | No | ||
| filter_kind_not_in | No | ||
| filter_priority_eq | No | ||
| filter_priority_in | No | ||
| filter_due_date_gte | No | ||
| filter_due_date_lte | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_status_not_eq | No | ||
| filter_status_not_in | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_incident_status | No | ||
| filter_priority_not_eq | No | ||
| filter_priority_not_in | No | ||
| filter_incident_status_eq | No | ||
| filter_incident_status_in | No | ||
| filter_incident_created_at_gt | No | ||
| filter_incident_created_at_lt | No | ||
| filter_incident_status_not_eq | No | ||
| filter_incident_status_not_in | No | ||
| filter_incident_created_at_gte | No | ||
| filter_incident_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the main safety profile. The description adds only the organization-level scope and does not mention pagination, filtering behavior, or result size, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, but it is severely under-specified for a tool with 36 optional parameters. Brevity here comes at the cost of useful structure rather than efficient communication.
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?
An output schema exists and annotations cover safety, but the description remains too thin for the tool's complexity. It does not explain the large filter/pagination surface or clarify the difference from the similarly named sibling.
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 36 parameters with 0% description coverage, and the description mentions none of them. It provides no meaning for sort, include, pagination, or the many filter_* parameters, so it fails to compensate for the schema's lack of parameter documentation.
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 a specific verb and resource ('List all action items') plus an organization-level scope, so the core operation is clear. However, it does not distinguish this tool from the sibling 'list_incident_action_items' or related get/create/update action-item 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?
It gives no explicit guidance on when to use this tool versus the sibling 'list_incident_action_items' or when to prefer get_incident_action_items. At best it implies broad organization-level listing, but offers no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_meeting_recordingsList All Meeting RecordingsARead-only
List meeting recordings across the organization. Returns the current user's standalone recordings plus incident-backed recordings the user can access. Supports filtering by status, platform, and created_by.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| platform | No | Filter by platform | |
| created_by | No | Filter by creator type |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the returned set is permission-scoped (standalone recordings plus incident-backed recordings the user can access), which tells the agent results vary by caller access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation and scope before the filter list. The final sentence largely duplicates the schema's parameter descriptions, which is mild waste 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?
With an output schema present, return structure needn't be explained, and the read-only nature is covered by annotations. The description supplies access scoping and filter coverage; only pagination or result-limit behavior is notably absent.
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 all three filter parameters are already documented in the schema. The description merely restates the filter names without adding accepted values, formats, or combination semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List meeting recordings') plus scope ('across the organization'), and clarifies the result set as the user's standalone recordings plus incident-backed ones. This implicitly separates it from the sibling list_meeting_recordings and get_meeting_recording, though it never names them.
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?
Usage is only implied by the phrase 'across the organization' – an agent can infer this is the broad listing versus narrower siblings, but there is no explicit when-to-use or when-not-to-use statement, and the relationship with list_meeting_recordings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_auditsList AuditsARead-onlyIdempotent
Read the Rootly audit log: who changed which configuration object, when, and what changed.
Each record carries the action, the acting user, the source, and the before-and-after value of every modified field. Use it to answer "who changed this escalation policy", "what did this workflow look like before", or to collect change evidence for a compliance review.
Covers roughly 60 resource types at the object level and is retained indefinitely. Two limits worth knowing: schedule rotations, escalation levels and shift overrides are not audited, and sign-in events are kept separately from this log.
Returns a single page of at most 25 records, newest first, alongside
total_matching so a wider search can be narrowed with the filters. It
does not walk the whole log, so a full compliance export belongs on the
REST endpoint rather than here.
Requires an API token whose role has the "Audits - read" permission.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only changes at or after this ISO 8601 timestamp or date. | |
| until | No | Only changes at or before this ISO 8601 timestamp or date. | |
| source | No | Where the change came from: 'web', 'api', 'mobile', 'slack', 'scim' or 'oauth'. | |
| user_id | No | Only changes made by this Rootly user ID. | |
| item_type | No | Restrict to one resource type, e.g. 'Schedule', 'GeniusWorkflow', 'EscalationPolicy', 'ApiKey', 'Role', 'Membership'. Leave blank for every type. | |
| api_key_id | No | Only changes made with this API key ID. | |
| max_results | No | Maximum records to return. Max: 25. | |
| include_full_object | No | Include each record's full object state alongside the diff. Off by default because it is the bulk of the payload. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses important behavioral limits: approximately 60 resource types, indefinite retention, exclusions for schedule rotations, escalation levels and shift overrides, and separate handling of sign-in events. It also explains pagination behavior, the 25-record page cap, newest-first ordering, total_matching, and the required Audits-read API permission.
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 purpose and examples, then covers coverage limits, return behavior, and auth requirements in a compact structure. Despite being several paragraphs, each section adds decision-relevant 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?
The tool has rich annotations, full schema coverage, and an output schema, so the description does not need to explain return fields. It still supplies the missing operational context an agent needs: audit coverage gaps, pagination limits, when to avoid this tool, and required permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents the meaning of all eight parameters. The description adds useful context about filters narrowing a wider search and the page-size ceiling, but it does not add per-parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reading the Rootly audit log, including who changed which configuration object, when, and what changed. It clearly distinguishes this from a full compliance export by saying the REST endpoint is the right place for that, and it scopes coverage to object-level audit records.
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?
It gives explicit use cases such as answering who changed an escalation policy, checking a workflow's prior state, and collecting compliance evidence. It also names when not to rely on this tool, specifically for a full compliance export, which should use the REST endpoint instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalog_entitiesList Catalog EntitiesDRead-only
List Catalog Entities
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: catalog,properties | |
| page_size | No | ||
| catalog_id | Yes | Required. ID of the catalog (fills `{catalog_id}` in /v1/catalogs/{catalog_id}/entities). | |
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_managed_by | No | ||
| filter_external_id | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_backstage_id | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_managed_by_eq | No | ||
| filter_managed_by_in | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_managed_by_not_eq | No | ||
| filter_managed_by_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered externally. The description adds nothing on pagination behavior, default sort order, filter combination semantics, or result volume — all important for a 27-parameter listing endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words are 'concise' only trivially — the problem is under-specification rather than verbosity. Nothing is front-loaded because nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema and annotations exist, but for a 27-parameter filtered/paginated listing tool the description leaves the agent without any information about pagination defaults, filter operator semantics, or scope. This is materially incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% across 27 parameters; only catalog_id and the sort/include enums carry any text. The description supplies no additional meaning for the ~20 filter_* parameters (name_eq vs name_in vs name_not_in, date range comparisons, managed_by, backstage_id) or for page_size/page_number, leaving an agent to infer semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance whatsoever on when to use this tool versus list_catalogs (list catalogs) or get_catalog_entity (fetch one entity). No prerequisites, no exclusions, no alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalog_entity_propertiesList Catalog Entity PropertiesARead-only
Deprecated: This endpoint is deprecated, please use include=fields on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.
List Catalog Entity Properties.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: catalog_entity,catalog_field | |
| page_size | No | ||
| filter_key | No | ||
| page_number | No | ||
| catalog_entity_id | Yes | Required. ID of the catalog entity (fills `{catalog_entity_id}` in /v1/catalog_entities/{catalog_entity_id}/properties). | |
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_catalog_field_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the description's main added value is the deprecation status — a genuine behavioral trait that annotations cannot express and that should steer the agent away. It does not mention pagination behavior or how filtered results behave, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The deprecation warning is correctly front-loaded and the alternative guidance is compact. The trailing restatement of the tool name adds nothing, but overall the text is tight.
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?
An output schema exists, so return values need no explanation, and the deprecation story is complete. However, for an 11-parameter tool with 27% coverage, an agent forced to call it (legacy compatibility) has no description-level guidance on pagination, sorting, or the filter parameters, leaving a substantial gap.
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 11 parameters and only 27% schema description coverage, the description must carry weight, but it says nothing about sort, include, page_size, page_number, filter_key, or the four filter_created_at_* bounds. The only parameter-like token (`include=fields`) refers to a different endpoint, not to this tool's `include` enum (catalog_entity, catalog_field), so it could even mislead.
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 name/title are restated verbatim in "List Catalog Entity Properties." — tautological rather than explanatory. The deprecation sentence incidentally reveals the resource is "field values" for a catalog entity, which is the only real content about what the tool returns. An agent can infer the resource but gets no statement of scope or how it differs from the singular get_catalog_entity_property or list_catalog_properties 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?
It explicitly declares a when-not-to-use condition ("Deprecated") and names concrete alternatives with the exact syntax to use instead (`include=fields` on catalog entities, or native catalog endpoints such as teams, services, functionalities, incident_types, causes, environments). This is exactly the routing information an agent needs to avoid picking this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalog_propertiesList Catalog PropertiesCRead-only
List Catalog Properties - returns catalog_properties type
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_id | Yes | Required. ID of the catalog (fills `{catalog_id}` in /v1/catalogs/{catalog_id}/properties). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the vague phrase "returns catalog_properties type," with no detail on pagination, filtering scope, or whether the list is bounded by the catalog.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the length comes from under-specification rather than efficiency. The second clause duplicates information implied by the name and provides no actionable detail.
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 what is returned; "catalog_properties type" is opaque and gives no field or shape information. For a simple one-parameter read this is not catastrophic, but the definition is barely more than a label.
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 catalog_id has 100% schema description coverage, including the URL path mapping, so the schema carries the full burden. The description adds nothing beyond what the schema already states, which is the baseline-3 case.
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 restates the tool name and title almost verbatim ("List Catalog Properties") without adding a verb-and-resource explanation. The trailing "returns catalog_properties type" hints at the return shape but does not say what a catalog property is or how it differs from the sibling list_catalog_entity_properties or list_catalog_properties variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as list_catalog_entity_properties, get_catalog_property, or get_catalog. An agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalogsList CatalogsDRead-only
List catalogs
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: fields,entities | |
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_managed_by | No | ||
| filter_external_id | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_managed_by_eq | No | ||
| filter_managed_by_in | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_managed_by_not_eq | No | ||
| filter_managed_by_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes nothing beyond that – no pagination behavior, no default sort, no note on what 'include' expands to.
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?
Extremely short, but this is under-specification rather than conciseness. Two words cannot front-load meaningful information for a tool with 25 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A tool with 25 optional filtering/sorting/pagination parameters and an output schema demands far more explanation than 'List catalogs'. Nothing about filtering operators, default page size, or the include expansion is addressed.
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 are 25 parameters with only 8% schema description coverage, so the description must carry the burden of explaining sort/include/filter semantics. It explains none of them, leaving most parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus get_catalog, list_catalog_properties, or list_catalog_entities. An agent gets no routing guidance among the many catalog-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_causesList CausesDRead-only
List causes
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. However, the description adds nothing beyond that — no note on pagination behavior, the meaning of the 18 filter parameters, or what the endpoint returns, which matters for a listing tool with this many controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two words this is under-specification rather than conciseness. There is no front-loaded scoping, no summary of what the tool returns, and nothing that earns its place because nothing is there.
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 18 mostly-undocumented parameters and no schema descriptions, the definition is completely inadequate. The presence of an output schema only relieves the need to explain return values, not the need to explain filtering and pagination inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 18 parameters, including non-obvious ones like include, filter_search, filter_name_eq vs filter_name_in, and the created_at range filters. The description must compensate and instead says nothing, leaving the agent to guess at syntax and 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus get_cause, create_cause, or update_cause — all present in the sibling list. An agent receives zero routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_fieldsList Custom FieldsBRead-only
[DEPRECATED] Use form field endpoints instead. List Custom fields
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: options | |
| page_size | No | ||
| filter_kind | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_label | No | ||
| filter_enabled | No | ||
| filter_kind_eq | No | ||
| filter_kind_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_label_eq | No | ||
| filter_label_in | No | ||
| filter_enabled_eq | No | ||
| filter_enabled_in | No | ||
| filter_kind_not_eq | No | ||
| filter_kind_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_label_not_eq | No | ||
| filter_label_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_enabled_not_eq | No | ||
| filter_enabled_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the genuinely useful deprecation status, but says nothing about pagination behavior across 28 parameters or how results are shaped.
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 short sentences with the deprecation warning front-loaded, which is the right priority ordering. Minimal but efficient; the trailing "List Custom fields" adds little beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema means return values need not be described, and the deprecation notice covers the most important decision. However, for a 28-parameter listing tool with near-zero schema documentation, an agent gets no help on filtering or pagination semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 7% across 28 parameters, and the description contributes nothing — no explanation of the filter_* operator families, sort syntax, or page_size/page_number. This is exactly the case where the description must compensate and does not.
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?
States a clear verb+resource ("List Custom fields") and leads with a deprecation marker, so the agent knows what the tool returns and that it is legacy. It does not name the specific replacement among the many `*_form_field*` / `*_custom_field*` 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?
Explicitly tells the agent not to use this and to prefer "form field endpoints instead" — a clear when-not signal. The guidance is vague about which concrete sibling to route to, leaving the agent to choose among list_form_fields, get_custom_field, etc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_formsList Custom FormsDRead-only
List custom forms
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_command | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds nothing beyond that — no pagination behavior, no note that results may be filtered, no indication of what the openWorldHint implies for result volume or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single phrase is technically concise but is under-specification rather than economy — there is no front-loaded content because there is no content beyond the tool title. Length is not the problem; absence of substance is.
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?
An 11-parameter filtered list tool with an output schema and a bare four-word description leaves the agent unable to use any filter or pagination argument meaningfully. The output schema excuses explaining return values, but nothing excuses the total absence of parameter and scoping information.
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?
Eleven optional parameters with 0% schema description coverage and zero mention in the description. Filter names, date-range operators (gt/lt/gte/lte), sort syntax, and page_size limits are all entirely undocumented, so 0% coverage gets no compensation whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_custom_form (single fetch) or the form-set/form-field listing tools. The agent must infer that this is the bulk-listing entry point entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dashboardsList DashboardsDRead-only
List dashboards
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: panels | |
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without the description. The description contributes nothing beyond that, such as the cost or latency of an open-world read, the default page size, or how pagination terminates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are technically concise, but this is under-specification rather than conciseness. Nothing is front-loaded because there is nothing to load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but three parameters with two undocumented, an enum whose effect is unclear, and no guidance on ordering or pagination leave an agent unable to call this tool deliberately rather than by guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: only include has a description, while page_size and page_number have no type semantics or default documented in either place. The description does not compensate, and it never clarifies that include="panels" expands each dashboard with nested panel data, which is the main non-obvious option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion of alternatives and no prerequisite stated. An agent must infer from the bare verb that this is the enumeration tool rather than get_dashboard, which is not stated anywhere in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_endpointsList EndpointsARead-only
List all available Rootly API endpoints with their descriptions.
| 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, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without description help. The only added value is the hint that entries include descriptions; nothing is said about result size, format, or whether the list is exhaustive/static.
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?
A single front-loaded sentence with zero filler. Nothing is repeated from the title beyond the minimum needed to state scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only enumeration with no output schema, the description conveys enough to call it correctly and know roughly what comes back. Only the shape/volume of the returned endpoint list is unspecified, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no filtering or paging inputs are needed.
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?
States a specific verb ('List') and resource ('Rootly API endpoints') plus what each entry carries ('with their descriptions'). It is clearly distinguishable from the domain-specific list_* siblings because it enumerates the API surface itself, though it never explicitly frames itself as a discovery/meta tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no mention of alternatives. An agent is left to infer that this is a discovery tool rather than a data-listing tool like list_incidents or list_services, which is exactly the confusion this description should preempt given the crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_environmentsList EnvironmentsDRead-only
List environments
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_color | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_color_eq | No | ||
| filter_color_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_color_not_eq | No | ||
| filter_color_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that – no note on listing scope, default page size, sorting behavior, or what an open-world list 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?
It is short, but brevity here reflects under-specification rather than conciseness – the single four-word phrase earns nothing and leaves all substantive behavior unstated.
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 24 optional parameters with no schema descriptions and no output-schema guidance needed, the description is wholly inadequate; an agent cannot construct a correct paginated/filtered query from this text. The only safety context comes from annotations, not the description.
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 24 parameters have 0% schema description coverage and the description supplies no explanation of sort, include, page_size, page_number, or the many filter_* variants. An agent has no basis for choosing between filter_name, filter_name_eq, filter_name_in, or filter_name_not_in.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus alternatives like get_environment, create_environment, or update_environment, nor any mention of prerequisites or pagination strategy. Usage must be entirely inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_levelsList Escalation LevelsCRead-only
List escalation levels
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| escalation_policy_id | Yes | Required. ID of the escalation policy (fills `{escalation_policy_id}` in /v1/escalation_policies/{escalation_policy_id}/escalation_levels). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint, so the description's only job is added context — and it supplies none. It does not state that results are scoped to a single escalation policy, whether pagination is required, or how many levels are typically returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted words, so it is structurally clean. However, brevity here comes from under-specification rather than efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description omits the parent-resource scoping, the pagination parameters, and any usage context. For a 4-parameter listing tool with 25% schema coverage, that leaves the agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%: escalation_policy_id is documented, but include, page_size and page_number are undocumented anywhere. The description does not compensate at all, saying nothing about parameters, valid values, or pagination 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus list_escalation_policies, get_escalation_level, or list_escalation_levels_paths. The only hint is the implicit 'list' verb, and there is no mention of prerequisites such as needing an existing policy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_levels_pathsList Escalation Levels PathsCRead-only
List escalation levels
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| escalation_policy_path_id | Yes | Required. ID of the escalation policy path (fills `{escalation_policy_path_id}` in /v1/escalation_paths/{escalation_policy_path_id}/escalation_levels). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on pagination behaviour (page_size/page_number exist), no result ordering or limits, despite being an open-world read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words with zero waste, but also zero payload — this is under-specification rather than genuine conciseness. Nothing is front-loaded because there is nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but with four parameters (three undocumented), a path-scoped resource, and multiple confusing sibling tools, the description leaves an agent under-equipped to call this 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 only 25%: the required escalation_policy_path_id is documented in the schema, but include, page_size, and page_number are undocumented anywhere. The description does not compensate for that gap or explain what 'include' expands.
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 restates the name as 'List escalation levels' but never says these are levels scoped to a specific escalation policy path, which is the only thing distinguishing it from the sibling list_escalation_levels and list_escalation_paths. An agent reading it cannot tell which of the three level/path tools it wants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the closely named sibling tools it competes with. The agent is left to infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_pathsList Escalation PathsCRead-only
List escalation paths
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: escalation_policy_levels | |
| page_size | No | ||
| page_number | No | ||
| filter_path_type | No | Filter by path_type. Returns all path types when omitted. | |
| escalation_policy_id | Yes | Required. ID of the escalation policy (fills `{escalation_policy_id}` in /v1/escalation_policies/{escalation_policy_id}/escalation_paths). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered structurally. The description adds nothing beyond that—no mention of scoping to a single policy, pagination behavior, or that results are filtered by a required parent ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words with a single clause; this is under-specification rather than concision. There is no front-loaded scope statement or qualifier to anchor the agent before it inspects the 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?
An output schema exists so return values need not be explained, but with five parameters, a required parent ID, two enums, and a crowded sibling set, the description leaves nearly everything an agent needs in order to call it correctly undocumented.
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 60%, below the 80% baseline, so the description must compensate—and it does not. The undocumented page_size/page_number parameters and the semantics of include/filter_path_type are explained only, if at all, inside the schema, and the description never mentions that escalation_policy_id is mandatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is given. Given a dense sibling cluster of escalation path tools (create/get/update_escalation_path, list_escalation_levels_paths), the agent is left to infer selection entirely from names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_policiesList Escalation PoliciesDRead-only
List escalation policies
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: escalation_policy_levels,escalation_policy_paths | |
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_team_ids | No | Filter escalation policies by associated team IDs. Comma-separate multiple values. | |
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_team_ids_eq | No | ||
| filter_team_ids_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_team_ids_not_eq | No | ||
| filter_team_ids_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no context whatsoever — nothing about pagination behavior, filtering semantics, or what `include` expands.
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 sentence is short, but this is under-specification rather than conciseness. There is no front-loaded information beyond the obvious name restatement.
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?
An output schema exists, so return values needn't be explained. However, for a tool with 18 parameters, 11% schema coverage, and numerous escalation siblings, the description leaves the agent unable to choose filters or interpret the enum-driven `include` parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% across 18 parameters, so the description carries the burden of explaining them — and it explains none. The 18 filter/pagination/include parameters are undocumented in both the description and largely 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the many escalation-related siblings, and no mention of prerequisites or context. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_field_optionsList Form Field OptionsDRead-only
List form_field_options
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| filter_color | No | ||
| filter_value | No | ||
| form_field_id | Yes | Required. ID of the form field (fills `{form_field_id}` in /v1/form_fields/{form_field_id}/options). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note about pagination behavior despite page_size/page_number being exposed, no mention of what the `include` parameter unlocks, and no hint about result volume or filtering scope.
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 trivially short rather than efficiently concise — it is under-specified, not front-loaded with useful information. Every sentence should earn its place, and this one simply echoes the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, which relieves the description of explaining return values, but a 6-parameter tool with 17% schema coverage and only one required-parameter hint needs far more. Five undocumented parameters and no scoping/filtering explanation leave the agent guessing how to call it 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 description coverage is only 17% (only form_field_id is documented in the schema), so the description is obligated to compensate. It does not: include, page_size, page_number, filter_color, and filter_value are completely unexplained in both the schema and the description.
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 is a tautological restatement of the tool name and title: 'List form_field_options'. It gives no indication of scope (e.g., that options are scoped to a required form_field_id) nor any differentiation from siblings such as get_form_field_option, create_form_field_option, or update_form_field_option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of alternatives like the singular get_form_field_option. The presence of a required form_field_id in the schema is the only hint that this tool is scoped to one field, and the agent must infer it from the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_fieldsList Form FieldsDRead-only
List form_fields
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: options,positions | |
| page_size | No | ||
| filter_kind | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_enabled | No | ||
| filter_kind_eq | No | ||
| filter_kind_in | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_enabled_eq | No | ||
| filter_enabled_in | No | ||
| filter_kind_not_eq | No | ||
| filter_kind_not_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_resource_type | No | Filter by resource type: `incident` or `problem`. Comma-separate multiple values. `problem` returns no fields unless Problem Management is enabled for the team. | |
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_enabled_not_eq | No | ||
| filter_enabled_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context—nothing about pagination, filtering, include options, rate limits, or result shape—so it does not enrich the annotation layer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short but under-specified, not concise in a useful sense. A single tautological sentence is not appropriately sized for a 29-parameter listing tool with pagination and filtering.
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 29-parameter read-only list tool with 7% schema coverage, the description is far too thin. Output schema and annotations cover return shape and safety, but the agent still lacks the filtering and pagination context needed to call it 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 description coverage is only 7% across 29 parameters, and the description adds no parameter meaning. Critical parameters like include, page_size, page_number, and the many filter_* variants are left for the agent to infer from bare names.
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 is a lowercased restatement of the tool name/title ('List form_fields'), so it gives a verb and resource but no scope, content, or distinction from siblings such as list_form_field_options or get_form_field. It is essentially tautological rather than a useful purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, alternatives, or exclusions are given. The agent must infer from the name that this is the listing endpoint and cannot tell from the description when to choose it over list_form_field_options, get_form_field, or list_form_sets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_setsList Form SetsBRead-only
List form_sets. Without filter[resource_type], returns incident form sets and, when Problem Management is enabled, problem form sets. Pass filter[resource_type]=incident to list only incident form sets.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_is_default | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_resource_type | No | Filter by resource type: `incident` or `problem`. Comma-separate multiple values. When omitted, incident form sets are returned, plus problem form sets if Problem Management is enabled. `problem` returns no form sets unless Problem Management is enabled. Any other value returns a 400. | |
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive profile, so the description's contribution is the default result set and the conditional gating on Problem Management being enabled — a genuine behavioral trait an agent could not infer from annotations. It does not cover pagination or result volume, but the core disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the default scope. The second and third sentences largely duplicate the filter_resource_type schema description, which is mild redundancy but not bloat.
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?
An output schema exists, so return values needn't be explained, and annotations carry the safety profile. However, with ten parameters at 10% schema coverage, an agent gets no explanation of paging, includes, or date-range filtering, leaving the definition only minimally viable for a resource this configurable.
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 10%: only filter_resource_type is documented, and the description merely restates that one parameter (using `filter[resource_type]` notation that differs from the schema property name `filter_resource_type`). The other nine parameters — include, page_size, page_number, filter_slug, filter_is_default, and four created_at bounds — get no explanation anywhere, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List form_sets") and immediately defines the scope of what comes back. It does not distinguish itself from the sibling get_form_set or from create_form_set, but the list semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the default behavior and gives one explicit narrowing pattern ("Pass filter[resource_type]=incident to list only incident form sets"), which implies when to reach for that parameter. It offers no guidance on when to use this tool rather than get_form_set or create_form_set, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionalitiesList FunctionalitiesDRead-only
List functionalities
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_cortex_id | No | ||
| filter_external_id | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_opslevel_id | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_backstage_id | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data; the description adds nothing on top. It does not mention pagination behavior, default sort order, the meaning of 'include', or result volume - context that matters for a 23-parameter list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words with no waste but severe under-specification; brevity here is a deficit, not a virtue, given the parameter surface. Nothing is front-loaded because nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values needn't be described), the tool exposes 23 undocumented parameters and the description provides zero coverage of any of them. For a paginated, heavily-filterable list endpoint this is completely inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 23 parameters, so the description carries the full burden and fails entirely. It does not explain sort syntax, the include expansion field, page_size/page_number semantics, or the many filter_* variants (eq/not_eq/in/not_in, created_at ranges, cross-system ids like cortex/opslevel/backstage).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_functionality (single-item retrieval) or other list_* tools. No prerequisites, no pagination advice, no exclusion criteria are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_heartbeatsList HeartbeatsDRead-only
List heartbeats
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that - no mention of pagination behavior, filtering semantics, or result shape that the annotations don't already imply.
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?
Brevity here is under-specification rather than conciseness; the single phrase is front-loaded but carries almost no 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 10 undocumented parameters, no annotations adding context, and an output schema to lean on but no explanation of filtering or inclusion behavior, the description is inadequate for the tool's complexity.
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 are 10 parameters with 0% schema description coverage, including non-obvious ones like 'include', 'filter_search', and four date-bound variants. The description must compensate but says nothing, leaving the agent guessing at 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_heartbeat, create_heartbeat, or the many other list_* siblings. An agent gets no help distinguishing retrieval contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_action_itemsList Incident Action ItemsCRead-only
List incident action items
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/action_items). | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes nothing beyond that: no statement that results are scoped to one incident, no ordering, no pagination behavior, and no mention of what 'include' expands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words that duplicate the tool name; this is under-specification rather than conciseness. Nothing is front-loaded because nothing of substance is present.
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?
An output schema exists so return values need not be explained, but for a 5-parameter tool with two closely related siblings, the description omits the incident scoping, pagination defaults, and the all-incidents alternative. It is not complete enough to guide correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, with incident_id, page_size, page_number, and fields_incidents documented in the schema, so the schema does the heavy lifting and the baseline is 3. The only gap, the bare 'include' parameter, is not compensated for by the description, which mentions no parameters whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. The critical choice between this tool and list_all_incident_action_items (unscoped) is left entirely to inference, and no prerequisites, ordering, or pagination expectations are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_alertsList Incident AlertsCRead-only
List incident alerts
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: environments,services,groups | |
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/alerts). | |
| page_number | No | Page number to retrieve | |
| fields_alerts | Yes | Comma-separated list of alert fields to include (reduces payload size) | id,summary,status,started_at,ended_at,short_id,alert_urgency_id,source,noise |
| filter_groups | No | Filter by team/group IDs (comma-separated) | |
| filter_labels | No | Filter by labels (comma-separated) | |
| filter_source | No | Filter by alert source | |
| filter_status | No | Filter by alert status (e.g., triggered, acknowledged, resolved) | |
| filter_services | No | Filter by service IDs (comma-separated) | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
| filter_ended_at_gt | No | Ended at > (ISO8601 datetime) | |
| filter_ended_at_lt | No | Ended at < (ISO8601 datetime) | |
| filter_ended_at_gte | No | Ended at >= (ISO8601 datetime) | |
| filter_ended_at_lte | No | Ended at <= (ISO8601 datetime) | |
| filter_environments | No | Filter by environment IDs (comma-separated) | |
| filter_created_at_gt | No | Created at > (ISO8601 datetime) | |
| filter_created_at_lt | No | Created at < (ISO8601 datetime) | |
| filter_started_at_gt | No | Started at > (ISO8601 datetime) | |
| filter_started_at_lt | No | Started at < (ISO8601 datetime) | |
| filter_created_at_gte | No | Created at >= (ISO8601 datetime) | |
| filter_created_at_lte | No | Created at <= (ISO8601 datetime) | |
| filter_started_at_gte | No | Started at >= (ISO8601 datetime) | |
| filter_started_at_lte | No | Started at <= (ISO8601 datetime) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered by structured fields. The description adds nothing beyond that — no mention of pagination limits, the default field projection, or what the response contains — which is a meaningful gap given 24 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words that merely echo the title — this is under-specification rather than genuine conciseness. There is nothing front-loaded because there is nothing beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 24 parameters, two required fields, and a rich filtering surface, the description provides no operational context. An output schema exists so return values needn't be explained, but the lack of scoping/alternative guidance leaves the definition substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the required incident_id, fields_alerts, and all filter_* ranges is already documented in the schema. The description contributes no additional meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives like list_alerts, and no statement of prerequisites (e.g., that an incident_id is required and alerts are scoped to that incident). The only hint of usage is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_custom_field_selectionsList Incident Custom Field SelectionsARead-only
[DEPRECATED] Use form field endpoints instead. List incident custom field selections
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/custom_field_selections). | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds the one behavior annotations cannot express: the tool is deprecated, which materially affects selection. It says nothing about pagination limits or result shape, but the output schema exists to cover returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, with the deprecation warning front-loaded ahead of the purpose statement — exactly the right ordering for an agent deciding whether to call it. No wasted words, though it is arguably too terse given the remaining gaps.
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 deprecated read-only list tool with an output schema and 80% param coverage, the deprecation notice plus purpose is the minimum viable set. It still leaves the replacement endpoint unnamed and the 'include' parameter unexplained, which matters if an agent is forced to call it anyway.
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 80%, so the schema already documents incident_id, page_size, page_number, and fields_incidents. The description adds no parameter meaning at all, and the one undocumented parameter ('include') is left unexplained in both places. Baseline 3 applies since the schema does the heavy lifting.
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?
States a specific verb and resource ('List incident custom field selections'), matching the tool name exactly, and the deprecation note separates it from the live path. It does not name the exact replacement tool (list_incident_form_field_selections) that an agent would need to route to, keeping it below a 5.
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?
Explicitly tells the agent NOT to use this tool and to use form field endpoints instead, which is stronger guidance than most list tools provide. The gap is that 'form field endpoints' is a category, not a named sibling, so the agent must still search the tool list for the right replacement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_eventsList Incident EventsCRead-only
List incident events
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/events). | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that – no mention of pagination behavior, ordering, result volume, or whether events include user/system-generated entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is only a single short phrase, so there is no waste, but it is under-specified rather than concise. Nothing is front-loaded because there is no content to prioritize.
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?
An output schema and rich annotations exist, so return format and safety need not be restated. However, for a paginated sub-resource lister surrounded by many similar list_* siblings, the description provides no differentiation or context to select it correctly, leaving a clear gap.
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 80%, with incident_id, page_size, page_number, and fields_incidents all documented in the schema. The description contributes no additional parameter meaning; the undocumented 'include' parameter remains unexplained in both places, but the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, what an 'event' is in this context, or which alternative to pick when the agent wants an audit trail versus alert events. The name implies usage, but the description provides none.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_form_field_selectionsList Incident Form Field SelectionsCRead-only
List incident form field selections
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Required. ID of the incident (fills `{incident_id}` in /v1/incidents/{incident_id}/form_field_selections). | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered externally. The description adds nothing beyond that—no mention of pagination behavior, filtering semantics, or what a "form field selection" represents, so there is no behavioral value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, but that brevity reflects under-specification rather than efficient communication—no information is front-loaded because no information exists beyond the title. There is nothing for the agent to act on beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a tool in a dense family of incident form-field and custom-field tools, the description fails to establish what a 'selection' is or how this differs from adjacent list tools, leaving a meaningful gap.
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 80%, with incident_id, page_size, page_number, and fields_incidents all documented in the schema, so the schema carries the parameter burden. The description adds nothing about parameters, but the baseline of 3 applies given the high coverage; only the bare 'include' parameter is undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The agent is left to infer the distinction between this tool and the neighboring get_incident_form_field_selection, list_incident_custom_field_selections, and list_form_field_options tools, which the description never mentions or disambiguates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_post_mortemsList Incident Post MortemsARead-only
Browse retrospectives across incidents.
Answers "the last five retrospectives", "published ones for this team
since June", or "how many are still draft". Each result carries the
document's analysis -- summary, causes, impact, actions. A recognised
Timeline is dropped and the record says so with timeline_omitted,
because a minute-by-minute log is a third of a document and rarely what
a browse is after. What remains is still capped, and a record cut that
way carries content_truncated with its real content_chars. Use
get_incident_retrospective for one document whole, Timeline included
and nothing cut.
Filtering happens upstream for status, severity, team, service and
dates. Free-text search is not offered here because the API's search
matches titles only, and titles are generated from the incident name --
it cannot find a retrospective by what it says. Use
get_incident_retrospective when the incident is already known.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order, e.g. '-created_at' for newest first | -created_at |
| status | No | Filter by status, e.g. 'published' or 'draft' | |
| severity | No | Filter by severity slug | |
| team_ids | No | Comma-separated team IDs | |
| page_size | No | Retrospectives per page (default 5, max 10). Each one carries its document minus any Timeline, cut at a size limit if still long, so a large page is expensive; narrow with the filters instead of raising this. | |
| page_number | No | Page number, 1-indexed | |
| service_ids | No | Comma-separated service IDs | |
| created_after | No | Only retrospectives created at or after this ISO date | |
| created_before | No | Only retrospectives created at or before this ISO date |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond what readOnly/destructive/openWorld annotations convey: it discloses that a recognized Timeline is dropped and flagged via `timeline_omitted`, that remaining content is still capped and flagged with `content_truncated` plus real `content_chars`, and that a large page is expensive. These are the exact behavioral traits that would otherwise cause silent data-loss surprises for a browsing agent.
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?
Purpose and the key behavior (Timeline omission) are front-loaded, and the paragraph structure maps cleanly to purpose / content shape / filtering. It is slightly long and repeats the `get_incident_retrospective` recommendation in two places, which could be consolidated into one sentence without loss.
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 9-parameter, zero-required listing tool with an output schema and read-only annotations, this covers the remaining gaps: what is returned, what is intentionally stripped and how that's signalled, page-cost guidance, and the alternative tool. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful framing that filtering happens upstream (i.e., these are server-side filters) and that no free-text parameter exists, but it doesn't add per-parameter semantics like sort syntax or date format beyond what the schema already documents.
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?
States a specific verb and resource ("Browse retrospectives across incidents") and immediately grounds it in concrete query shapes ("last five retrospectives", "published ones for this team since June"). It explicitly positions itself against `get_incident_retrospective`, so an agent can distinguish the list/browse case from the single-document case without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use `get_incident_retrospective` when the incident is already known or when the whole document with Timeline is needed. It also states a meaningful when-not (free-text search is not offered here) and explains why, so an agent won't try to force a search-shaped query through this tool. Filter scope (status, severity, team, service, dates) is declared up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_rolesList Incident RolesARead-only
List role assignments for an incident (who is Commander, Scribe, etc.).
Returns one entry per defined role with role metadata and the assigned
user (or user_id: null for roles that are defined on the incident but
not yet assigned). Use this to answer questions like "who is the
incident commander?", "is there a postmortem owner?", or "list all
roles for INC-4460".
Implementation note: this wraps GET /v1/incidents/{id}?include=roles
and flattens the JSON:API included array of incident_role_assignments
into a flat table so callers don't need to walk the relationships graph.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes | Incident reference whose role assignments to list. Accepts: UUID, bare sequential number (4460), #4460, or INC-4460. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, open-world safety profile, so the description need not repeat that. It adds useful behavioral detail: one entry per defined role, metadata included, and user_id null for unassigned roles, plus the flattening behavior of the underlying JSON:API response.
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 return shape, and the use cases are compact. The implementation note is somewhat internal but still helps explain output shape, so the text is efficient overall.
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 one-parameter read-only tool with rich annotations and an output schema, the description is sufficiently complete. It explains purpose, return meaning, and call context without needing to document every output field.
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 single incident_id parameter already documents accepted formats. The description does not add syntax or semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists role assignments for an incident, including examples like Commander and Scribe. It clearly distinguishes this focused role-listing operation from broader incident retrieval tools such as get_incident.
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?
It gives explicit usage examples, including answering 'who is the incident commander?' and listing roles for INC-4460. It does not explicitly name sibling alternatives or when not to use this tool, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incidentsList IncidentsARead-only
🚨 List incidents with structured filters - ESSENTIAL for incident response.
WHEN TO USE: • During incident response to check for related ongoing incidents • For shift handoffs to review recent incidents by team/service • For post-incident analysis to find patterns by severity/date range • For audit workflows requiring specific filtering criteria
Use this when you need date-range, team, service, severity, or status filters. For simple text searches, prefer search_incidents instead.
Argument caps: page_size <= 100. Values outside the bounds are clamped and reported, not rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order for incidents; a leading '-' sorts newest first. Supported values: created_at, -created_at, updated_at, -updated_at, started_at, -started_at, in_triage_at, -in_triage_at, mitigated_at, -mitigated_at, resolved_at, -resolved_at | -created_at |
| query | No | Optional free-text search across incident titles and summaries | |
| teams | No | Comma-separated team names or slugs to filter incidents (e.g., 'Infrastructure,platform-team') | |
| status | No | Optional incident status filter (e.g., started, investigating, resolved) | |
| severity | No | Optional severity filter (e.g., critical, high, medium, low) | |
| team_ids | No | Comma-separated Rootly team IDs to filter incidents (e.g., '123,456') | |
| page_size | No | Number of incidents per page (max: 100) | |
| page_number | No | Page number to retrieve (1-indexed) | |
| service_ids | No | Comma-separated Rootly service IDs to filter incidents (e.g., 'svc-1,svc-2') | |
| started_after | No | Filter incidents that started at or after this ISO 8601 timestamp | |
| started_before | No | Filter incidents that started at or before this ISO 8601 timestamp | |
| custom_field_selected_option_ids | No | Comma-separated custom field option IDs for structured incident filtering |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious behavior beyond the schema: page_size <= 100 and that out-of-bounds values are clamped and reported rather than rejected. It does not discuss result ordering defaults or result volume, but an output schema exists, so that gap is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the WHEN TO USE block scans quickly, with the alternative and the cap rule placed last where they belong. The four bullets overlap somewhat (incident response, handoff, and post-incident analysis all reduce to "filter recent incidents"), so a little length is not fully earned.
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 12-param, zero-required list tool with an output schema and full annotations, the description covers purpose, selection criteria, the main filter families, and pagination caps. It stops short of explaining sort semantics or how comma-separated multi-value filters combine, but those are handled in the schema descriptions.
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 12 params including the sort enum and comma-separated ID fields; baseline is 3. The description reinforces the filter families (date-range, team, service, severity, status) and the page_size cap/clamping rule, but adds nothing about `sort`, `page_number`, or `custom_field_selected_option_ids` that the schema does not already say.
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 opening line gives a specific verb and resource ("List incidents with structured filters") and immediately frames the scope as structured filtering rather than text search. The closing line names the sibling it is not ("prefer search_incidents"), so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Four concrete WHEN TO USE scenarios (incident response, shift handoff, post-incident analysis, audit) plus an explicit alternative and the condition that selects it ("For simple text searches, prefer search_incidents instead"). The only wrinkle is that the schema also exposes a free-text `query` param, which slightly blurs the stated split, but the routing guidance itself is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incident_typesList Incident TypesDRead-only
List incident types
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | Number of results per page (max: 20) | |
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | Page number to retrieve | |
| filter_color | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_color_eq | No | ||
| filter_color_in | No | ||
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_color_not_eq | No | ||
| filter_color_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing about return behavior, pagination, sort/include syntax, or rate limits, so it fails to contribute behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single four-word sentence that is concise only because it is severely under-specified. It is front-loaded in a trivial sense but every needed detail is absent, so the brevity is a deficiency rather than efficient communication.
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 24 optional parameters, extensive filtering capabilities, and pagination, the description is completely inadequate. Although an output schema exists and annotations cover safety, the agent receives no explanation of sort/include semantics, filter operators, or intended list scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%: page_size, page_number, and fields_incidents are described, but 21 parameters such as sort, include, and the many filter_* variants are undocumented in both schema and description. With 24 parameters and no descriptive compensation, the agent cannot reliably construct filters or understand sort/include formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., search_incidents, get_incident_type), nor any mention of prerequisites, pagination behavior, or filtering use cases. The agent has to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_investigationsList InvestigationsBRead-only
List AI SRE investigations you can see, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | pending, running, completed, failed or cancelled. | |
| outcome | No | root_cause_identified, best_effort, inconclusive, blocked or could_not_investigate. | |
| alert_id | No | Only investigations of this alert. | |
| page_size | No | ||
| incident_id | No | Only investigations of this incident. | |
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds two genuinely useful behavioral facts not in the annotations: results are permission-filtered to what the caller can see, and ordering is newest-first. It says nothing about pagination despite page_size/page_number parameters.
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?
A single well-front-loaded sentence with no filler. However, its brevity comes at the cost of omitting filtering and pagination behavior, so it is slightly under-specified rather than maximally 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?
An output schema exists, so return shape needn't be described. But for a six-parameter list tool the description never indicates that results can be filtered by status, outcome, alert or incident, nor that results are paginated — gaps an agent would want before invoking it.
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 67%, so the schema itself documents most parameters, including the valid status and outcome values. The description adds no parameter-level meaning beyond that, which is the baseline expectation when schema coverage is reasonably high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List AI SRE investigations') and adds two distinguishing traits: visibility scoping ('you can see') and sort order ('newest first'). This separates it from get_investigation, start_investigation and cancel_investigation, though it doesn't explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. The agent must infer from the name that this is the enumeration entry point before calling get_investigation, and nothing mentions that results can be narrowed by status, outcome, alert or incident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_call_routersList Live Call RoutersDRead-only
List Live Call Routers
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note on pagination behavior, default page size, or whether results are scoped to the requesting user's account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
There is no excess text, but brevity here comes from under-specification rather than economy — a four-word restatement of the title is not a useful front-loaded summary.
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 an 11-parameter list endpoint, the description omits sorting syntax, 'include' expansion semantics, filter operators, and pagination defaults. An output schema exists so return values need not be described, but the input side is entirely unaddressed, making the definition inadequate 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?
All 11 parameters have 0% schema description coverage and no enum constraints, and the description supplies no meaning for sort, include, page_size, the four date-range filters, or filter_search. This is the worst-case combination: undocumented params and a silent description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of alternatives such as get_live_call_router for a single router. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_meeting_recordingsList Meeting RecordingsARead-only
List all meeting recording sessions for an incident. Returns recordings sorted by session number. Each recording represents one bot session with its own transcript, status, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Related resources to include (empty for minimal payload) | |
| page_size | No | Number of results per page (max: 20) | |
| incident_id | Yes | Incident UUID | |
| page_number | No | Page number to retrieve | |
| fields_incidents | No | Comma-separated list of incident fields to include (reduces payload size) | id,title,summary,status,severity,created_at,updated_at,url,started_at |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe read-only operation, so the description does not need to restate safety. It adds useful behavioral context by saying results are sorted by session number and that each recording represents one bot session with transcript, status, and metadata.
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 short sentences with the core scope front-loaded. Every sentence adds useful information about scope, ordering, or recording 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?
With full schema coverage, annotations, and an output schema, the description provides enough context to call the tool correctly. It could mention pagination behavior, but that is already covered by the schema and is not essential for selection.
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 five parameters, including pagination and include/fields options. The description only reinforces the required incident scope and does not add parameter-level 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 states a specific verb and resource: listing meeting recording sessions for an incident. The incident scope helps distinguish it from the broader sibling list_all_meeting_recordings, though it does not explicitly name that alternative.
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?
Usage is implied by 'for an incident,' which tells the agent this is the incident-scoped listing tool. However, it does not explicitly say when to use this versus list_all_meeting_recordings, get_meeting_recording, or get_incident_meeting_transcripts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_observability_logsList Observability LogsARead-only
Search Rootly Observability logs with the Logs explorer query syntax (service:, severity:, index:, trace_id:, @attribute:value, OR inside field groups, - negation, * prefix, free text). Rows are newest first, clipped and redacted. meta.query and meta.window echo the effective query and window. Requires a personal or Global API key (Team API Keys are group-scoped and get 403 unsupported_api_key) or an OAuth token with the obs.logs:read (or all) scope, and the Observability logs read permission. A Global API key uses its service user's Observability role, which starts as the team's default Observability role. Limited to 60 requests per minute per token; on this endpoint the X-RateLimit-* headers report that per-minute budget, not the default API limit. Every 429 returns the errors envelope with code rate_limited and a Retry-After header.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_to | No | Window end: ISO8601 or relative like `now`. Defaults to `now`. | |
| page_size | No | Maximum rows per page (1-50, default 25). A page can hold fewer rows when the response size budget is reached; keep paging while meta.page.next_cursor is present. | |
| filter_from | No | Window start: ISO8601 or relative like `now-6h`, `now-30m`, `now-2d`. Defaults to `now-1h`. Windows are at most 7 days, and 24 hours without an indexable term. | |
| page_cursor | No | `meta.page.next_cursor` from the previous page. Keeps that page's window; send the same `filter[query]`. | |
| filter_query | No | Logs explorer query, e.g. `service:checkout severity:error index:main`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/openWorld annotations: newest-first ordering, clipping and redaction of rows, meta.query/meta.window echo, per-minute rate budget with X-RateLimit-* semantics differing from the default API limit, and the exact 429 error envelope with code rate_limited plus Retry-After. It also documents the specific 403 failure mode (unsupported_api_key) for Team API keys, which is exactly the kind of behavioral detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with query capability, then auth, then rate limits, then errors – a sensible order and nearly every sentence carries operational weight. It is dense and long for a list tool, with the rate-limit sentence being the one place that could be tightened.
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 an output schema available, the description doesn't waste space on return fields, yet it still covers the things the schema can't: ordering, redaction, auth prerequisites, pagination continuation, window caps and rate-limit behavior. Nothing an agent needs before invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine semantics: it enumerates the supported Logs explorer operators (service:, severity:, index:, trace_id:, @attribute, OR, -, *) that the filter_query schema only gestures at with one example. The paging contract (keep paging while meta.page.next_cursor is present, reuse the same filter[query]) is also reinforced in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('Search Rootly Observability logs') plus the query-language scope, which clearly separates it from unrelated CRUD siblings. It never names the adjacent tools (count_observability_logs, list_observability_patterns), so sibling differentiation is left implicit.
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?
Gives real selection context: required key type (personal/Global API key, or OAuth with obs.logs:read/all), the Observability logs read permission, and the 7-day/24-hour window constraints that determine whether the call can succeed at all. It stops short of stating when to prefer count_observability_logs or list_observability_patterns instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_observability_patternsList Observability PatternsARead-only
List log patterns (clustered log templates) with counts against the previous window of the same length. Only service:, severity: and pattern: filters apply; others are echoed in meta.ignored_filters. Each pattern's logs_query drills into matching rows with GET /v1/observability/logs; it is omitted when that query would exceed the /logs length or clause limits. Requires a personal or Global API key (Team API Keys are group-scoped and get 403 unsupported_api_key) or an OAuth token with the obs.logs:read (or all) scope, and the Observability logs read permission. A Global API key uses its service user's Observability role, which starts as the team's default Observability role. Limited to 60 requests per minute per token; on this endpoint the X-RateLimit-* headers report that per-minute budget, not the default API limit. Every 429 returns the errors envelope with code rate_limited and a Retry-After header.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | `count` for the most frequent patterns, `change` for the biggest change against the previous window. | count |
| filter_to | No | Window end: ISO8601 or relative like `now`. Defaults to `now`. | |
| page_size | No | Number of top patterns to return (1-25, default 15), ordered by sort. Not paginated: meta.truncated is true when more patterns matched; narrow filter[query] to see them. | |
| filter_from | No | Window start: ISO8601 or relative like `now-6h`. Defaults to `now-1h`. At most 7 days long, within the last 30 days. | |
| filter_query | No | Query using `service:`, `severity:` and `pattern:` filters, e.g. `service:checkout severity:error`. | |
| filter_flagged | No | Only patterns flagged by a detector (new, spike, error surge). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds extensive behavioral detail beyond the annotations: required API key or OAuth scopes, Team API Key 403 behavior, rate limit of 60 requests per minute, per-endpoint X-RateLimit header semantics, and 429 response format with Retry-After. It also discloses filter behavior and logs_query omission conditions, fully covering operational traits.
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 dense but well-structured and front-loaded, starting with the core purpose before detailing filters, auth, and rate limits. Every sentence contributes necessary operational information for calling the tool correctly.
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, output schema, and annotation coverage, the description is complete. It covers authentication, permissions, rate limits, filter behavior, and error handling, so an agent has what it needs to invoke the tool correctly without additional explanation of return values.
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 the baseline is 3, but the description adds meaningful parameter semantics by stating that only service:, severity: and pattern: filters apply and that unsupported filters are echoed in meta.ignored_filters. This is useful context not present 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 opens with a specific verb and resource: it lists log patterns, defined as clustered log templates, with counts against the previous window. This clearly distinguishes it from raw log listing or counting tools by emphasizing patterns and window-over-window comparison.
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 pattern analysis and explains filter applicability, but it does not explicitly state when to use this tool versus siblings like list_observability_logs or count_observability_logs. Usage is implied rather than directly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_on_call_rolesList On Call RolesCRead-only
List On-Call Roles
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination, default page size, or how results are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is maximally concise with zero waste, but the brevity stems from under-specification rather than tight writing. There is no front-loaded scope statement to build on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema and annotations exist, so return values and safety are covered elsewhere. However, for an 11-parameter listing tool with entirely undocumented parameters, the description leaves critical operational detail (filtering, sorting, paging) unaddressed.
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 11 parameters with 0% schema description coverage, and the description gives no explanation of sort, include, filter_*, or paging semantics. This is the exact case where the description must compensate and it does not.
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 is a verbatim restatement of the tool title 'List On-Call Roles' with no added scope, filters, or distinguishing detail. It does not differentiate from the sibling get_on_call_role, which returns a single role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as get_on_call_role, and no note on when listing roles is appropriate. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_on_call_shadowsList On Call ShadowsCRead-only
List shadow shifts for schedule
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/on_call_shadows). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds almost no behavioral context beyond the title: it does not mention pagination behavior, filtering, or what 'shadow shifts' include, despite exposing page_size and page_number parameters.
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, front-loaded sentence with no filler. Its brevity is appropriate structurally, though the same brevity contributes to gaps in other dimensions.
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 four-parameter list tool with 25% schema description coverage, the description is too thin. An output schema and annotations cover return values and safety respectively, but the description should still explain the optional include and pagination parameters and how this list differs from related shift-listing 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 description coverage is only 25%, with only schedule_id documented in the schema. The description mentions 'schedule' but adds no meaning for the three undocumented parameters (include, page_size, page_number), leaving their semantics entirely to inference.
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 a specific verb and resource: 'List shadow shifts'. However, it does not distinguish this list operation from sibling tools such as get_schedule_shifts, list_shifts, or get_on_call_shadow, so an agent must infer the boundary from the name alone.
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 phrase 'for schedule' implies the tool requires a schedule context, but the description gives no explicit when-to-use guidance, no exclusions, and no named alternatives. It does not explain why an agent should choose this over list_shifts or get_schedule_shifts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_override_shiftsList Override ShiftsDRead-only
List override shifts
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/override_shifts). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination behavior, no note that results are scoped to a single schedule, and no indication of what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but brevity here reflects under-specification rather than concision. It is a four-word restatement of the title with no front-loaded purpose or scoping detail.
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?
An output schema exists, so return values need not be explained, but the tool takes a required schedule_id plus three undocumented optional parameters (include, pagination) that an agent cannot use correctly without guessing. The description supplies none of this 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?
Schema description coverage is only 25%: 'include', 'page_size', and 'page_number' have no documented meaning in the schema, and the description mentions none of them. At this coverage level the description must compensate, and it provides zero parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling set contains several closely related shift-listing tools (list_shifts, get_schedule_shifts, list_shifts, get_override_shift), and nothing in the description helps an agent choose among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playbooksList PlaybooksDRead-only
List playbooks
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: severities,environments,services | |
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing about pagination behavior, what the include expansion returns, or result ordering, so it contributes no behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single three-word phrase that is under-specified rather than concise. It is front-loaded but contains no substantive 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?
An output schema exists, so return values need not be explained, but the description still fails to cover the include expansion behavior and pagination for a tool with three parameters. It is inadequate for an agent to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description does not explain the include enum, page_size, or page_number. The include parameter's comma-separated expansion semantics are left entirely to the schema, which only partially documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_playbook or search_incidents. No prerequisites, exclusions, or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pulsesList PulsesDRead-only
List pulses
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_refs | No | ||
| page_number | No | ||
| filter_labels | No | ||
| filter_source | No | ||
| filter_refs_eq | No | ||
| filter_refs_in | No | ||
| filter_services | No | ||
| filter_labels_eq | No | ||
| filter_labels_in | No | ||
| filter_source_eq | No | ||
| filter_source_in | No | ||
| filter_ended_at_gt | No | ||
| filter_ended_at_lt | No | ||
| filter_refs_not_eq | No | ||
| filter_refs_not_in | No | ||
| filter_services_eq | No | ||
| filter_services_in | No | ||
| filter_ended_at_gte | No | ||
| filter_ended_at_lte | No | ||
| filter_environments | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_labels_not_eq | No | ||
| filter_labels_not_in | No | ||
| filter_source_not_eq | No | ||
| filter_source_not_in | No | ||
| filter_started_at_gt | No | ||
| filter_started_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_started_at_gte | No | ||
| filter_started_at_lte | No | ||
| filter_environments_eq | No | ||
| filter_environments_in | No | ||
| filter_services_not_eq | No | ||
| filter_services_not_in | No | ||
| filter_environments_not_eq | No | ||
| filter_environments_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes nothing beyond this—no pagination behavior, filtering semantics, or data scope—leaving a significant gap for a listing tool with 40 parameters.
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?
While extremely short, this is under-specification rather than conciseness—the two-word phrase earns no informational value. There is no structure or front-loaded detail to guide invocation.
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 40 parameters, an output schema, and open-world read behavior, the description is completely inadequate. It supplies none of the information needed to construct filters or understand scope, relying entirely on an undocumented 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 0% across 40 parameters, including numerous filter_* variants (eq/in/not_eq/not_in for refs, labels, services, environments, timestamps) and pagination fields. The description provides no explanation of any parameter's meaning or expected format, so it fully fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_pulse, create_pulse, or any other list_* sibling. No context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_retrospective_processesList Retrospective ProcessesCRead-only
List retrospective processes
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: retrospective_steps,severities | |
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: no mention of pagination behavior, ordering, whether the list is workspace-scoped, or how the `include` expansion affects response size or latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, so nothing is wasted. However, the brevity is the result of under-specification rather than disciplined editing, and there is no structure to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a paginated list endpoint with an enum expansion parameter the description should still say what is listed and how paging works. Nothing about scope, ordering, or the effect of `include` is covered, leaving an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% — only `include` is documented (in the schema itself, not the description), while `page_size` and `page_number` have no semantics anywhere. The description contributes zero parameter meaning and does not compensate for the low coverage, including no hint about valid range for page_size or 0/1-based page numbering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_retrospective_process (single-item lookup) or the related retrospective step/group tools in the sibling list. The only implied usage is that it enumerates rather than fetches one, which the name alone already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedule_rotation_active_daysList Schedule Rotation Active DaysDRead-only
List schedule rotation active days
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| schedule_rotation_id | Yes | Required. ID of the schedule rotation (fills `{schedule_rotation_id}` in /v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note about pagination behavior, ordering, or whether active days are returned relative to a date range. With annotations present the bar is lower, but a pure name echo still contributes no behavioral 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?
It is short and front-loaded with no filler, but that brevity is the result of saying nothing rather than of disciplined editing. As a single name-echo sentence it wastes no words yet conveys no 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?
An output schema exists, so return values needn't be described. However, with 4 parameters at 25% schema coverage and zero usage context, the description leaves an agent unable to call the tool confidently — it doesn't even identify that schedule_rotation_id scopes the result set.
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 are 4 parameters with only 25% schema description coverage — only schedule_rotation_id is documented in the schema. The description says nothing about 'include' (what related resources it accepts), page_size, or page_number, leaving three parameters unexplained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance at all on when to use this versus list_schedule_rotations, get_schedule_rotation, or list_schedule_rotation_users. The agent must infer the entire selection context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedule_rotationsList Schedule RotationsDRead-only
List schedule rotations
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/schedule_rotations). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no pagination behavior, no note about what the listing returns or how openWorld affects results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but this is under-specification rather than conciseness: the single phrase carries no actionable information and leaves the agent no better off than the tool name alone.
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 five-parameter filtered list operation with 20% schema coverage and an output schema present, the description is far too thin. Return format is excused by the output schema, but usage context, parameter meanings, and paging behavior are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must compensate — but it says nothing about sort, include, page_size, or page_number. Four of five parameters are undocumented anywhere, leaving the agent to guess at accepted values and paging 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_schedule_rotation or list_schedule_rotation_users. The only implied context is the required schedule_id, which the schema already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedule_rotation_usersList Schedule Rotation UsersCRead-only
List schedule rotation users
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| schedule_rotation_id | Yes | Required. ID of the schedule rotation (fills `{schedule_rotation_id}` in /v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the title – no mention of pagination behavior, filtering, or what a 'rotation user' represents, despite a non-trivial endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but this is under-specification rather than conciseness – the single phrase carries no information beyond the tool name and earns no place on its own.
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?
An output schema and annotations exist, so return values and safety need not be explained. However, with 3 of 4 parameters undocumented and no indication of what the listing returns or how pagination works, the description is insufficient for an agent to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%; only schedule_rotation_id is documented, leaving include, page_size, and page_number entirely undescribed in both schema and description. The description does not compensate for this gap at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_schedule_rotation, list_schedule_rotations, or list_schedule_rotation_active_days. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedulesList SchedulesDRead-only
List schedules
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_team_ids | No | Filter schedules by owning team IDs. Comma-separate multiple values. | |
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_team_ids_eq | No | ||
| filter_team_ids_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_team_ids_not_eq | No | ||
| filter_team_ids_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond that — no mention of pagination behavior, filtering semantics, or result ordering, which matters for a list tool with 18 optional parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are technically concise, but this is under-specification rather than conciseness. There is nothing to front-load because no meaningful content exists.
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 18 parameters at 6% schema coverage, an output schema present, and many closely related sibling tools, the description is drastically incomplete. An agent cannot determine filter syntax, pagination defaults, or how this differs from get_schedule without reading the full schema and guessing.
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 6% across 18 parameters, so the description carries nearly the full burden of explaining include, page_size, page_number, and the many filter_* variants. It provides zero parameter information, leaving operators like filter_name_eq vs filter_name_in vs filter_name_not_in completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_schedule, list_shifts, get_schedule_shifts, or list_schedule_rotations. The agent is left to infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList ServicesDRead-only
List services
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_cortex_id | No | ||
| filter_external_id | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_opslevel_id | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_backstage_id | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_alert_broadcast_enabled | No | ||
| filter_alert_broadcast_enabled_eq | No | ||
| filter_alert_broadcast_enabled_in | No | ||
| filter_incident_broadcast_enabled | No | ||
| filter_incident_broadcast_enabled_eq | No | ||
| filter_incident_broadcast_enabled_in | No | ||
| filter_alert_broadcast_enabled_not_eq | No | ||
| filter_alert_broadcast_enabled_not_in | No | ||
| filter_incident_broadcast_enabled_not_eq | No | ||
| filter_incident_broadcast_enabled_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered elsewhere. The description adds nothing beyond that: no mention of pagination behavior, filtering semantics across the 33 parameters, default sort, or result scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are technically concise but represent under-specification rather than efficiency. There is no front-loaded structure because there is no content to 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?
A 33-parameter filtered list tool with 0% schema coverage demands substantial description; an output schema exists so return values need not be explained, but pagination, sorting, and the rich filter family are all left opaque. The definition is completely inadequate for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 33 parameters, so the description carries the full explanatory burden — and it says nothing. Critical distinctions such as sort syntax, include expansion, filter_* vs filter_*_eq vs filter_*_in, and page_size/page_number behavior are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_service, search-style siblings, or other list_* tools. An agent must infer everything from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_severitiesList SeveritiesDRead-only
List severities
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_color | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_color_eq | No | ||
| filter_color_in | No | ||
| filter_severity | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_severity_eq | No | ||
| filter_severity_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_color_not_eq | No | ||
| filter_color_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_severity_not_eq | No | ||
| filter_severity_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description contributes nothing beyond that — no notes on result volume, pagination behavior, or what filter combinations are supported — so it fails to add value on top of 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 two words long; this is under-specification rather than conciseness. There is no front-loaded scope statement to build on, so nothing earns its place because nothing is present.
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 29 undocumented parameters, a full annotation set, and an output schema, the description supplies no operational context at all. An agent cannot know how to construct a valid or efficient query from what is written here.
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 29 properties at 0% description coverage, including many overlapping filter variants (filter_name, filter_name_eq, filter_name_in, filter_name_not_eq, filter_name_not_in) that are impossible to disambiguate from names alone. The description does not explain a single parameter, leaving the agent to guess at sort syntax, include semantics, and filter operator conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings such as get_severity, create_severity, or update_severity, nor any mention of prerequisites or pagination expectations. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shift_coverage_requestsList Shift Coverage RequestsBRead-only
List active shift coverage requests for a schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_id | Yes | Required. ID of the schedule (fills `{schedule_id}` in /v1/schedules/{schedule_id}/shift_coverage_requests). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds one genuine behavioral detail beyond the annotations: only *active* requests are returned, implying resolved/filled requests are excluded. It says nothing about pagination, ordering, or result volume for an openWorld read.
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?
One front-loaded sentence with no filler and the scope qualifier placed before the resource. It is efficient, though nearly at the edge of under-specification.
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?
Output schema exists and annotations cover the safety profile, so the description needn't explain return values. However, 'active' is never defined (pending? unclaimed?), and there is no note on pagination or whether the list is bounded — a small but real gap for an agent deciding whether one call suffices.
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?
Single required parameter with 100% schema description coverage, so the schema already explains schedule_id and its URL interpolation. The description adds only the loose phrase 'for a schedule', which is redundant with the schema — 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?
States a specific verb (List) and resource (shift coverage requests) scoped to a schedule, with the qualifier 'active' narrowing the result set. It does not explicitly distinguish itself from the sibling get_shift_coverage_request, so an agent must infer list-vs-fetch from the name alone.
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 prefer this over get_shift_coverage_request or other schedule-scoped siblings (get_schedule_shifts, list_override_shifts). The phrase 'for a schedule' contextualizes but does not state prerequisites, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shiftsList ShiftsARead-only
List on-call shifts with reliable filtering, enrichment, and MCP-level pagination.
Unlike the raw API, this tool:
Actually filters by user_ids (client-side filtering)
Includes user_name, user_email, schedule_name, team_name
Calculates total_hours for each shift
Returns a predictable paginated result for MCP clients
Use this instead of the auto-generated listShifts when you need user filtering or dependable pagination on large tenants.
Answers questions about individual shifts: who is on call at a given time, when a handoff happens, which shifts were overrides, or one person's schedule (via user_ids). For questions about totals across a team -- hours per responder, coverage, load -- use get_oncall_schedule_summary, whose response size depends on team size rather than on how long a range you asked for.
Ranges longer than the upstream cap are split into windows and merged automatically, so a multi-month range is a normal request.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | Yes | End date/time for shift query (ISO 8601 format, e.g., '2026-02-15T23:59:59Z') | |
| user_ids | No | Comma-separated list of user IDs to filter by (e.g., '2381,94178'). Only returns shifts for these users. | |
| from_date | Yes | Start date/time for shift query (ISO 8601 format, e.g., '2026-02-09T00:00:00Z') | |
| page_size | No | Number of enriched shifts to return per page (max: 100). This paginates the MCP response even when the upstream shifts API does not. | |
| page_number | No | Page number of enriched shifts to return (1-indexed). Use this instead of relying on the generated listShifts pagination. | |
| schedule_ids | No | Comma-separated list of schedule IDs to filter by (optional) | |
| include_user_details | No | Include user name and email in response (default: True) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds substantial behavioral context beyond that: client-side user_ids filtering, enriched fields, total_hours calculation, predictable pagination, and automatic splitting/merging of long date ranges. There is no contradiction with the read-only annotation.
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 longer than average but appropriately front-loads the tool's purpose and uses bullets for key differentiators. Some pagination-related wording is repeated, but overall the structure is clear and the length is justified by the tool's complexity and multiple relevant siblings.
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, full schema coverage, output schema, and read-only annotations, the description is complete enough for correct invocation. It covers the key behavioral traits, alternatives, and range-handling constraints without needing to restate return-value details already captured by the 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?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description still adds useful meaning beyond the schema by explaining that user_ids filtering is client-side and that pagination is MCP-level and predictable, though it does not elaborate on every 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?
The description states a specific verb and resource: listing on-call shifts with reliable filtering, enrichment, and MCP-level pagination. It further scopes the tool to individual-shift questions and distinguishes it from the auto-generated listShifts and get_oncall_schedule_summary, so an agent can identify its role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: use this instead of the auto-generated listShifts when user filtering or dependable pagination is needed, and use get_oncall_schedule_summary for team-level totals. The individual-vs-summary distinction is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_status_pagesList Status PagesDRead-only
List status pages
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no mention of pagination behavior, default ordering, whether filtering is server-side, or result volume limits — notable gaps for a 19-filter listing endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words with zero waste, but the problem is under-specification, not verbosity. There is no front-loaded scope, no alternative routing, nothing to prioritize because nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A tool with 19 optional parameters, no schema descriptions, and no parameter guidance in the description is severely under-documented. The output schema exists so return values need not be explained, but that is the only burden relieved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about any of the 19 parameters. The agent is left to guess the semantics of sort, include, page_size, page_number, and the eleven filter_* variants purely from their names, with no documented syntax, operators, or interaction rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_status_page, list_status_page_templates, or the many other list_* siblings in the toolset. The agent must infer that this is the enumeration counterpart to the single-resource getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_status_page_templatesList Status Page TemplatesCRead-only
List status page templates
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| status_page_id | Yes | Required. ID of the status page (fills `{status_page_id}` in /v1/status-pages/{status_page_id}/templates). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered, but the description adds nothing beyond them. It says nothing about pagination behavior (despite page_size/page_number params), result ordering, or whether templates are inherited at the account level versus per status page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words with no waste, but this is under-specification rather than conciseness — there is no front-loaded scope statement or qualifier, so nothing is actually communicated beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return shape needn't be described), three of four input parameters are undocumented and no usage context is given. For a paginated, scoped list operation the description leaves the agent without enough to invoke it correctly without reading the raw schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only status_page_id carries schema documentation (25% coverage); include, page_size and page_number are entirely undocumented. The description does not compensate for that gap by explaining what `include` accepts or how paging works, so it relies on the one documented 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the alternative get_status_page_template for fetching a single template, and no note that status_page_id is mandatory to scope the listing. The agent must infer all routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sub_statusesList Sub StatusesDRead-only
List Sub-Statuses
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_parent_status | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond those annotations, such as whether results are paginated, what 'include' does, or how parent-status filtering behaves.
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 only three words, but this is under-specification rather than useful conciseness. It is front-loaded only in the trivial sense of restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, 0% schema description coverage, and pagination/filtering complexity, the description is completely inadequate. Even though an output schema exists, the input behavior and filtering semantics are left entirely to inference.
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 10 parameters with 0% description coverage, and the description provides no meaning for any of them. Filters like filter_parent_status, include, and page_size are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Sub-Statuses' essentially restates the tool name and title without adding specificity about what a Sub-Status is or how this list differs from sibling tools such as get_sub_status or list_incident_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_sub_status or create_sub_status, nor any context about filtering by parent status or pagination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsList TeamsDRead-only
List teams
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | comma separated if needed. eg: users | |
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_color | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_color_eq | No | ||
| filter_color_in | No | ||
| filter_cortex_id | No | ||
| filter_external_id | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_opslevel_id | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_backstage_id | No | ||
| filter_color_not_eq | No | ||
| filter_color_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No | ||
| filter_alert_broadcast_enabled | No | ||
| filter_alert_broadcast_enabled_eq | No | ||
| filter_alert_broadcast_enabled_in | No | ||
| filter_incident_broadcast_enabled | No | ||
| filter_incident_broadcast_enabled_eq | No | ||
| filter_incident_broadcast_enabled_in | No | ||
| filter_alert_broadcast_enabled_not_eq | No | ||
| filter_alert_broadcast_enabled_not_in | No | ||
| filter_incident_broadcast_enabled_not_eq | No | ||
| filter_incident_broadcast_enabled_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context such as pagination, filtering behavior, or what 'include' expands, which is important for a 38-parameter list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified rather than concise. It fails to front-load any useful information about scope, filtering, or pagination.
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 38 parameters, 3% schema coverage, and a complex filtering surface, the description is completely inadequate. Although an output schema exists and annotations cover safety, the description does nothing to help an agent understand how to invoke 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?
Schema description coverage is only 3% across 38 parameters, and the description provides no parameter information at all. It does not compensate for the severe documentation gap 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_team or list_users. The description provides no context, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_user_notification_rulesList User Notification RulesCRead-only
List user notification rules
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| include | No | ||
| user_id | Yes | Required. ID of the user (fills `{user_id}` in /v1/users/{user_id}/notification_rules). | |
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without the description's help. The description adds nothing beyond that — no pagination behavior, no default sort, no note that results are confined to the given user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is certainly short and front-loaded, but the brevity comes from omission rather than efficiency — the single phrase is a restatement of the name, not a distilled instruction.
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?
An output schema exists so return values need not be explained, but with five parameters at 20% coverage and no usage or behavioral context, the definition is not sufficient for an agent to call this tool confidently with sort/include/pagination options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%: user_id is documented, but sort, include, page_size and page_number have no descriptions anywhere. The description does not compensate at all, leaving four parameters semantically opaque to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or what alternative to pick. An agent must infer from the name alone that this is the read counterpart to create_user_notification_rule, and nothing clarifies whether it is scoped per-user or global.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList UsersDRead-only
List users
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: email_addresses,phone_numbers | |
| page_size | No | ||
| page_number | No | ||
| filter_email | No | ||
| filter_search | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds nothing beyond that: it does not mention pagination defaults, how filters combine, whether `include` expands nested payloads, or result volume for a live-account listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but two words is under-specification rather than conciseness. There is no front-loaded statement of scope or filtering capability to anchor the call.
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 10-parameter, paginated, filterable list endpoint, this is inadequate. Although an output schema exists and annotations cover safety, the agent still cannot tell how filtering or pagination behave or when to prefer a sibling lookup 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 description coverage is only 20% across 10 parameters, and 6 of them (page_size, page_number, filter_email, filter_search, and the several created_at bounds) carry no schema description at all. The description supplies zero parameter meaning, leaving the agent to guess formats and filter 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (get_user for a single user, get_current_user for self, get_user_email_addresses for related data), and no preconditions. The description is purely a label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflow_form_field_conditionsList Workflow Form Field ConditionsCRead-only
List workflow form field conditions
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| page_number | No | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/form_field_conditions). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, lowering the burden, but the description adds nothing — no mention of pagination behavior, default page size, or what 'include' expands. It just echoes the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with zero waste, but this is under-specification rather than conciseness; there is no front-loaded useful information because there is essentially no 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?
An output schema exists so return values needn't be explained, but with 4 parameters and 25% schema coverage, the description should at minimum clarify filtering/pagination semantics. It provides nothing beyond the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%: only workflow_id is documented. Three parameters (include, page_size, page_number) are undocumented in both schema and description, and the description does nothing to compensate — no explanation of what 'include' accepts or pagination defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the sibling get_workflow_form_field_condition (singular getter) or related list tools like list_form_field_options. No preconditions, exclusions, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflow_groupsList Workflow GroupsDRead-only
List workflow groups
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_kind | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_expanded | No | ||
| filter_position | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description contributes nothing beyond that: no mention of pagination behavior, filtering semantics, or what the open-world read actually reaches. With annotations present the bar is lower, but zero added value caps the score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words, so there is no verbosity — but this is under-specification rather than conciseness. A description that is essentially a label leaves nothing to be 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?
An output schema exists, so return values need not be described. However, for a listing tool with 9 optional filter and pagination parameters at 0% schema coverage, the description is far too thin to let an agent construct a correct call; only the existence of annotations and an output schema keeps this above the floor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, and the description does not name or explain a single one. Critical ambiguities are left unresolved, e.g. what 'include' selects, what values 'filter_kind' accepts, and how 'filter_expanded' or 'filter_position' behave.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_workflow_group, create_workflow_group, update_workflow_group, or list_workflows. The agent must infer usage purely from the name, with no alternatives or exclusions offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflow_runsList Workflow RunsCRead-only
List workflow runs
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | comma separated if needed. eg: genius_task_runs | |
| page_size | No | ||
| page_number | No | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/workflow_runs). | |
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no pagination behavior, no default/maximum page size, no ordering of results, and no note that the listing is scoped to a single workflow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words with no wasted text, but this is under-specification rather than conciseness — there is no front-loaded scope, no qualifier, and nothing for the agent to act on beyond the tool name itself.
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 an 8-parameter list tool, the description is inadequate even accounting for the existing output schema (which removes the need to explain return values). Pagination semantics and the four date-range filters — the nontrivial parts of the call — are left entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: page_size, page_number, and the four filter_created_at_* parameters have no documentation anywhere. The description contributes zero parameter meaning, so the ambiguous time-filter semantics (format, inclusivity of gt vs gte, timezone) remain unresolved for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when to prefer get_workflow or create_workflow_run, and no prerequisites noted (e.g., that workflow_id is mandatory to scope the listing). Usage is only weakly implied by the verb "list".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflowsList WorkflowsDRead-only
List workflows
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | comma separated if needed. eg: created_at,updated_at | |
| include | No | comma separated if needed. eg: form_field_conditions,alert_field_conditions | |
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds no further behavioral context such as pagination behavior, default sort order, or what data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified rather than concise. It fails to front-load any useful information beyond the tool name, making it inadequate for a tool with 19 parameters.
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?
Although an output schema and annotations exist, the description is incomplete for a list tool with 19 parameters and many sibling tools. It does not clarify filtering, sorting, pagination, or how to distinguish this from list_workflow_runs or get_workflow.
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 19 parameters with only 11% schema description coverage, and the description provides zero parameter semantics. There is no explanation of sorting, filtering, pagination, or include options beyond bare parameter names 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?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor any prerequisites or exclusions. The name implies listing workflows, but the description adds no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflow_tasksList Workflow TasksDRead-only
List workflow tasks
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| page_size | No | ||
| filter_name | No | ||
| filter_slug | No | ||
| page_number | No | ||
| workflow_id | Yes | Required. ID of the workflow (fills `{workflow_id}` in /v1/workflows/{workflow_id}/workflow_tasks). | |
| filter_search | No | ||
| filter_name_eq | No | ||
| filter_name_in | No | ||
| filter_slug_eq | No | ||
| filter_slug_in | No | ||
| filter_name_not_eq | No | ||
| filter_name_not_in | No | ||
| filter_slug_not_eq | No | ||
| filter_slug_not_in | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered. The description adds nothing beyond that — no mention of pagination behavior, filter semantics, or result scope. With annotations carrying the profile, minimal disclosure still leaves a gap for a 15-parameter listing 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?
Brevity here is under-specification, not conciseness. The single four-word phrase is appropriately front-loaded but carries none of the detail a 15-param listing tool requires.
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 15 parameters at 7% schema coverage, an output schema that does not need explanation, and a crowded sibling set, the description is completely inadequate. Nothing an agent needs to call this correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 7% across 15 parameters; only workflow_id is documented in the schema. The description says nothing about the 14 filters, pagination params, or the 'include' selector, so an agent cannot infer their syntax (notably filter_name_in vs filter_name_eq string formats) from either source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus get_workflow_task, list_workflows, or list_workflow_runs. No prerequisites, no exclusions, no routing guidance of any kind.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_alert_routePatch Alert RouteCIdempotent
Updates an alert route. Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert route (fills `{id}` in /v1/alert_routes/{id}). Pass it as `id` -- this tool has no `alert_route_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, and openWorld=true. The description adds a relevant auth/feature-access requirement, but it does not explain partial-update behavior or that nested _destroy fields can remove rules, destinations, or 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 sentences, front-loaded with the tool's action; the access note is relevant. There is no filler, though the brevity reflects missing guidance rather than efficient completeness.
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 complex nested patch endpoint with an output schema and only 50% schema description coverage, the description is too thin: it omits patch-vs-update semantics, partial vs full replacement behavior, and nested deletion rules. Access gating is the only extra context 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?
Schema coverage is 50% and the payload is deeply nested, yet the description says nothing about id, data, attributes, or nested patch semantics. It fails to compensate for the undocumented schema surface.
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?
States the verb 'Updates' and resource 'alert route', so the basic purpose is clear. However, it does not distinguish this PATCH tool from the sibling update_alert_route or explain whether it is a partial update; the only added detail is an access prerequisite.
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?
Gives a feature-access prerequisite and support contact, but no when-to-use guidance, no when-not-to-use guidance, and no comparison to update_alert_route or create/get/list alert route siblings. An agent must infer selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_incidentsSearch IncidentsARead-only
Search incidents with flexible pagination control.
Use page_number=0 to fetch all matching results across multiple pages. Use page_number>0 to fetch a specific page.
max_results (also accepted as limit) caps how many incidents come back
in either mode: across pages when page_number=0, and within the page
otherwise. Left unset, a single page returns page_size incidents and
page_number=0 stops at 5.
Argument caps: page_size <= 20, max_results <= 10. Values outside those bounds are clamped and reported, not rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to filter incidents by title/summary | |
| page_size | No | Number of results per page (max: 20) | |
| max_results | No | Maximum incidents to return. Max: 10; defaults to 5 when fetching all pages, and to page_size when fetching a single page. For larger result sets, paginate with page_number > 0 or use collect_incidents. | |
| page_number | No | Page number to retrieve (use 0 for all pages) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful behavioral details beyond annotations: out-of-bounds values are clamped and reported rather than rejected, max_results is also accepted as limit, and defaults differ between all-pages and single-page modes.
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 purpose and then organized around pagination modes and caps. It is somewhat repetitive with the schema, but every sentence provides operational guidance and there is no filler.
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?
An output schema exists and annotations cover the safety profile, so the description does not need to explain return values. It thoroughly covers pagination and result caps, though it could be more complete by differentiating this tool from sibling incident-search and incident-list 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 description coverage is 100%, so the schema already documents the parameters well. The description still adds value by clarifying the page_number=0 all-pages mode, the max_results cap across pages versus within a page, the limit alias, and clamping behavior.
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 a specific verb and resource: 'Search incidents.' It is clear what the tool does, but it does not distinguish itself from siblings such as list_incidents, collect_incidents, or find_related_incidents.
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 explains how to use page_number=0 versus page_number>0 and how max_results behaves in each mode. However, it gives no guidance on when to choose this tool over list_incidents or collect_incidents, so tool-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_investigationStart InvestigationA
Start an AI SRE investigation on one alert or incident. Then follow it with get_investigation_progress.
| Name | Required | Description | Default |
|---|---|---|---|
| rerun | No | Start a fresh run. Fails with rerun_unavailable while the latest run is still going or rerun is off for the team. | |
| alert_id | No | Alert to investigate. | |
| incident_id | No | Incident to investigate. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, open-world, non-idempotent operation, so the description does not need to restate that. It adds useful workflow context by implying an asynchronous run that should be followed with get_investigation_progress, though it omits failure modes such as rerun_unavailable.
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 short sentences, front-loaded with the main action and followed by the required next step. There is no wasted wording.
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 rich schema coverage, annotations, and an output schema, the description supplies the key operational context: what it starts and which tool to call next. It leaves detailed rerun constraints and failure behavior to the schema, which is acceptable but slightly incomplete for a starting 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?
Schema description coverage is 100%, so the schema already documents alert_id, incident_id, and rerun behavior in detail. The description only implies that one of alert or incident should be chosen, without adding meaning beyond the schema for rerun.
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 a specific verb and resource: starting an AI SRE investigation on one alert or incident. It also names the follow-up sibling get_investigation_progress, making the action distinguishable from read/list investigation 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?
It clearly indicates the trigger context: use it on one alert or incident, then follow with get_investigation_progress. It does not explicitly cover when not to use it versus list_investigations or get_investigation, nor when rerun should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_solutionsSuggest SolutionsARead-only
💡 Get actionable solution recommendations from similar resolved incidents - KEY for incident response.
WHEN TO USE: • AFTER find_related_incidents to get specific resolution steps • When team is stuck on how to resolve the current incident • To speed up incident resolution with proven solutions • For training new responders on resolution patterns
Provide either incident_id OR title/description. Defaults to resolved incidents for solution mining.
Argument caps: max_solutions <= 10. Values outside the bounds are clamped and reported, not rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | No | ||
| max_solutions | No | Maximum number of solution suggestions (max: 10) | |
| status_filter | No | Filter incidents by status (default 'resolved', empty for all, 'investigating', etc.) | resolved |
| incident_title | No | ||
| incident_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious behavior: it defaults to mining resolved incidents, and out-of-range max_solutions values are clamped and reported rather than rejected — useful for predicting call outcomes.
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?
Front-loaded with the core purpose, then a scannable WHEN TO USE list, then argument-cap mechanics. Minor waste in marketing phrasing ('KEY for incident response', 'For training new responders on resolution patterns'), but nothing structurally confusing.
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?
Return values are covered by the output schema and safety by annotations, and the description fills in the call-selection and clamping behavior. It leaves 'similar' undefined and does not say what happens when neither incident_id nor title/description yields matches, a minor gap for a 5-parameter 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?
With only 40% schema description coverage, the description compensates well: it explains the incident_id vs. title/description alternative, states the max_solutions <= 10 cap and clamp behavior, and clarifies the resolved-by-default status behavior. It does not explain status_filter's empty-string-for-all option, which only appears 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?
States a specific verb and resource ('Get actionable solution recommendations from similar resolved incidents') and scopes it to incident response. It is clearly distinguishable from the nearest sibling find_related_incidents, which surfaces related incidents rather than resolution steps.
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 WHEN TO USE block gives four concrete triggering situations and explicitly sequences the tool after find_related_incidents, which is strong contextual guidance. It stops short of stating when NOT to use it (e.g., unresolved incidents with no history), so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alertUpdate AlertDIdempotent
Updates an alert
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert (fills `{id}` in /v1/alerts/{id}). Pass it as `id` -- this tool has no `alert_id` argument. | |
| data | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds nothing on top: it does not mention that the JSON:API `data.id` is ignored in favor of the path id, that `source` is deprecated, or that `actor` attribution is conditional on org settings and API key type — all behaviorally significant facts that live only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words is not conciseness but under-specification — there is nothing to front-load because no content exists. Brevity here costs the agent all routing and payload guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested objects, conditional actor attribution, deprecated fields, and an id-vs-data.id ambiguity, the description provides none of the context needed to call it correctly. An output schema exists, so return values need not be explained, but everything else is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage at the top level and a deeply nested payload, the description should compensate by naming key updatable attributes or the partial-update semantics. It says nothing about `id`, the `data.attributes` envelope, or which fields are mutable, leaving the agent to read the entire nested schema unaided.
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 text 'Updates an alert' only restates the tool name and title, adding no specificity beyond the verb+resource already implied. It does not distinguish it from the many sibling update tools that operate on alert-adjacent resources (update_alert_event, update_alert_group, update_alert_urgency, update_alerts_source), nor does it say what fields of an alert are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance whatsoever on when to use this tool, when not to, or which alternative to pick. An agent cannot tell from the description whether this is for status changes, field corrections, or bulk metadata edits, nor whether a dedicated sibling (e.g. update_alert_event) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alert_eventUpdate Alert EventAIdempotent
Updates a specific alert event. Only alert events with kind 'note' (user-created notes) can be updated. System-generated events are immutable to maintain audit trail integrity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert event (fills `{id}` in /v1/alert_events/{id}). Pass it as `id` -- this tool has no `alert_event_id` argument. | |
| data | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-destructive, idempotent, open-world write. The description adds genuinely new behavioral context beyond that: only note-kind events are mutable and the reason is audit-trail integrity. It does not cover permission requirements or what happens to unspecified attributes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action then the constraint then the rationale. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with an output schema and full annotations, the description supplies the critical eligibility constraint that structured fields cannot express. The remaining gap is payload guidance for the nested `data` object, which is partly covered by schema property descriptions.
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 50% and the description never mentions any parameter by name. The 'note' framing implicitly clarifies that the payload is the note text, but it adds no detail on `id` vs. the nested `data.attributes.details`/`user_id` structure that the schema leaves partially undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Updates a specific alert event') and immediately narrows the scope with the 'kind note' restriction. It is clearly a mutation counterpart to create_alert_event/get_alert_event, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a strong when-not rule: system-generated events are immutable. This prevents a whole class of failed calls. It lacks an explicit routing statement to alternatives (e.g., use create_alert_event for new notes, get_alert_event to inspect), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alert_groupUpdate Alert GroupBIdempotent
Update a specific alert group by id. Note: For enhanced functionality and future compatibility, consider using the advanced alert grouping with conditions field instead of the legacy group_by_alert_title, group_by_alert_urgency, and attributes fields.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert group (fills `{id}` in /v1/alert_groups/{id}). Pass it as `id` -- this tool has no `alert_group_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation, idempotency, open-world scope, and non-destructiveness, so the safety profile is covered. The description adds useful deprecation steering for legacy grouping fields, but omits a key behavioral detail for an update: whether omitted fields are preserved (partial/PATCH semantics) or reset.
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 the core action, then the compatibility note. No wasted text, though the note is somewhat narrative where a shorter pointer to `conditions` would suffice.
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 deeply nested mutation tool with only 50% parameter coverage this description does comparatively little, though the schema's own nested descriptions and the presence of an output schema reduce the burden. The most important missing piece for correct invocation — full-replace versus partial-update semantics — is not addressed.
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 50%, and the nested schema carries rich per-field descriptions, so the baseline is 3. The description adds meaning by flagging `group_by_alert_title`, `group_by_alert_urgency`, and `attributes` as legacy in favor of `conditions`, but says nothing about the required `id`/`data` structure beyond what the schema 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?
States a specific verb and resource ('Update a specific alert group by id'), which cleanly separates it from siblings like create_alert_group, get_alert_group, and list_alert_groups. It does not explicitly name which sibling to prefer, but the verb makes the operation 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?
The description implies usage ('update a specific alert group') and adds a steering note toward `conditions` over the legacy grouping fields, but that guidance is about field choice, not about when to call this tool versus get_alert_group or create_alert_group. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alert_routeUpdate Alert RouteAIdempotent
Update a specific alert route by id. Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.
Asynchronous Rule Creation
For organizations with large numbers of routing rules, Rootly supports asynchronous rule processing to improve performance. When enabled, rule updates happen in the background.
Asynchronous processing is also applied automatically, whether or not it is enabled for your organization, when a request carries a rule graph too large to save within the request timeout. Size is measured in total dependent records — rules plus their condition groups, conditions and destinations — and includes the rules already on the route, not just those in the payload, so a small payload against a large route may still be processed asynchronously.
Important: Whenever rules are processed asynchronously, the rules list in the API response will not be up-to-date immediately after update. You should refetch the alert route, or poll the async rule creation status endpoint with the request_id you supplied, to confirm the rules have landed.
If you experience slow operations when managing alert routes with many rules, contact Rootly customer support to enable asynchronous rule processing for your organization.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert route (fills `{id}` in /v1/alert_routes/{id}). Pass it as `id` -- this tool has no `alert_route_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering read/write, idempotency and open-world reach, the description still adds substantial non-obvious behavior: async rule processing triggered by rule-graph size, the fact that size counts existing route rules not just the payload, and that the response's rules list will be stale after an async update. That is exactly the kind of context annotations cannot convey. It loses a point because it instructs the agent to poll 'with the `request_id` you supplied', yet no such parameter exists in the schema — a misleading operational detail.
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 access note is appropriately front-loaded, but the asynchronous section runs three paragraphs with repetition ('asynchronous rule processing', 'when enabled', 'automatically... when enabled') for a caveat that only applies to organizations with very large rule graphs. The signal is valuable; the word count is not proportionate, and it crowds out sibling differentiation.
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 mutation tool on a complex nested resource, the description covers the two things an agent could not infer — feature-gating and eventual consistency of the rules list — and an output schema exists to explain return values. The only real hole is the missing comparison with `patch_alert_route` and the phantom `request_id` reference.
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?
Top-level schema coverage is 50%, and the description says nothing about `id` or `data` beyond the one-line purpose. In practice the nested schema is extremely well documented per field, so the agent is not left stranded, but the description itself contributes zero parameter meaning — baseline 3.
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?
States a specific verb and resource: 'Update a specific alert route by id.' That is unambiguous. However, the description never distinguishes this tool from the two obvious siblings, `patch_alert_route` (likely a partial update) and `update_alert_routing_rule`, so an agent still has to guess which of the three to call for a given intent.
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?
It does give a real prerequisite ('requires access to Advanced Alert Routing' plus a support-contact path) and post-call guidance (refetch or poll the async status endpoint). But it never says when to use this tool versus `patch_alert_route` or the dedicated rule endpoints, which is the main routing decision an agent faces here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alert_routing_ruleUpdate Alert Routing RuleBIdempotent
Update a specific alert routing rule by id. Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert routing rule (fills `{id}` in /v1/alert_routing_rules/{id}). Pass it as `id` -- this tool has no `alert_routing_rule_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing about what the update does beyond the annotations — no mention of partial vs full replacement, whether omitted attributes are preserved, or effects on live alert evaluation. The advanced-routing caveat is a usage hint, not behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and followed by the caveat. The bolded support-escalation sentence is slightly verbose but does not pad the definition.
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?
An output schema and annotations are present, so return values and safety needn't be explained. However, for a mutation tool with a complex nested payload and only 50% schema description coverage, the description should say whether this is a partial update and what happens to existing conditions/destination when omitted.
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 description only says 'by id', which the schema already documents at length. With schema coverage at 50% and a deep nested `data.attributes` object, the description gives no guidance on partial-update semantics, required attributes, or how conditions/destination interact.
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?
States a specific verb and resource ('Update a specific alert routing rule by id'), which is enough to distinguish it from list_alert_routing_rules, create_alert_routing_rule and get_alert_routing_rule. The added note also points toward update_alert_route as the alternative endpoint, though it does not name the tool directly.
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 note gives an explicit when-not condition: advanced alert routing users should use the Alert Routes endpoint instead. That is real routing guidance, but it dead-ends for non-advanced users ('contact Rootly customer support') instead of stating a positive condition for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alerts_sourceUpdate Alerts SourceCIdempotent
Update a specific alert source by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert source (fills `{id}` in /v1/alert_sources/{id}). Pass it as `id` -- this tool has no `alert_source_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is a non-destructive, idempotent mutation with open-world access. The description adds no further behavioral context—it does not explain what happens during an update, whether it is partial or full, or any 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 a single, front-loaded sentence with no wasted words. However, its extreme brevity borders on under-specification rather than optimal conciseness.
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 nested schema complexity and the presence of an output schema, the description is incomplete—it does not mention what data the 'data' parameter expects or what the update operation returns, leaving key context to be inferred from 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 50%, so the description should compensate, but it only mentions 'by id' without explaining the 'data' parameter or the fields that can be updated. It adds no meaningful semantics beyond what the schema partially 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 states a specific verb ('Update') and resource ('alert source'), making the core action clear. It does not explicitly distinguish this tool from siblings like get_alerts_source or create_alerts_source, but the update purpose is evident.
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, nor does it mention prerequisites or exclusions. An agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alert_urgencyUpdate Alert UrgencyCIdempotent
Update a specific alert urgency by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the alert urgency (fills `{id}` in /v1/alert_urgencies/{id}). Pass it as `id` -- this tool has no `alert_urgency_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description adds nothing about what a partial update does to unspecified attributes, whether omitted fields are preserved, or what the call returns — the only real gap the annotations leave open.
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?
A single short sentence, front-loaded and free of padding, but it is under-specified rather than tight. Brevity here comes at the cost of information rather than from efficient phrasing.
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 mutation tool with a nested JSON:API request body and an output schema, the description omits the elements an agent most needs: which attributes can be changed, the partial-vs-full update semantics, and the fact that `data.id` is accepted but ignored (documented only in the schema). The output schema excuses it from explaining return values, but little else is covered.
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 description contributes no parameter meaning beyond 'by id'. With overall schema coverage at 50% and a nested `data.attributes` payload (name, position, description, retrigger_timeout_minutes), the description should say which attributes are updatable and whether the update is full-replace or partial; it says none of this.
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 a specific verb and resource ('Update a specific alert urgency'), which is clear enough to act on. It offers no differentiation from the sibling CRUD set (get_alert_urgency, create_alert_urgency, list_alert_urgencies), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_alert_urgency or create_alert_urgency, and no mention of prerequisites such as needing an existing urgency id from list_alert_urgencies. 'By id' implies a lookup requirement but nothing more.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_catalogUpdate CatalogCIdempotent
Update a specific catalog by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog (fills `{id}` in /v1/catalogs/{id}). Pass it as `id` -- this tool has no `catalog_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, and open-world behavior, so the description needed to add context such as whether this is a full replacement or a partial merge of attributes, and what happens to attributes omitted from `data`. It supplies none of that and merely restates the name. The valuable warnings (slug deprecated, id-in-body ignored) live in the schema, not here.
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?
A single waste-free sentence, front-loaded with verb and resource. It is efficient but that efficiency comes from omitting information rather than from tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation on a nested JSON:API-style payload with a deprecated field and unique-constrained external_id, and the description covers none of it. An output schema exists so return values need no explanation, but update semantics (merge vs replace, ignored fields) are essential and missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so the description should compensate, but it adds nothing about the two top-level parameters or the updatable attribute set (icon, name, position, description, external_id). The caller must read the nested schema to learn which fields are accepted and that `slug` is deprecated.
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?
States a specific verb (Update) and resource (a specific catalog) plus the identifying key (by id), which distinguishes it from the many update_* siblings by resource name. It does not, however, say anything about what aspects of the catalog are updatable or how it relates to update_catalog_entity / update_catalog_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no prerequisites, and no mention of the create/list siblings that would be alternatives. The only implied instruction is that the caller must already know the catalog id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_catalog_entityUpdate Catalog EntityCIdempotent
Update a specific Catalog Entity by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog entity (fills `{id}` in /v1/catalog_entities/{id}). Pass it as `id` -- this tool has no `catalog_entity_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent, and open-world behavior, so the safety profile is covered. But the description adds nothing about update semantics: it does not say whether this is a partial (PATCH) or full replacement update, what happens to omitted attributes, whether `slug` is silently derived from `name`, or that `data.id` is ignored. For a mutation tool with a nested payload, those are the most decision-relevant facts and they live only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words. Conciseness is fine, but here brevity crosses into under-specification for a mutation endpoint, so it lands at minimum viable rather than strong.
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 takes a nested JSON:API body, has 2 required parameters, and no output-schema burden, yet the description leaves out update semantics, the deprecated `slug` trap, and how the entity is identified. An agent could call it with a well-formed but semantically wrong payload (e.g., expecting full replace, or trying to set a slug) without the description warning it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description is expected to compensate, and it does not — it says nothing about `id` accepting a UUID or slug, or about the `data` envelope. The useful semantics (ignored `slug`, ignored `data.id`, `external_id` uniqueness) exist solely in the schema, so the description adds zero value over the structured fields.
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 names a specific verb and resource ("Update a specific Catalog Entity by id"), which is enough to identify the operation. However, it offers no differentiation from closely related siblings such as update_catalog, update_catalog_entity_property, or update_catalog_property, so the agent must rely on name matching alone. It is clear but thin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of update_catalog or update_catalog_entity_property, and no prerequisites, permissions, or exclusions are mentioned. The only implied usage is "you have an id and want to change fields," which is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_catalog_entity_propertyUpdate Catalog Entity PropertyAIdempotent
Deprecated: This endpoint is deprecated, please use the fields attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.
Update a specific Catalog Entity Property by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog entity property (fills `{id}` in /v1/catalog_entity_properties/{id}). Pass it as `id` -- this tool has no `catalog_entity_property_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotency, non-destructiveness, and mutation semantics, and the description adds the crucial deprecation status. However, it never explains update semantics on the payload — whether omitted attribute keys/values are cleared, merged, or rejected — which matters for a PATCH-style 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?
Two sentences, with the most decision-relevant information (deprecation and replacement path) front-loaded. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, an output schema, and a nested payload, the definition covers the critical deprecation context well. The remaining gap — partial-update behavior of `attributes` — is small but real for a mutation 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?
At 50% schema description coverage, the description only echoes 'by id' and adds no meaning about the `data`/`attributes` structure. It does not clarify whether `key`/`value` must both be supplied, which is the main ambiguity in the nested 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?
States a specific verb and resource ('Update a specific Catalog Entity Property by id'), so an agent knows exactly what mutation occurs. It doesn't explicitly contrast with get_catalog_entity_property or create_catalog_entity_property, but the naming and 'by id' scoping make the distinction obvious.
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?
Explicitly says when NOT to use it ('Deprecated: please use the `fields` attribute on catalog entities or native catalog endpoints... instead') and names the concrete alternatives. This is exactly the kind of routing guidance that prevents an agent from calling a dead endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_catalog_propertyUpdate Catalog PropertyCIdempotent
Update a specific catalog_property by id - returns catalog_properties type
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the catalog property (fills `{id}` in /v1/catalog_properties/{id}). Pass it as `id` -- this tool has no `catalog_property_id` argument. | |
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only that it returns a catalog_properties type — useful given there is no output schema — but says nothing about partial-update semantics, ignored fields, or side effects on items referencing the property.
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?
One short, front-loaded sentence with no filler. It is arguably too terse for a nested-body mutation, but nothing is wasted.
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 mutation tool accepting a nested JSON:API body, the definition omits update semantics, required sub-fields beyond the schema, and the meaning of the returned type. Annotations and the schema do most of the work; the description is too thin to be complete on its own.
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 description repeats the id/path linking already spelled out in the schema and adds nothing about the nested `data` object, which carries the actual update payload. With 50% coverage and a nested attributes object, the description does not compensate for what the schema leaves implicit (e.g. which attributes are actually mutable).
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?
States a specific verb and resource ('Update a specific catalog_property by id') that distinguishes it from get_/create_/list_ siblings by name. It does not explicitly contrast with update_catalog_entity_property or update_catalog, relying on the reader to infer the distinction from the entity 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?
There is no guidance on when to use this rather than create_catalog_property, get_catalog_property, or update_catalog_entity_property, and no mention of prerequisites. The 'by id' phrasing implies an existing resource but gives nothing actionable about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_causeUpdate CauseCIdempotent
Update a specific cause by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the caus (fills `{id}` in /v1/causes/{id}). Pass it as `id` -- this tool has no `caus_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing about update semantics, such as whether omitted attributes are preserved, what happens to deprecated fields like slug, or whether permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, but its brevity reflects under-specification rather than efficient communication. It is front-loaded with the core action but lacks any supporting context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with nested objects, two required parameters, and no description of the data payload shape or update semantics. Although an output schema and annotations exist, the description still leaves too much unexplained for an agent to confidently construct a correct update request.
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 50%, and the description only repeats that an id is required while saying nothing about the data object or its attributes. The schema already documents id extensively, so the description adds no meaningful parameter semantics and does not compensate for the remaining coverage gap.
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 a specific verb ("Update") and resource ("cause") plus the identifier mechanism ("by id"). This is clear enough to distinguish it from get_cause, create_cause, and list_causes, though it provides no detail about what parts of a cause can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_cause, create_cause, or list_causes. The only implied context is that an existing cause is being modified, but no prerequisites, exclusions, or routing cues are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_fieldUpdate Custom FieldAIdempotent
[DEPRECATED] Use form field endpoints instead. Update a specific custom field by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom field (fills `{id}` in /v1/custom_fields/{id}). Pass it as `id` -- this tool has no `custom_field_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds the genuinely useful deprecation context, but says nothing about which attributes are mutable, whether omitted attributes are preserved, or any auth/rate 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?
Two short sentences with the deprecation warning front-loaded ahead of the functional statement. Nothing is wasted and an agent scanning the list will see the critical migration signal first.
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?
An output schema exists and annotations cover the mutability profile, so the description needn't explain returns. However, for a nested-object mutation tool it should say which form-field endpoint replaces it and whether existing custom fields still need updating here; that routing detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the top-level id property is thoroughly documented in the schema itself, including the note that there is no custom_field_id argument. The description only echoes 'by id' and adds no meaning about the nested data/attributes payload, so it neither compensates for the gap nor duplicates 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?
States a specific verb and resource ('Update a specific custom field by id') and leads with a deprecation flag, so an agent knows immediately what the tool does and that it is being retired. It does not differentiate from update_form_field beyond the deprecation pointer, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the preferred alternative ('Use form field endpoints instead'), which is a clear when-not-to-use signal, and it routes directly to siblings like update_form_field/create_form_field. It stops short of stating the one condition under which this tool is still the right call (e.g., legacy custom fields not yet migrated).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_field_optionUpdate Custom Field OptionAIdempotent
[DEPRECATED] Use form field endpoints instead. Update a specific custom field option by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom field option (fills `{id}` in /v1/custom_field_options/{id}). Pass it as `id` -- this tool has no `custom_field_option_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the important deprecation status and the id-based update scope, but does not explain permissions, side effects, or what happens to unspecified attributes. With annotations present, 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 two short clauses with the deprecation warning front-loaded. Every part is useful 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?
For a deprecated mutation tool with an output schema and safety annotations, the description provides the key selection guidance: do not use it, use form field endpoints instead. It could be more complete by naming the exact replacement endpoint, but no critical agent-facing information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only says the option is updated "by id," which the schema already documents in detail. With schema description coverage at 50%, the description should compensate for undocumented nested data fields such as type and default, but it does not.
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 a specific verb and resource: "Update a specific custom field option by id." It also flags deprecation and points toward form field endpoints, which helps distinguish it from active siblings like update_form_field_option. It does not name the exact replacement tool, 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?
It explicitly says "[DEPRECATED] Use form field endpoints instead," giving a clear when-not-to-use condition and an alternative category. It does not name the exact sibling tool or describe any remaining valid legacy use case, but for a deprecated tool the routing guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_formUpdate Custom FormCIdempotent
Update a specific custom form by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the custom form (fills `{id}` in /v1/custom_forms/{id}). Pass it as `id` -- this tool has no `custom_form_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not explain whether the update is partial or full-replacement, what happens to attributes that are omitted, or that the nested 'data' wrapper is a JSON:API envelope — all of which matter for a mutation with a nested payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, which is efficient. But the brevity comes at the cost of substance — 'specific' and 'by id' are doing little work, and the sentence is under-specified rather than genuinely 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?
An output schema exists, so return values need not be explained. But for a mutation tool with a nested JSON:API-style payload, the description should clarify update semantics, which attributes are mutable, and how omissions are handled; none of that is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description supplies zero parameter information — it does not mention the `id` path parameter or the `data.attributes` structure. The schema itself does carry good field-level descriptions (including the deprecated `slug` and the ignored `data.id`), but the description contributes nothing to compensate for the coverage gap or to clarify partial-update 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 states a specific verb and resource ('Update a specific custom form by id'), which is adequate. However, it is essentially a restatement of the title and does nothing to distinguish this tool from close siblings like update_custom_field, update_form_set, or update_form_field, all of which appear 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?
There is no guidance on when to use this tool versus the many adjacent update_* tools, nor any mention of prerequisites (e.g., the form must already exist, permissions needed). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dashboardUpdate DashboardCIdempotent
Update a specific dashboard by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the dashboard (fills `{id}` in /v1/dashboards/{id}). Pass it as `id` -- this tool has no `dashboard_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether omitted attributes are preserved or cleared, whether the update is a merge or replace, or whether the caller needs write permission on the dashboard's owner.
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?
A single front-loaded sentence with no filler, and the identifying key ('by id') appears immediately. Its brevity is efficient but tips into under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool taking a nested JSON:API payload, yet the description never explains merge semantics, required sub-fields, or ownership constraints. An output schema exists so return values need not be described, but the mutation behavior itself remains undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the nested `data.attributes` object is where the real semantics live (partial vs full replacement, null-clearing behavior). The description's 'by id' merely restates the `id` parameter that the schema already documents in far more detail, adding nothing about the payload shape.
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?
States a specific verb and resource ('Update a specific dashboard by id'), so the agent knows exactly what is mutated. It does not distinguish itself from the adjacent siblings create_dashboard, get_dashboard, or update_dashboard_panel, which share the same 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?
There is no guidance on when to use this versus update_dashboard_panel, create_dashboard, or get_dashboard, and no prerequisites (e.g. permissions or that the dashboard must already exist) are mentioned. The agent must infer the selection criteria entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dashboard_panelUpdate Dashboard PanelCIdempotent
Update a specific dashboard panel by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the dashboard panel (fills `{id}` in /v1/dashboard_panels/{id}). Pass it as `id` -- this tool has no `dashboard_panel_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, idempotent, non-destructive, open-world operation, so the safety profile is covered. However, the description adds no behavioral context beyond 'update by id'—it does not clarify partial-vs-full update semantics, what happens to omitted attributes, or any preconditions despite the complex nested payload.
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 front-loaded sentence with no redundant or filler content. Its brevity is appropriate structurally, though it leaves gaps addressed under other dimensions.
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 output schema and annotations carry much of the burden, and the input schema details the required id and data shape. Still, for a mutation tool with a complex nested payload, the description does not explain update semantics or constraints sufficiently to be fully complete on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description mentions just the id parameter, which the schema already documents in detail. It says nothing about the required 'data' object or the semantics of nested attributes such as params, datasets, and position, failing to compensate for the schema coverage gap.
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 names a specific verb and resource: 'Update a specific dashboard panel by id.' This clearly distinguishes it from read/list siblings such as get_dashboard_panel and list_dashboards. It does not explicitly contrast with update_dashboard, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like update_dashboard or get_dashboard_panel. It provides only implied usage from the tool name and a bare statement of operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_environmentUpdate EnvironmentCIdempotent
Update a specific environment by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the environment (fills `{id}` in /v1/environments/{id}). Pass it as `id` -- this tool has no `environment_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond 'by id', such as whether this is a partial or full update, how omitted attributes are treated, whether ignored fields like slug matter, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Its brevity is not the problem; the missing information is assessed under other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex nested mutation with a rich input schema and an output schema, but the description supplies almost no context about update behavior, partial-vs-full replacement, ignored fields, or required JSON:API envelope details. Annotations and schema cover some of this, but not enough for an agent to confidently invoke the tool from the description alone.
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 50%, and the description only mentions the id parameter. It does not explain the data object, its required type and attributes structure, or the many nested updateable fields. The schema already documents id thoroughly, so the description adds no meaningful parameter semantics beyond what is structured.
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 a specific verb and resource: 'Update a specific environment by id.' It is clear enough to distinguish this from get/list/create siblings by operation, though it does not explicitly name those 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?
There is no guidance on when to use this tool versus alternatives such as get_environment, create_environment, or update_environment vs other update tools. The only usage implied is that an existing environment with a known id is being changed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_escalation_levelUpdate Escalation LevelBIdempotent
Update a specific escalation level by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation level (fills `{id}` in /v1/escalation_levels/{id}). Pass it as `id` -- this tool has no `escalation_level_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the annotations: it is a mutation, and annotations already declare idempotent=true, destructiveHint=false, and openWorldHint=true. However, it adds no behavioral context beyond that, such as whether this is a partial or full update, how nested attributes are merged, or what authorization is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Its brevity is a problem for completeness, not for conciseness itself.
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 complex mutation with nested objects and many configurable escalation-level attributes, the description is too sparse. The output schema and annotations help, but the description does not explain update semantics, required data shape, or how the nested escalation-level configuration is affected.
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 description only says the update is 'by id', which the schema already states in detail. It does not explain the required `data` envelope or clarify semantics for nested attributes such as notification targets, paging strategy, or escalation policy paths.
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 a specific verb and resource: update an escalation level, keyed by id. It is clearly distinct from get/list/create escalation level and from update escalation policy/path, though it does not explicitly name those 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?
It gives no guidance on when to use this tool versus get/list/create escalation level tools, nor any prerequisites or exclusions. The phrase 'by id' implies the id is required, but that is already covered by the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_escalation_pathUpdate Escalation PathCIdempotent
Update a specific escalation path by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation path (fills `{id}` in /v1/escalation_paths/{id}). Pass it as `id` -- this tool has no `escalation_path_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not mention that rules/time_restrictions are replace-or-omit semantics, that non-default paths must retain a condition or return 422, or that the default path has restricted fields — all of which live only deep in schema property text.
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?
A single short sentence with the resource and addressing key front-loaded; there is no filler. It is arguably under-specified rather than bloated, which costs it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool over a very large nested payload, and an output schema exists so return values need no explanation. However, the description omits the high-stakes operational context an agent needs before calling it — 422 validation rules, default-path restrictions, and fields silently dropped when not enabled for the team — leaving the agent to discover these only by reading deeply nested schema text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only two top-level parameters exist and schema description coverage is 50% (the `data` wrapper has no description), so the description needed to compensate and does not — it merely restates that `id` identifies the path. Practically all useful parameter meaning (including that the nested `data.id` is ignored) comes from the schema, not the description.
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 names a specific verb (Update) and resource (escalation path) and states the addressing key (by id), which distinguishes it from get_escalation_path, create_escalation_path and list_escalation_paths. It does not name any sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this instead of create_escalation_path or update_escalation_level_paths, no prerequisites such as the need to fetch the current path first, and no exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_escalation_policyUpdate Escalation PolicyCIdempotent
Update a specific escalation policy by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the escalation policy (fills `{id}` in /v1/escalation_policies/{id}). Pass it as `id` -- this tool has no `escalation_policy_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether the update is partial or replacing, whether omitted attributes are cleared, or that the nested data.id is ignored — all relevant for a 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?
A single front-loaded sentence with zero filler; the verb and scope arrive first. It is efficient but borders on under-specification for a nested mutation payload.
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 mutation tool with a required nested attributes object and output schema present, the description omits the update semantics (partial vs full), how arrays like group_ids/service_ids are treated, and any caveats around business_hours time zones and end/start times. Too thin given the payload complexity.
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?
"by id" restates what the schema already says about the id parameter, including its note about the missing escalation_policy_id argument. At 50% schema description coverage on a deeply nested data object, the description should clarify the attributes payload (e.g. which fields can be updated, how business_hours behaves), but it says nothing.
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?
Specific verb ("update") and resource ("escalation policy") with the key scoping detail "by id". It clearly separates the tool from create_escalation_policy and list_escalation_policies, though it does not distinguish it from near-siblings like update_escalation_level or update_escalation_path beyond the 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?
There is no when-to-use guidance, no mention of prerequisites (the policy must already exist), and no reference to alternatives such as get_escalation_policy for reading or create_escalation_policy for new policies. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_fieldUpdate Form FieldCIdempotent
Update a specific form_field by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field (fills `{id}` in /v1/form_fields/{id}). Pass it as `id` -- this tool has no `form_field_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds nothing beyond that: it does not say whether this is a partial or full-replacement update (the schema's additionalProperties:false hints at replacement, but that is left implicit), nor what permission is needed or what happens to omitted attributes.
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?
One short sentence, front-loaded and free of padding, so it is not verbose. But it is under-specified rather than concise — the brevity costs information an agent needs for a nested-object mutation.
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 mutation tool taking a nested JSON:API payload with a large enum surface and non-obvious rules (problem-kind restrictions, ignored id/slug fields, resource_type change constraints), the description should mention update semantics and that the full attributes object is required. The presence of an output schema removes the need to explain returns, but the behavioral gaps remain.
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 description offers no parameter detail whatsoever, but the nested schema is unusually rich — attribute-level descriptions cover slugs being ignored, the `shown`/`required` enumerations, resource_type constraints, and problem-field rules. At roughly 50% top-level coverage with heavy nested documentation, the schema carries the load and 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?
States a specific verb and resource ('Update a specific form_field by id'), which clearly distinguishes it from get_form_field, create_form_field, and list_form_fields among the siblings. It stops short of saying what an update affects or how it differs from related tools like update_form_field_placement, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_form_field, update_form_field_placement, or update_form_field_option. No prerequisites, no mention that problem fields have restrictions, and no exclusions. The agent must infer everything from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_field_optionUpdate Form Field OptionCIdempotent
Update a specific form_field_option by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field option (fills `{id}` in /v1/form_field_options/{id}). Pass it as `id` -- this tool has no `form_field_option_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered externally. The description adds nothing beyond that: it doesn't say whether omitted attributes are preserved or cleared (merge vs replace), whether 'type' must always be supplied, or how the nested `data` envelope is handled, all of which matter for a mutation with a nested object payload.
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?
One front-loaded sentence with no filler, which is structurally clean. However, its brevity is under-specification rather than economy: the single clause is the entire definition for a nested-object mutation 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?
An output schema exists, so return values needn't be described, but the tool takes a nested `data` object with required `type` and `attributes`, and the description says nothing about how that payload behaves. For a mutation of this shape, the definition leaves the agent guessing about partial updates and required envelope fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description is expected to compensate, and it does not — it mentions no parameters at all. The schema itself documents `id` well (including the warning not to use `form_field_option_id`) and partially documents `attributes`, but the description contributes zero meaning on top of 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?
States a specific verb ('Update') plus the exact resource ('form_field_option') and the addressing key ('by id'), so the agent knows this mutates one existing option. It does not name or distinguish itself from near siblings such as create_form_field_option, get_form_field_option, or update_custom_field_option, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus create_form_field_option or get_form_field_option, and no prerequisites or exclusions. The agent must infer usage purely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_field_placementUpdate Form Field PlacementCIdempotent
Update a specific form_field_placement by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field placement (fills `{id}` in /v1/form_field_placements/{id}). Pass it as `id` -- this tool has no `form_field_placement_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is partly covered. The description adds no behavioral context of its own, such as partial-update semantics, validation failures (e.g. the 422 on form_set_id resource_type mismatch), or whether omitted attributes are preserved.
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?
A single, front-loaded sentence with no filler, but the brevity comes from under-specification rather than efficiency. Nothing is wasted, yet little is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, which lowers the burden. Still, for a mutation tool with eight optional nested attributes and documented validation constraints, a one-line description leaves the agent without the update semantics or scope needed to call it confidently.
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 50%, and the description names only the id, adding nothing about the 'data.attributes' payload. The nested attributes (position, required, form_set_id, operators) are documented in the schema, but the description offers no overview of what can be changed, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('form_field_placement') plus a scoping cue ('by id'), which is slightly more than the title restatement. However, it does nothing to separate it from near-identical siblings like update_form_field, update_form_field_placement_condition, or update_form_field_option, leaving the agent to infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as update_form_field or update_form_field_placement_condition, and no prerequisites or constraints. The agent must derive selection logic entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_field_placement_conditionUpdate Form Field Placement ConditionCIdempotent
Update a specific form_field_placement_condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form field placement condition (fills `{id}` in /v1/form_field_placement_conditions/{id}). Pass it as `id` -- this tool has no `form_field_placement_condition_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so safety and repeat-call behavior are covered structurally. The description adds nothing beyond that — it does not say whether this is a partial or full replacement update, what happens to attributes omitted from the `attributes` object, or any permission requirements. For a mutation with a nested free-form data payload, this is a notable gap.
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?
A single front-loaded sentence with no filler, so it is concise. However, it is under-specified rather than economical — the brevity comes at the cost of any behavioral or usage detail an agent would need.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. But for a nested-object mutation tool, the description omits update semantics (partial vs full), which nested fields are required versus optional at the API level, and how it relates to the sibling get/update placement tools — leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description only echoes that the record is targeted 'by id', which the schema already states in detail. It says nothing about the `data` object or its nested `attributes` (values, position, comparison, conditioned, form_field_id), so it does not compensate for the coverage gap at the top level.
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?
States a specific verb (Update) and resource (form_field_placement_condition) with the identifying key (by id), so an agent knows exactly what it mutates. It does not distinguish itself from siblings like get_form_field_placement_condition or update_form_field_placement, which is the only reason it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use context, no prerequisites, and no mention of alternatives such as update_form_field_placement or the corresponding get tool. The agent is left to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_setUpdate Form SetCIdempotent
Update a specific form_set by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form set (fills `{id}` in /v1/form_sets/{id}). Pass it as `id` -- this tool has no `form_set_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond them: it does not say whether this is a full replacement of the forms array or a merge, nor that slug/resource_type submissions are silently ignored — all of which live only in the schema and matter for a mutation with nested objects.
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?
One short clause with no waste, so it is certainly concise and front-loaded. But for a mutation with a nested object payload it reads as under-specification rather than economy — a single sentence that carries almost no decision-relevant 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?
An output schema exists, so return values need not be explained. For a write operation with a nested `data.attributes` payload and silently-ignored fields, the description leaves key semantics (replace vs. append for `forms`, immutability of resource_type) to the schema, making it thin relative to the tool's complexity.
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 50%, but the individual property descriptions are unusually rich (path id naming caveat, ignored JSON:API id, deprecated slug, enumerated built-in form slugs). The description only echoes 'by id', adding nothing, but the schema is doing enough work that baseline 3 is warranted.
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?
States a specific verb plus resource ('Update a specific form_set by id'), which is clearly distinct from create_form_set / get_form_set. However it offers no differentiation from the related sibling update_form_set_condition, and does not say what parts of the set are updatable (name vs. forms 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?
No guidance on when to use this tool versus create_form_set, get_form_set, or update_form_set_condition, and no prerequisites (e.g., that the caller must know the existing resource_type and forms before writing). Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_set_conditionUpdate Form Set ConditionCIdempotent
Update a specific form_set_condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the form set condition (fills `{id}` in /v1/form_set_conditions/{id}). Pass it as `id` -- this tool has no `form_set_condition_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, idempotent, non-destructive operation with open-world behavior. The description adds no further behavioral context such as partial-update semantics, required permissions, or what happens to omitted attributes.
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 front-loaded sentence with no filler or redundancy. It is appropriately sized for what it attempts to convey, even though other dimensions show it is under-informative.
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?
An output schema exists and annotations cover the safety profile, so the description does not need to explain return values or basic mutability. However, for a nested mutation tool with only 50% schema description coverage, the terse description leaves the data payload and practical update behavior underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description should compensate for the undocumented parts of the nested data object. Instead it only restates that the resource is identified by id and says nothing about the required data payload or its attributes.
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 uses a specific verb and resource: update a form_set_condition identified by id. It is clear what the tool does, but it does not distinguish it from nearby siblings such as get_form_set_condition, update_form_set, or update_form_field_placement_condition.
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?
It says only to update by id, with no guidance on when to use this instead of creating, reading, or updating a related form-set resource. There are no prerequisites, exclusions, or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_functionalityUpdate FunctionalityCIdempotent
Update a specific functionality by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the functionality (fills `{id}` in /v1/functionalities/{id}). Pass it as `id` -- this tool has no `functionality_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered, but the description adds no behavior of its own: nothing about partial-update semantics (the schema's 'empty array removes all; omitting or null leaves unchanged' rule is buried in a parameter, not stated up front), no permission or cascade notes. For a 25+ field mutation it discloses essentially nothing beyond 'updates'.
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?
Six words, front-loaded and free of padding, so nothing is wasted — but it is concise to the point of under-specification for a complex mutation tool. Brevity here buys no extra clarity over the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema is rich, so return values and field-level semantics need not be repeated. What is missing is any framing an agent needs before calling it: which attributes are updatable in practice, whether the update is a full replace or a patch, and any preconditions. Given the mutation's breadth and the openWorld hint, the definition is thin.
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 50%, but the nested attribute object is thoroughly documented (deprecated slug ignored, id accepted but ignored, list-vs-null semantics for owner arrays). The description contributes only 'by id', which the schema's id field already explains in more detail. Baseline 3 for a schema that does the heavy lifting.
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?
States a specific verb and resource ('Update a specific functionality') plus the lookup key ('by id'), which separates it cleanly from get_functionality, create_functionality and list_functionalities. It stops short of distinguishing itself from the broader family of ~100 update_* tools beyond the resource noun, but the noun does the work here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no conditions that select this over get_functionality or update_catalog_entity, and no prerequisites (permissions, whether the functionality must exist). The only implicit signal is that it is a mutation rather than a read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_heartbeatUpdate HeartbeatCIdempotent
Update a specific heartbeat by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the heartbeat (fills `{id}` in /v1/heartbeats/{id}). Pass it as `id` -- this tool has no `heartbeat_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, idempotent, openWorld, and non-destructive behavior, so the bar is lower. The description adds no behavioral context beyond restating that it updates by id: it does not say whether this is a partial or full update, what happens to omitted attributes, or whether the operation returns the updated resource.
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, front-loaded sentence with no filler. It is appropriately sized for a concise statement, though its brevity contributes to the missing detail elsewhere.
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 mutation tool with a nested input schema, an output schema, and multiple sibling heartbeat tools, the description is too thin. It does not explain update semantics, required payload structure, or how this fits alongside get_heartbeat and create_heartbeat.
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 only 50% description coverage and a nested 'data' object, so the description should compensate by clarifying parameter meaning. Instead it only says the heartbeat is identified 'by id' and gives no detail on the 'data' envelope, required 'type'/'attributes' structure, or how omitted fields behave.
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 a specific verb ('Update') and resource ('heartbeat') scoped 'by id', so an agent can tell it is a mutation operation targeting one heartbeat. It does not explicitly differentiate itself from sibling tools such as get_heartbeat or create_heartbeat, but the verb does most of the work.
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 get_heartbeat, list_heartbeats, or create_heartbeat. It also omits prerequisites such as whether the heartbeat must already exist or which fields are updatable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incidentUpdate IncidentAIdempotent
Update native incident fields via PUT /v1/incidents/{id}.
Only the arguments you provide are sent, so unspecified fields —
including the lifecycle status — are left untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Updated incident title | |
| status | No | Incident status (e.g. started, detected, acknowledged, mitigated, resolved, cancelled). Only set this when you intend to change the lifecycle status. | |
| summary | No | Updated incident summary | |
| team_ids | No | Comma-separated team IDs to set on the incident | |
| started_at | No | When the incident started (ISO 8601 timestamp) | |
| detected_at | No | When the incident was detected (ISO 8601 timestamp) | |
| incident_id | Yes | Incident reference to update: UUID, bare number like 4460, #4460, or INC-4460 | |
| resolved_at | No | When the incident was resolved (ISO 8601 timestamp) | |
| service_ids | No | Comma-separated service IDs to set on the incident | |
| severity_id | No | Severity ID to set on the incident | |
| mitigated_at | No | When the incident was mitigated (ISO 8601 timestamp) | |
| acknowledged_at | No | When the incident was acknowledged (ISO 8601 timestamp) | |
| environment_ids | No | Comma-separated environment IDs to set on the incident | |
| functionality_ids | No | Comma-separated functionality IDs to set on the incident | |
| incident_type_ids | No | Comma-separated incident type IDs to set on the incident | |
| mitigation_message | No | Native mitigation message (how the incident was mitigated) | |
| resolution_message | No | Native resolution message (how the incident was resolved) | |
| retrospective_progress_status | No | Unsupported by the public API; supplying this field returns a validation error without updating the incident |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important partial-update behavior: only provided arguments are sent, so unspecified fields remain untouched. It specifically highlights that lifecycle status is left untouched unless supplied, which is valuable for avoiding accidental status changes.
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 tight sentences with no wasted text. The purpose and partial-update constraint are front-loaded, making it easy to scan before consulting the 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?
The description is complete for a rich 18-parameter update tool whose schema documents every parameter and whose annotations cover idempotency and destructive behavior. It does not need to explain return values because an output schema exists, though it could say more about when to choose this tool over incident sub-resource update 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%, so the baseline is 3. The description adds meaningful semantics by explaining that all optional fields are partial-update fields and that status must be explicitly set to change the lifecycle state.
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 a specific verb and resource: update native incident fields via PUT /v1/incidents/{id}. It also distinguishes native incident fields from sibling sub-resource tools by focusing on the incident itself, though it does not name alternatives such as update_incident_sub_status or update_incident_custom_field_selection.
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 when to use it by saying it updates native incident fields and only sends supplied arguments. However, it does not explicitly state when to use this tool versus related siblings like create_incident, get_incident, or the various incident sub-resource update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_action_itemUpdate Incident Action ItemCIdempotent
Update a specific incident action item by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the action item (fills `{id}` in /v1/action_items/{id}). Pass it as `id` -- this tool has no `action_item_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, and openWorld=true, so the safety profile is covered. The description adds nothing beyond that — notably it never states the partial-update contract (which attributes are omitted vs. explicitly nulled), whether omitted fields are preserved, or what failure looks like for an invalid id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste, but it is under-specified rather than concise — the brevity costs information an agent needs for a mutation with a nested payload.
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 write tool with a deeply nested JSON:API body and no output-schema explanation needed, the description omits update semantics, required envelope structure, and the org-level custom field caveat. An agent must read the entire schema to call this 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 description coverage is reported at 50%, and the description contributes zero parameter detail beyond 'by id', which merely echoes the schema. The heavy lifting (JSON:API envelope, ignored inner id, form_field_selections gating) is all in the schema, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a specific incident action item by id'), which clearly separates it from create_incident_action_item and the list/get siblings. It stops short of explicitly contrasting with siblings such as list_incident_action_items or update_incident_custom_field_selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus siblings, no mention of prerequisites (existing id, org custom-field enablement), and no note about which fields must accompany an update. Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_custom_field_selectionUpdate Incident Custom Field SelectionAIdempotent
[DEPRECATED] Use form field endpoints instead. Update a specific incident custom field selection by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident custom field selection (fills `{id}` in /v1/incident_custom_field_selections/{id}). Pass it as `id` -- this tool has no `incident_custom_field_selection_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (idempotent, non-destructive, open-world), so the lower bar applies. The description adds valuable deprecation context but says nothing about permissions, what a partial update does to unspecified fields, or the response, leaving gaps beyond the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, and the deprecation warning is front-loaded so an agent sees it before anything else.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deprecated mutation tool with a nested payload and an output schema, the description covers the critical routing information (deprecated, use form fields) but omits payload semantics and update behavior. Adequate to steer an agent away, thin if it must actually be invoked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description adds nothing beyond 'by id' — it never explains the nested `data.attributes` payload (`value` vs `selected_option_ids`) or that the body `id` is ignored. Since coverage is below the 80% baseline, the description should compensate and does not.
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 names a specific verb and resource ('Update a specific incident custom field selection by id'), which is clearly distinguishable from the sibling update_incident_form_field_selection. Its deprecation banner further distinguishes it, though the phrase is terse.
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?
It explicitly warns '[DEPRECATED] Use form field endpoints instead,' giving a clear when-not-to-use signal and pointing to the alternative family. It doesn't explain the legacy scenario where an agent might still need this tool, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_form_field_selectionUpdate Incident Form Field SelectionCIdempotent
Update a specific incident form field selection by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident form field selection (fills `{id}` in /v1/incident_form_field_selections/{id}). Pass it as `id` -- this tool has no `incident_form_field_selection_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description contributes nothing beyond that — it does not say whether the update merges with or replaces existing selections, what happens to fields omitted from `data`, or that the `id` inside `data` is ignored.
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?
A single short sentence with no padding, so nothing is wasted — but the brevity comes from under-specification rather than disciplined editing. There is no front-loaded guidance about the payload shape that the reader will need immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool taking a deeply nested `attributes` object with ten mutually exclusive selection fields; an output schema exists so return values needn't be explained, but the description gives no help on which selection fields map to which field kinds or on partial-update behavior. For a nested-payload write tool this leaves the agent materially under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: `id` is well documented while the `data` wrapper has no description at the top level. The description's "by id" merely restates the schema's own id documentation and says nothing about the nested `attributes` payload, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update a specific incident form field selection") and its identifying key ("by id"), which is unambiguous about what is being mutated. It does not distinguish itself from the many sibling tools that also mutate form-related resources (update_form_field, update_incident_custom_field_selection, update_form_field_option), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_incident_form_field_selection / list_incident_form_field_selections / update_incident_custom_field_selection, and no stated preconditions. The agent must infer from the name alone that this is the write counterpart to the getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_retrospective_stepUpdate Incident Retrospective StepCIdempotent
Update a specific incident retrospective step by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident retrospective step (fills `{id}` in /v1/incident_retrospective_steps/{id}). Pass it as `id` -- this tool has no `incident_retrospective_step_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, covering the safety and repeat-call profile, and the description adds nothing beyond that. It omits what a partial update does to unspecified attributes, whether auth scopes are required, and how the JSON:API payload is treated, so no extra behavioral context is delivered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is structurally clean. However, for a mutation tool with a nested required payload it is arguably too terse to earn its place as the only prose an agent gets.
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?
An output schema exists, so return values need not be explained, but the tool takes a nested required JSON:API body with six updatable attributes and the description says nothing about that shape or about partial-update semantics. Combined with the sparse 50% schema coverage, an agent is left to infer how to construct the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, largely because the container fields (`data`, `type`, `attributes`) carry no descriptions, so the description is expected to compensate and does not. It never mentions the required nested `data.attributes` payload or the enum-valued `status` field, adding zero 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 states a specific verb and resource ('Update a specific incident retrospective step') plus the identifier basis ('by id'), so the operation is unambiguous. It does not distinguish this from close siblings such as update_retrospective_step or update_incident_action_item, which share almost identical naming and would confuse an agent at selection 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?
There is no guidance on when to use this tool versus the read-only get_incident_retrospective_step or the sibling update_retrospective_step, and no prerequisites or exclusion conditions are given. The mutation intent is only implied by the verb 'Update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_sub_statusUpdate Incident Sub StatusCIdempotent
Update a specific incident_sub_status by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident sub status (fills `{id}` in /v1/incident_sub_statuses/{id}). Pass it as `id` -- this tool has no `incident_sub_status_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so safety is covered without the description. However the description adds nothing beyond 'by id' — it does not disclose that only assigned_at is meaningfully mutable, nor that resources are addressed via path rather than payload id, which the schema calls out as a trap.
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?
One short front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of substance rather than from distilling it.
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 nested-object mutation tool this is thin: it omits the tool's actual scope (assigned_at timestamp only), the path-vs-body id convention, and any pointer to update_incident for real sub-status reassignment. An output schema exists, so return values need not be explained, but the operational caveats an agent needs are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description adds no parameter meaning at all — the sole clue 'by id' repeats what the schema already says. The important semantic (that the nested data.id is ignored and data.attributes.sub_status_id should not be used for reassignment) lives entirely 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?
It names a verb and resource ('Update a ... incident_sub_status by id'), but it essentially restates the name and title without saying what about the sub-status can actually be changed. It also fails to distinguish itself from nearby siblings like update_incident or update_sub_status, which an agent will confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. The most critical routing fact — that to change an incident's sub-status you must PATCH /incidents/:id and this tool only moves the assigned_at timestamp — is buried in a nested schema property rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incident_typeUpdate Incident TypeCIdempotent
Update a specific incident_type by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the incident type (fills `{id}` in /v1/incident_types/{id}). Pass it as `id` -- this tool has no `incident_type_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing about update semantics—whether it is a partial or full replacement, what happens to omitted attributes, or how derived fields like slug behave—which matters for a nested-attribute 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?
A single front-loaded sentence with no filler. It is efficient, though its brevity leaves useful update context unstated rather than being an issue of verbosity.
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 mutation tool with a nested data object, many optional attributes, and partial-update ambiguity, the description is too thin. Output schema and annotations exist, but the definition still leaves the agent without guidance on what the call changes and how omitted fields are treated.
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 50%, and the schema itself is rich: the id field explains path substitution, and most attribute fields carry descriptions. The description only repeats “by id” and adds no meaning beyond the schema, so the 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?
States a specific verb (Update) and resource (incident_type) and clarifies the identifier is by id, which distinguishes it from get/list/create siblings. However, it does not say which fields are updatable or add any sibling differentiation beyond the 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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_incident_type or create_incident_type. The agent must infer that this is the mutation path for an existing incident type from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_live_call_routerUpdate Live Call RouterCIdempotent
Update a specific Live Call Router by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the live call router (fills `{id}` in /v1/live_call_routers/{id}). Pass it as `id` -- this tool has no `live_call_router_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond the name, such as whether the update is partial or full, what permissions are required, or what side effects occur.
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 front-loaded sentence with no wasted clauses. It is concise and readable, though "specific" is slightly redundant and the sentence is thinner than ideal for a complex update 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?
Although an output schema and annotations exist, the description is not complete enough for a nested update tool. It omits whether omitted attributes remain unchanged, how the data wrapper works, and any update-specific behavioral constraints, leaving the agent to infer these from the schema alone.
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 description only repeats the id/path concept, which the schema already documents in detail. With schema description coverage at 50%, the top-level required data object is not explained, and the description does not compensate by clarifying its wrapper structure or update 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 states a specific verb and resource: "Update a specific Live Call Router by id." This clearly separates it from get/list/create siblings by the action verb, though it does not explicitly name alternatives or describe which attributes are mutable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternatives. It only implies usage through "Update... by id" and never explains when an agent should choose this over get_live_call_router, list_live_call_routers, or create_live_call_router.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_on_call_roleUpdate On Call RoleCIdempotent
Update a specific On-Call Role by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the on call role (fills `{id}` in /v1/on_call_roles/{id}). Pass it as `id` -- this tool has no `on_call_role_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the description's job is to add context such as partial-vs-full update semantics or permission requirements — it adds none. Notably it omits that 'slug' is ignored/derived and that only user/custom system roles are editable, which live only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is structurally sound. But it is terse to the point of under-specification for a mutation tool with a deeply nested payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a nested JSON:API payload, dozens of permission fields, and no annotation coverage of update semantics, the description is far too thin. An output schema exists so return values needn't be explained, but the mutability rules and payload conventions are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the many permission arrays carry no description at all. The description contributes nothing about the 'data' envelope, the ignored 'data.id', or the deprecated 'slug', so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('On-Call Role') plus the identifying key ('by id'), so the agent knows exactly what operation is performed. It does not, however, distinguish this from siblings such as create_on_call_role or get_on_call_role, leaving the routing inference to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_on_call_role (read) or create_on_call_role (create), nor any prerequisites such as which roles are editable. The only usage signal is the implicit 'by id', which the schema already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_on_call_shadowUpdate On Call ShadowCIdempotent
Update a specific on call shadow configuration by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the on call shadow (fills `{id}` in /v1/on_call_shadows/{id}). Pass it as `id` -- this tool has no `on_call_shadow_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether this is a partial or full replacement of attributes, what happens to omitted fields, or that data.type must be "on_call_shadows" while data.id is ignored. For a mutation with a nested payload, that silence is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, so nothing needs trimming. However, it is under-specified rather than concise: the same length budget could have carried the mutation semantics and field scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and annotations cover the safety profile. But for a nested-payload update tool the description should at least convey that the payload is JSON:API-shaped and which attributes (starts_at, ends_at, schedule_id, shadow_user_id, shadowable_id/type) can be changed; none of that appears.
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 sits at 50% with a nested `data.attributes` object, and the description contributes nothing beyond the phrase "by id," which the schema's own id description already explains in more detail (including that there is no `on_call_shadow_id` alias). No indication of what `data` means semantically or that unknown attributes are rejected (additionalProperties: false).
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?
States a specific verb and resource ("Update a specific on call shadow configuration by id"), so the agent knows this is a mutation targeting one existing shadow resource. It does not distinguish itself from siblings like get_on_call_shadow, list_on_call_shadows, or create_on_call_shadow, and says nothing about which fields are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_on_call_shadow or list_on_call_shadows, and no mention of prerequisites (e.g. needing an existing shadow id). "By id" implies an id is required, but the schema already says that via the required array.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_override_shiftUpdate Override ShiftCIdempotent
Update a specific override shift by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the override shift (fills `{id}` in /v1/override_shifts/{id}). Pass it as `id` -- this tool has no `override_shift_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive, idempotent write (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds nothing beyond 'by id' – it does not say that the only mutable field is the assigned user, whether the change is immediate, or whether it affects existing on-call coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but its brevity comes from under-specification rather than disciplined editing.
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?
Even though an output schema and annotations exist, the description omits the central semantics of this mutation: what is being updated (the override shift's user assignment) and any consequence for coverage. For a nested-payload write tool, that is a material gap.
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 50% and the description contributes no parameter meaning at all. It never mentions that the payload's `data.attributes.user_id` is the field actually being changed (i.e., reassigning the override shift to another user), which is the one fact an agent needs and which the nested schema only hints at with 'Override shift user'.
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 names a specific verb and resource ('Update a specific override shift'), which is more than a tautology. However, it offers no differentiation from the siblings create_override_shift, get_override_shift, or list_override_shifts beyond the tool name itself, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_override_shift or create_override_shift, no prerequisites, and no mention of when an update is appropriate. Usage must be entirely inferred from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_playbookUpdate PlaybookCIdempotent
Update a specific playbook by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the playbook (fills `{id}` in /v1/playbooks/{id}). Pass it as `id` -- this tool has no `playbook_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond 'by id' — it does not clarify partial vs. full updates, required attribute behavior, or mutation 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 a single front-loaded sentence with no waste. It is concise, though its brevity contributes to missing update semantics rather than being a structural flaw.
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 mutation tool with a nested object payload and only 50% schema description coverage, the description is too thin. It should at least clarify whether omitted attributes are preserved and whether this replaces or patches the playbook.
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 50%, with the nested 'data' object carrying most semantics through its own property descriptions. The description only repeats that the playbook is identified by id and does not explain the required 'data' payload or update 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 states a specific verb and resource: update a playbook by id. It clearly distinguishes this from create_playbook, get_playbook, and list_playbooks via the verb, though it does not explicitly mention nearby update siblings such as update_playbook_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Calling it 'specific playbook by id' is minimal context but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_playbook_taskUpdate Playbook TaskCIdempotent
Update a specific playbook task by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the playbook task (fills `{id}` in /v1/playbook_tasks/{id}). Pass it as `id` -- this tool has no `playbook_task_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the description adds nothing on the safety or idempotency profile. It is silent on the operationally important question of whether this is a partial (PATCH) or full (PUT) update, and whether omitted attributes are cleared or preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with verb and resource, with zero padding. It is efficient, though its brevity is part of why the other dimensions are thin.
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?
An output schema exists, so return values need not be described, but for a nested-object mutation tool the description omits partial-update semantics, which attributes are mutable, and how the path `id` relates to the ignored `data.id`. That is a meaningful gap for an agent constructing the payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description contributes nothing about the `data` JSON:API envelope, the required `type` discriminator, or the `attributes` object that carries the actual fields to change. The nested `attributes` descriptions in the schema are tautological ('The task of the task'), so the description needed to compensate and does not.
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?
States a specific verb and resource ('Update a specific playbook task by id'), which is clearly distinct from siblings like update_playbook or update_workflow_task. It does not explicitly name those alternatives, but the resource noun alone is 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?
There is no guidance on when to use this versus update_playbook (the parent resource) or create_playbook, and no prerequisites or preconditions stated. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pulseUpdate PulseCIdempotent
Update a specific pulse by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the pulse (fills `{id}` in /v1/pulses/{id}). Pass it as `id` -- this tool has no `pulse_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=true, and openWorld=true, so the safety profile is covered. The description adds nothing beyond that: it does not explain what happens to attributes omitted from `data`, whether the update is partial or full, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler, so nothing is wasted. However, it is undersized for a mutation tool with a deeply nested request body, so brevity here reflects under-specification rather than discipline.
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 write tool with a nested object parameter and multiple editable attributes (summary, labels, refs, service_ids, environment_ids, timestamps), the description omits update semantics, required permissions, and any hint about the returned resource. Even with an output schema present, the mutation behavior itself is left entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% and the nested `data.attributes` payload is complex. The description only echoes the `id` path parameter (already fully documented in the schema) and says nothing about the shape or semantics of `data` — e.g. which attributes are optional, whether null clears a field, or that `data.id` is ignored.
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?
"Update a specific pulse by id" gives a verb and a resource, but it is essentially a restatement of the name/title with "by id" appended. It does not distinguish this tool from siblings such as create_pulse, get_pulse, list_pulses, or a hypothetical patch_pulse, nor does it say what aspect of the pulse is updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g. the pulse must exist, required permissions), and no mention of whether this is a full replace or partial update. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_retrospective_processUpdate Retrospective ProcessCIdempotent
Updates a specific retrospective process by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective process (fills `{id}` in /v1/retrospective_processes/{id}). Pass it as `id` -- this tool has no `retrospective_process_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that — notably it does not say whether `attributes` is a partial patch or a full replace, nor how the `retrospective_process_matching_criteria` union is treated on update.
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?
One short, front-loaded sentence with no filler, so it is concise. The brevity is under-specification rather than efficiency, though — nothing here earns its place beyond 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?
This is a mutation tool with a nested request body and an output schema, and the description does not cover the update semantics an agent needs: partial vs full replacement, how matching criteria are replaced, or permission requirements. The existence of an output schema excuses it from explaining return values, but little else is filled in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description's sole parameter contribution is "by id", which the schema already documents in more detail. The nested `data.attributes` object and the anyOf matching-criteria variants (severity_ids vs group_ids vs incident_type_ids) are the semantically risky part and receive no explanation in the description.
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 gives a verb ("Updates") and a resource ("retrospective process") plus the lookup key ("by id"), so the operation is identifiable. However, it adds almost nothing beyond the tool name `update_retrospective_process` and never distinguishes itself from siblings like `create_retrospective_process`, `get_retrospective_process`, or `update_retrospective_process_group`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus `create_retrospective_process` or `update_retrospective_process_group`, no prerequisites (e.g., needing an existing process id), and no mention of what happens on partial updates. The only implied usage is that an id must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_retrospective_process_groupUpdate Retrospective Process GroupCIdempotent
Update a specific Retrospective Process Group by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective process group (fills `{id}` in /v1/retrospective_process_groups/{id}). Pass it as `id` -- this tool has no `retrospective_process_group_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether this is a partial or full replacement of the group, what happens to omitted attributes, or whether required permissions/roles apply.
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?
A single short sentence with the resource and the identifying key front-loaded; no filler or redundancy. It is efficient, though the brevity is also the source of the gaps captured in the other dimensions.
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?
An output schema exists, so return values need not be explained. But for a mutation tool with a nested attributes payload and only 50% schema coverage, the description omits which fields are updatable, the update semantics, and the relationship to the sibling retrospective-process 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 only 50% and the description compensates for none of it. The nested `attributes` object (position, sub_status_id) has no schema descriptions and is never mentioned in the description, so an agent gets no information about what `position` means or what values `sub_status_id` accepts.
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 a specific verb (Update) and a specific resource (Retrospective Process Group) scoped by id, which is enough to distinguish it from the similarly named update_retrospective_process and update_retrospective_step by resource name. It does not explicitly contrast itself with those siblings, but the resource naming is 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?
There is no guidance on when to use this tool versus update_retrospective_process, get_retrospective_process_group, or any other sibling. No prerequisites, no mention of when not to use it, and no mention of the workflow (e.g., fetch-then-update) an agent would need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_retrospective_stepUpdate Retrospective StepCIdempotent
Update a specific retrospective step by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the retrospective step (fills `{id}` in /v1/retrospective_steps/{id}). Pass it as `id` -- this tool has no `retrospective_step_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing to that: it does not say whether omitted attributes are cleared or left intact (critical for a PUT-style update), whether this affects steps in live retrospectives, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, so nothing is wasted. But brevity here is under-specification rather than efficiency; the one clause could have been spent on behavior or scope instead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a nested-object mutation with partial-update ambiguity and a deprecated field, and the description addresses none of it. An output schema exists, so return values needn't be explained, but the core question of what an update does to unspecified attributes is left unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and the description contributes no parameter meaning at all — it merely restates that the target is identified by id. The schema itself carries the important traps (id vs retrospective_step_id, deprecated slug, ignored data.id), but the description does not reinforce or extend any of that.
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?
It states a specific verb and resource ('Update a specific retrospective step by id'), which is clearer than a bare name restatement. However, it gives no signal on how this differs from near-identical siblings such as update_incident_retrospective_step, update_retrospective_process, or update_retrospective_process_group, so an agent must infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite, and no mention of alternatives. The only hint is 'by id', which the schema already covers. With several update_* retrospective-family siblings, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scheduleUpdate ScheduleCIdempotent
Updates a specific schedule by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the schedule (fills `{id}` in /v1/schedules/{id}). Pass it as `id` -- this tool has no `schedule_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety and repeatability are covered by structure. The description adds nothing about update semantics — crucially, whether omitted `attributes` fields are preserved or cleared, which is the single most consequential unknown in a PATCH-style nested update.
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?
One sentence with zero waste and a front-loaded verb, but the brevity is under-specification rather than economy — nothing is left after the tautological restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Rich schema (nested attributes, conditional constraints like shift-report flags requiring slack_channel) and an output schema exist, so the description needn't explain returns. Still, for a mutation on a 15+ attribute object, the absence of any partial-vs-full update statement leaves a real gap.
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 reported at 50%, so the description needs to compensate and does not. It says only 'by id', giving no hint about the `data` wrapper, the JSON:API `type` discriminator, or which attributes are writable versus derived (e.g., `time_zone`).
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 + resource: 'Updates a specific schedule by id'. An agent knows exactly which record type is mutated. It does not differentiate from nearby siblings such as update_schedule_rotation or update_override_shift, but the noun 'schedule' is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_schedule_rotation or list_schedules/get_schedule first. No prerequisites (e.g., needing a schedule id from list_schedules) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_schedule_rotationUpdate Schedule RotationBIdempotent
Update a specific schedule rotation by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the schedule rotation (fills `{id}` in /v1/schedule_rotations/{id}). Pass it as `id` -- this tool has no `schedule_rotation_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive, open-world update. The description adds only that the target is identified by id and does not explain partial-vs-full update semantics, permissions, or effects on nested members and time-zone settings, so it is minimally adequate given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler. It is arguably too terse for a complex update, but it is structurally clean and does not waste 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?
The schema is deeply detailed, an output schema exists, and annotations cover safety, so much of the context is supplied elsewhere. However, for a complex nested update the description still leaves important gaps around update semantics and usage routing.
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 description mentions only id, which is already documented thoroughly in the schema. It says nothing about the data payload, including schedule_rotationable_type or nested member/time-zone constraints, so it does not compensate for the top-level data parameter being undocumented at 50% schema 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?
States a specific verb and resource: update a schedule rotation, targeted by id. It is distinguishable from get/list/create siblings, though it does not explicitly contrast with update_schedule or describe the update scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance. An agent must infer from the name and annotations that this edits an existing rotation rather than creating, listing, or reading one, and no alternatives or prerequisites are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_serviceUpdate ServiceCIdempotent
Update a specific service by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the service (fills `{id}` in /v1/services/{id}). Pass it as `id` -- this tool has no `service_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-readOnly, idempotent, non-destructive mutation with open-world behavior. The description adds no behavioral context beyond that, such as whether updates are partial or full, how omitted fields are treated, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. Its brevity is efficient, though it reflects under-specification rather than a complete summary.
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 mutation tool with a large nested 'data' payload, output schema, and annotations, the description is far too thin. It omits the required request envelope and update semantics, so an agent must rely almost entirely on the schema and annotations to invoke it 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 description only confirms that the service is identified 'by id'. It does not explain the required 'data' JSON:API envelope, its required 'type' and 'attributes' fields, or the semantics of nested updatable attributes, leaving the complex payload to the schema and its partial 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 states a specific verb and resource ('Update a specific service') and includes the identifier ('by id'), which distinguishes it from get_service, create_service, and list_services. It stops short of describing what service fields can be updated or the scope of the update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The intended usage is only implied by the verb 'Update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_severityUpdate SeverityCIdempotent
Update a specific severity by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the severity (fills `{id}` in /v1/severities/{id}). Pass it as `id` -- this tool has no `severity_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as an idempotent, non-destructive, open-world mutation. The description adds no behavioral context such as partial versus full update semantics, permission requirements, or what happens to omitted fields. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. Every word 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 mutation tool with a nested data object and an output schema, the description is too sparse. It omits update semantics and request-shape guidance, leaving the agent to rely entirely on the schema and 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 description coverage is 50%, and the description only says 'by id' without explaining the nested data object or its attributes. The schema itself documents many fields, but the description adds no meaning beyond the top-level id 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?
States a specific verb ('Update') and resource ('severity') and identifies the target by id. It does not distinguish this tool from siblings like get_severity, create_severity, or list_severities, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus get_severity, create_severity, or list_severities. It only implies that it updates an existing severity by id, with no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_status_pageUpdate Status PageCIdempotent
Update a specific status page by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the status page (fills `{id}` in /v1/status-pages/{id}). Pass it as `id` -- this tool has no `status_page_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile: readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond restating the operation, such as partial-update semantics, ignored fields, deprecations, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is concise and front-loaded with the action, but it is severely under-specified for a tool with a complex nested request body. Brevity here does not compensate for the missing operational detail.
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 nested object schema, many attributes, and mutation behavior. Even with annotations and an output schema, the description is not complete enough to explain what can be updated, how the data object should be formed, or key deprecations beyond what the schema already says.
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 reported at 50%, and the description only mentions 'by id'. It does not explain the nested 'data' object, the required JSON:API shape, or the many updatable attributes and their deprecations.
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 gives a clear verb and resource: update a specific status page by id. It is distinguishable from get/list/create status page tools, and from status page template tools by the resource name, though it does not explicitly name siblings or boundaries.
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?
It only says to update by id. There is no guidance on when to use this instead of get_status_page, update_status_page_template, or other status page tools, and no prerequisites or constraints are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_status_page_templateUpdate Status Page TemplateCIdempotent
Update a specific template event by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the template (fills `{id}` in /v1/templates/{id}). Pass it as `id` -- this tool has no `template_id` argument. | |
| body | Yes | Description of the event the template will populate | |
| kind | No | The kind of the status page template | |
| title | Yes | Title of the template | |
| enabled | No | Enable / Disable the status page template | |
| position | No | Position of the workflow task | |
| created_at | Yes | Date of creation | |
| updated_at | Yes | Date of last update | |
| update_title | No | Title that will be used for the status page update | |
| update_status | No | Status of the event the template will populate | |
| status_page_id | Yes | ||
| should_notify_subscribers | No | Controls if incident subscribers should be notified |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-destructive, idempotent, open-world write, so safety is covered. But the description omits a critical behavioral fact: with 6 required fields including created_at/updated_at, this appears to be a full-replacement update, not a partial patch — undisclosed and likely to cause lost data if the agent omits fields. It also says nothing about permissions, response, or side effects on published status pages.
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?
A single front-loaded sentence with no filler. It is economical, though the brevity edges toward under-specification rather than tight precision.
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 12-parameter mutation with six required fields and an output schema, the description should at minimum flag full-replacement semantics and which fields are mandatory. It leaves the agent to reverse-engineer the update contract from the schema alone.
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 92%, so the schema documents almost every field. The description only echoes that `id` identifies the template ('by id'), adding nothing about the required-field set or the significance of created_at/updated_at — 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?
States a clear verb (update) and resource (template identified by id), which separates it from get_status_page_template and list_status_page_templates. The phrase 'template event' is slightly imprecise for a status page template, but an agent can still tell what it mutates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_status_page_template or update_status_page, and no preconditions (e.g., that a template must exist). The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sub_statusUpdate Sub StatusCIdempotent
Update a specific Sub-Status by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the sub status (fills `{id}` in /v1/sub_statuses/{id}). Pass it as `id` -- this tool has no `sub_status_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive, idempotent write (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the safety profile is covered. The description adds no behavioral context beyond the verb — it does not say which fields are mutable, that omitted fields are left untouched, or that the nested `id` and `slug` values are ignored.
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?
A single front-loaded sentence with zero waste, which is structurally clean. The problem is under-specification rather than verbosity — the terseness leaves the agent without needed routing and parameter context.
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 mutation tool with a nested request body, an output schema, and a near-identical sibling (update_incident_sub_status), the description is too thin. It omits the mutable field set and the sibling distinction, which are the two things an agent most needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description should compensate, but it only echoes the `id` path parameter ('by id') and says nothing about the `data` object or its `attributes` (name, position, description). The rich schema notes about ignored `data.id` and deprecated `slug` are never surfaced in the description.
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?
States a specific verb (Update) and resource (Sub-Status) with an id scope, so the basic operation is unambiguous. However, it does not distinguish this from the sibling update_incident_sub_status, leaving the agent to infer which mutation applies in a given context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus update_incident_sub_status, create_sub_status, or get_sub_status, and no prerequisites or exclusions are stated. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_teamUpdate TeamCIdempotent
Update a specific team by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the team (fills `{id}` in /v1/teams/{id}). Pass it as `id` -- this tool has no `team_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond 'by id' — it does not explain update semantics, partial vs full replacement, permission requirements, or what happens to omitted fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no wasted words. However, its brevity contributes to under-specification rather than efficient completeness for a complex nested update operation.
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 — a nested 'data' object with many mutable attributes, feature-flag-dependent fields, and a rich schema — the description is far too sparse. It does not explain what is updated, whether omitted fields are cleared, or any important constraints, even though an 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 description only mentions updating by id, which the schema already documents in detail. It says nothing about the required 'data' object, its nested attributes, or how the many team fields should be supplied. The schema carries nearly all parameter meaning, and the description adds no additional semantic guidance.
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 a specific verb and resource: update a specific team by id. It is clearly distinct from create_team, list_teams, and get_team, though it does not clarify what aspects of the team can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites or constraints. It simply states the operation without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflowUpdate WorkflowCIdempotent
Update a specific workflow by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow (fills `{id}` in /v1/workflows/{id}). Pass it as `id` -- this tool has no `workflow_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readOnly, idempotent, non-destructive, open-world update, so the safety profile is covered. The description adds only the id-targeting scope and says nothing about partial versus full update behavior, admin-only fields, ignored fields, or side effects of changing workflow configuration.
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 front-loaded sentence with no filler. It is efficient, though its brevity leaves important context unstated.
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?
Although annotations and an output schema exist, this is a complex mutation with a large nested `data` payload and only 50% schema description coverage. The description is too minimal to explain update semantics or help the agent distinguish this tool from other workflow tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the id parameter in detail, and also contains extensive nested attribute descriptions. The description only says 'by id' and adds no meaning about the required `data` object or how its many attributes should be used.
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 gives a clear verb and resource: update a workflow, scoped to a specific id. It distinguishes update from create/get/list by the verb, but does not explicitly contrast with sibling tools such as create_workflow or update_workflow_task.
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?
It implies use for updating an existing workflow by id, but gives no explicit when-to-use guidance, prerequisites, or alternatives. With siblings like create_workflow and get_workflow present, an agent receives no routing help beyond the verb itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_form_field_conditionUpdate Workflow Form Field ConditionCIdempotent
Update a specific workflow form field condition by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow form field condition (fills `{id}` in /v1/workflow_form_field_conditions/{id}). Pass it as `id` -- this tool has no `workflow_form_field_condition_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond that — it never says whether unspecified attributes are preserved or cleared, what happens on an invalid id, or that the `data.id` field is ignored in favor of the path id (that lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is appropriately sized but so terse that it conveys almost nothing beyond 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?
A mutation tool with a large nested payload, no output-schema explanation needed, but nothing on update semantics, required attribute combinations, or failure modes. Given the complexity of the attributes object, the description is not sufficient to call this correctly without careful schema reading.
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 50% and the payload is a nested `data.attributes` object with ten different `selected_*_ids`/`values` arrays. The description says only 'by id' and explains nothing about which attribute arrays apply to which condition kinds, leaving the most error-prone part of the call undocumented outside the schema's per-property blurbs.
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?
States a specific verb (update), a specific resource (workflow form field condition), and the keying mechanism (by id). The resource name itself distinguishes it from get_/list_/create_workflow_form_field_condition siblings, though the description text makes no explicit comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_ or get_workflow_form_field_condition, no mention of prerequisites (e.g. an existing condition id from list_workflow_form_field_conditions), and no note about partial vs full replacement semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_groupUpdate Workflow GroupCIdempotent
Update a specific workflow group by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow group (fills `{id}` in /v1/workflow_groups/{id}). Pass it as `id` -- this tool has no `workflow_group_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether the nested `attributes` object is a partial merge or a full replace, what happens to omitted fields, or what the response returns. For a mutation with a nested payload, partial-update semantics are the critical missing piece.
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?
A single short sentence with no filler, but it is under-specified rather than front-loaded with useful content; the space saved is not redeployed to explain the mutation's behavior.
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?
An output schema exists, so return values need no explanation, and annotations cover the mutation profile. However, for a nested-object update tool the description omits partial-update semantics, required payload shape, and any sibling routing — the gaps an agent would actually trip on.
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 description says only 'by id' and never mentions the required `data`/`attributes` envelope. With schema description coverage at 50%, the description should compensate for the undocumented half, but it provides no detail on updatable fields (name, icon, kind, description, position, expanded) or the ignored/deprecated fields.
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?
States a specific verb (Update) and resource (workflow group) scoped by id, which lets an agent immediately grasp the operation. It does not differentiate from nearby siblings such as update_workflow or update_workflow_task, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_workflow, create_workflow_group, or get_workflow_group. The only hint is 'specific ... by id', which implies the resource must already exist but is never stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_taskUpdate Workflow TaskCIdempotent
Update a specific workflow task by id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Required. ID of the workflow task (fills `{id}` in /v1/workflow_tasks/{id}). Pass it as `id` -- this tool has no `workflow_task_id` argument. | |
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say whether fields are replaced or merged, whether omitted attributes are cleared, what permissions/integration scope are required when a task_type targets an external system, or that the nested `data.id` is ignored. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded, with no filler — but for a tool whose payload contains dozens of discriminated task types, this is under-specification rather than conciseness.
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 extremely complex nested schema with many anyOf task_type variants, an output schema that covers return values, and an open-world external-integration effect, the description should at minimum explain the `data.type` + `data.attributes` envelope and the polymorphic task payload. None of that is present, so the agent must reverse-engineer the contract from 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 only 50% at the top level, and the `data` envelope — the heart of this tool, with its `type`/`attributes`/`task_type` polymorphism — is undocumented in the description. "By id" restates what the `id` schema description already says and provides no guidance on `task_type` variants, `position`, `enabled`, or `skip_on_failure`.
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 a specific verb and resource ("Update a specific workflow task by id"'), so the agent knows this mutates an existing workflow task rather than listing or creating one. It does not differentiate from siblings such as get_workflow_task, create_workflow_task, or update_playbook_task, leaving the agent to infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_workflow_task/create_workflow_task, no prerequisites, and no exclusions. The only selection signal is the word "Update" in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
300 tool updates
v2.4.0- Added
attach_alert - Removed
attachAlert - Added
cancel_investigation - Added
check_oncall_health_risk - Added
check_responder_availability - Added
collect_incidents - Added
count_observability_logs - Added
create_alert - Added
create_alert_event - Added
create_alert_group - Added
create_alert_route - Added
create_alert_routing_rule - Added
create_alert_urgency - Added
create_alerts_source - Added
create_catalog - Added
create_catalog_entity - Added
create_catalog_entity_property - Added
create_catalog_property - Added
create_cause - Added
create_custom_field - Added
create_custom_form - Added
create_dashboard - Added
create_environment - Added
create_escalation_level - Added
create_escalation_level_paths - Added
create_escalation_path - Added
create_escalation_policy - Added
create_form_field - Added
create_form_field_option - Added
create_form_set - Added
create_functionality - Added
create_heartbeat - Added
create_incident - Added
create_incident_action_item - Added
create_incident_custom_field_selection - Added
create_incident_event - Added
create_incident_form_field_selection - Added
create_incident_type - Added
create_live_call_router - Added
create_on_call_role - Added
create_on_call_shadow - Added
create_override_recommendation - Added
create_override_shift - Added
create_playbook - Added
create_pulse - Added
create_retrospective_process - Added
create_schedule - Added
create_schedule_rotation - Added
create_schedule_rotation_active_day - Added
create_schedule_rotation_user - Added
create_service - Added
create_severity - Added
create_status_page - Added
create_status_page_template - Added
create_sub_status - Added
create_team - Added
create_user_email_address - Added
create_user_notification_rule - Added
create_user_phone_number - Added
create_workflow - Added
create_workflow_form_field_condition - Added
create_workflow_group - Added
create_workflow_run - Added
create_workflow_task - Removed
createAlert - Removed
createEnvironment - Removed
createFunctionality - Removed
createIncident - Removed
createIncidentActionItem - Removed
createIncidentType - Removed
createService - Removed
createSeverity - Removed
createTeam - Removed
createWorkflow - Added
find_related_incidents - Added
get_alert - Added
get_alert_by_short_id - Added
get_alert_event - Added
get_alert_group - Added
get_alert_route - Added
get_alert_routing_rule - Added
get_alert_urgency - Added
get_alerts_source - Removed
get_all_incidents_matching - Added
get_catalog - Added
get_catalog_entity - Added
get_catalog_entity_property - Added
get_catalog_property - Added
get_cause - Added
get_current_user - Added
get_custom_field - Added
get_custom_field_option - Added
get_custom_form - Added
get_dashboard - Added
get_dashboard_panel - Added
get_environment - Added
get_escalation_level - Added
get_escalation_path - Added
get_escalation_policy - Added
get_form_field - Added
get_form_field_option - Added
get_form_field_placement - Added
get_form_field_placement_condition - Added
get_form_set - Added
get_form_set_condition - Added
get_functionality - Added
get_functionality_incidents_chart - Added
get_functionality_uptime_chart - Added
get_heartbeat - Added
get_incident - Added
get_incident_action_items - Added
get_incident_custom_field_selection - Added
get_incident_form_field_selection - Added
get_incident_meeting_transcripts - Added
get_incident_retrospective - Added
get_incident_retrospective_step - Added
get_incident_sub_status - Added
get_incident_type - Added
get_investigation - Added
get_investigation_progress - Added
get_live_call_router - Added
get_meeting_recording - Added
get_on_call_role - Added
get_on_call_shadow - Added
get_oncall_handoff_summary - Added
get_oncall_schedule_summary - Added
get_oncall_shift_metrics - Added
get_override_shift - Added
get_playbook - Added
get_playbook_task - Added
get_pulse - Added
get_retrospective_process - Added
get_retrospective_process_group - Added
get_retrospective_step - Added
get_schedule - Added
get_schedule_rotation - Added
get_schedule_shifts - Added
get_server_version - Added
get_service - Added
get_service_incidents_chart - Added
get_service_uptime_chart - Added
get_severity - Added
get_shift_coverage_request - Added
get_shift_incidents - Added
get_status_page - Added
get_status_page_template - Added
get_sub_status - Added
get_team - Added
get_team_incidents_chart - Added
get_user - Added
get_user_email_addresses - Added
get_user_phone_numbers - Added
get_workflow - Added
get_workflow_form_field_condition - Added
get_workflow_group - Added
get_workflow_task - Removed
getCurrentUser - Added
list_alert_events - Added
list_alert_groups - Added
list_alert_routes - Added
list_alert_routing_rules - Added
list_alert_urgencies - Added
list_alerts - Added
list_alerts_sources - Added
list_all_incident_action_items - Added
list_all_meeting_recordings - Added
list_audits - Added
list_catalog_entities - Added
list_catalog_entity_properties - Added
list_catalog_properties - Added
list_catalogs - Added
list_causes - Added
list_custom_fields - Added
list_custom_forms - Added
list_dashboards - Changed
list_endpoints2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "title": "Result", - "type": "string" - } - }, - "required": [ - "result" - ], - "title": "_WrappedResult", - "type": "object", - "x-fastmcp-wrap-result": true -}New value: +null
- Added
list_environments - Added
list_escalation_levels - Added
list_escalation_levels_paths - Added
list_escalation_paths - Added
list_escalation_policies - Added
list_form_field_options - Added
list_form_fields - Added
list_form_sets - Added
list_functionalities - Added
list_heartbeats - Added
list_incident_action_items - Added
list_incident_alerts - Added
list_incident_custom_field_selections - Added
list_incident_events - Added
list_incident_form_field_selections - Added
list_incident_post_mortems - Added
list_incident_roles - Added
list_incident_types - Added
list_incidents - Added
list_investigations - Added
list_live_call_routers - Added
list_meeting_recordings - Added
list_observability_logs - Added
list_observability_patterns - Added
list_on_call_roles - Added
list_on_call_shadows - Added
list_override_shifts - Added
list_playbooks - Added
list_pulses - Added
list_retrospective_processes - Added
list_schedule_rotation_active_days - Added
list_schedule_rotation_users - Added
list_schedule_rotations - Added
list_schedules - Added
list_services - Added
list_severities - Added
list_shift_coverage_requests - Added
list_shifts - Added
list_status_page_templates - Added
list_status_pages - Added
list_sub_statuses - Added
list_teams - Added
list_user_notification_rules - Added
list_users - Added
list_workflow_form_field_conditions - Added
list_workflow_groups - Added
list_workflow_runs - Added
list_workflow_tasks - Added
list_workflows - Removed
listAlerts - Removed
listEnvironments - Removed
listFunctionalities - Removed
listIncident_Types - Removed
listIncidentActionItems - Removed
listIncidentAlerts - Removed
listIncidents - Removed
listServices - Removed
listSeverities - Removed
listTeams - Removed
listUsers - Removed
listWorkflows - Added
patch_alert_route - Added
search_incidents - Removed
search_incidents_paginated - Added
start_investigation - Added
suggest_solutions - Added
update_alert - Added
update_alert_event - Added
update_alert_group - Added
update_alert_route - Added
update_alert_routing_rule - Added
update_alert_urgency - Added
update_alerts_source - Added
update_catalog - Added
update_catalog_entity - Added
update_catalog_entity_property - Added
update_catalog_property - Added
update_cause - Added
update_custom_field - Added
update_custom_field_option - Added
update_custom_form - Added
update_dashboard - Added
update_dashboard_panel - Added
update_environment - Added
update_escalation_level - Added
update_escalation_path - Added
update_escalation_policy - Added
update_form_field - Added
update_form_field_option - Added
update_form_field_placement - Added
update_form_field_placement_condition - Added
update_form_set - Added
update_form_set_condition - Added
update_functionality - Added
update_heartbeat - Added
update_incident - Added
update_incident_action_item - Added
update_incident_custom_field_selection - Added
update_incident_form_field_selection - Added
update_incident_retrospective_step - Added
update_incident_sub_status - Added
update_incident_type - Added
update_live_call_router - Added
update_on_call_role - Added
update_on_call_shadow - Added
update_override_shift - Added
update_playbook - Added
update_playbook_task - Added
update_pulse - Added
update_retrospective_process - Added
update_retrospective_process_group - Added
update_retrospective_step - Added
update_schedule - Added
update_schedule_rotation - Added
update_service - Added
update_severity - Added
update_status_page - Added
update_status_page_template - Added
update_sub_status - Added
update_team - Added
update_workflow - Added
update_workflow_form_field_condition - Added
update_workflow_group - Added
update_workflow_task
27 tool updates
v1.0.0- First observed
attachAlert - First observed
createAlert - First observed
createEnvironment - First observed
createFunctionality - First observed
createIncident - First observed
createIncidentActionItem - First observed
createIncidentType - First observed
createService - First observed
createSeverity - First observed
createTeam - First observed
createWorkflow - First observed
get_all_incidents_matching - First observed
getCurrentUser - First observed
list_endpoints - First observed
listAlerts - First observed
listEnvironments - First observed
listFunctionalities - First observed
listIncident_Types - First observed
listIncidentActionItems - First observed
listIncidentAlerts - First observed
listIncidents - First observed
listServices - First observed
listSeverities - First observed
listTeams - First observed
listUsers - First observed
listWorkflows - First observed
search_incidents_paginated
TDQS
Scored across 274 tools
The set is dominated by near-duplicate surface: list_incidents vs search_incidents vs collect_incidents, list_alerts vs get_alert_by_short_id, update_alert_route vs patch_alert_route, list_alert_routes vs list_alert_routing_rules, list_escalation_levels vs list_escalation_levels_paths, list_meeting_recordings vs list_all_meeting_recordings, and a large deprecated custom_field/catalog_entity_property family that shadows the form_field endpoints. A handful of tools (list_incidents/search_incidents/collect_incidents, list_shifts/get_oncall_schedule_summary) carry good disambiguating prose, but most of the 274 entries give an agent no reliable basis for choosing among siblings.
The dominant convention is verb_noun snake_case (list_x/get_x/create_x/update_x), which is readable, but deviations accumulate: patch_alert_route alongside update_alert_route, singular/plural mismatches (get_alerts_source, create_alerts_source vs list_alerts_sources, create_alert), and purpose-verb names (search_incidents, collect_incidents, find_related_incidents, suggest_solutions, check_responder_availability, start_investigation). Individually minor, but at 274 tools the irregularities make name-based discovery unreliable.
274 tools is an extreme mismatch for any single MCP surface — it is essentially a whole REST API dumped into one server namespace, including deprecated endpoints the descriptions themselves tell you not to use. An agent cannot hold this tool list in context or select reliably from it; meaningful scoping or curated subsets would be required.
Coverage of the incident-management domain is unusually thorough: incidents, alerts and alert routing, on-call schedules/shifts/overrides, escalation policies, retrospects, workflows, forms, catalogs, status pages, audit log and observability all have read/write operations, plus higher-level agent tools (find_related_incidents, suggest_solutions, on-call health). The main gap is the near-total absence of delete/archive operations, which leaves lifecycle dead ends for resources an agent can create but not remove.
Maintenance
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Official Rewst MCP server: build, run, and debug Rewst workflows, forms, apps, and integrations.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server to expose VS Code editing features to an LLM for AI coding9257 npm392MIT

OpsLevel MCPofficial
AlicenseNot gradedqualityFmaintenanceModel Context Protocol (MCP) server for OpsLevel12MIT- FlicenseNot gradedqualityNot gradedmaintenanceA remote MCP server that provides AI agents access to the Rootly API for incident management, allowing users to query and manage incidents, alerts, teams, services, and other incident management resources through natural language.-
- AlicenseNot gradedqualityAmaintenanceMCP server for the Rootly incident management platform — alerts, incidents, on-call schedulesApache 2.0