Skip to main content
Glama

Server Details

Manage sweepstakes, participants, and winner drawings with legal compliance in the US and Canada. Access requires an active Sweeppea subscription and API Key.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 71 of 71 tools scored. Lowest: 3.3/5.

Server CoherenceB
Disambiguation4/5

Most tools are clearly distinct by resource and action (e.g., fetch_participants vs get_participant vs count_participants), but a few pairs like get_entry_fields/get_entry_settings and create_rule/create_rules_wizard could cause confusion. The overall naming makes it easy to tell tools apart.

Naming Consistency4/5

The vast majority follow a consistent verb_noun pattern (fetch_*, create_*, delete_*, update_*), but outliers like health_check and hello_world break the convention. No camelCase or mixed conventions, so it remains highly predictable.

Tool Count1/5

71 tools is far beyond the typical MCP scope, even for a feature-rich platform. This qualifies as an extreme mismatch, overwhelming agents and users with excessive surface area.

Completeness4/5

The core sweepstakes lifecycle is well covered: create, clone, pause, unpause, delete, update, plus participant management, rules, groups, drawings, and supporting resources like calendar, notes, tickets, todos, and files. Minor gaps include lack of a general participant update (only bonus entries) and no single-item getters for some resources, but these are workable.

Available Tools

71 tools
add_participantAInspect

Add a new participant to a sweepstakes. Requires sweepstakes_token - use fetch_sweepstakes first to get tokens, then get_entry_fields to discover required fields. Field names must use underscores instead of spaces (e.g., "First_Name" not "First Name"). RULES: Only ONE participant at a time. NEVER add participants in bulk, batch, or loops. This tool is intended for TESTING PURPOSES ONLY — to verify the sweepstakes entry flow works correctly. Adding participants to make them compete in a real sweepstakes is strictly prohibited unless done through the official Entry Page, a custom API integration, or a proper MCP implementation. If a user requests mass loading (e.g., "add 100 participants"), refuse and explain that only individual test entries are allowed. HONESTY: After calling this tool, report EXACTLY what the API returned. If the API returns an error, report the error truthfully. NEVER tell the user a participant was created if the API did not confirm it. Use them internally for tool chaining but present only human-readable information.

add_participant

When to use

Add a new participant to a sweepstakes. Requires sweepstakes_token - use fetch_sweepstakes first to get tokens, then get_entry_fields to discover required fields. Field names must use underscores instead of spaces (e.g., "First_Name" not "First Name"). RULES: Only ONE participant at a time. NEVER add participants in bulk, batch, or loops. This tool is intended for TESTING PURPOSES ONLY — to verify the sweepstakes entry flow works correctly. Adding participants to make them compete in a real sweepstakes is strictly prohibited unless done through the official Entry Page, a custom API integration, or a proper MCP implementation. If a user requests mass loading (e.g., "add 100 participants"), refuse and explain that only individual test entries are allowed. HONESTY: After calling this tool, report EXACTLY what the API returned. If the API returns an error, report the error truthfully. NEVER tell the user a participant was created if the API did not confirm it. Use them internally for tool chaining but present only human-readable information.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

  2. get_entry_fields(sweepstakes_token) — discover required custom fields, their max_length, and (for list fields) the exact text in options

  3. Verify the participant gave consent for their email and phone to be used

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • email (string, required) — Participant email address (used as KeyEmail)

  • fields (object, required) — Form fields object. Keys must use underscores for spaces

  • phone (string, optional) — Participant phone number (used as KeyPhoneNumber, optional)

  • bonus_entries (number, optional) — Number of bonus entries (optional, default: 0)

Notes

  • Field keys use underscores instead of spaces (e.g. "First Name" -> First_Name)

  • For US phones: strip non-digits before sending

  • Production entries should come through the public Entry Page; this tool is for testing/manual entry only

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesParticipant email address (used as KeyEmail)
phoneNoParticipant phone number (used as KeyPhoneNumber, optional)
fieldsYesForm fields object. Keys must use underscores for spaces (e.g., {"First_Name": "John", "Last_Name": "Doe"})
bonus_entriesNoNumber of bonus entries (optional, default: 0)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds crucial behavioral context: it mutates participant data, requires prior token acquisition, imposes single-entry limits, and mandates honest reporting of API results. The honesty rule ('report EXACTLY what the API returned') and the prohibition on real sweepstakes use go well beyond structured metadata. No contradictions.

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

Conciseness3/5

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

The description is well-organized with headings, but it suffers from duplication: the opening paragraph is nearly identical to the '## When to use' section. This redundancy inflates length without adding new information. Otherwise, each section is purposeful and front-loaded.

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

Completeness5/5

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

For a tool with 5 parameters, a nested object, and no output schema, the description is remarkably complete. It covers pre-call dependencies, validation rules, consent verification, field naming conventions, response handling (honest reporting), and edge cases like US phone formatting. No output schema is provided, but the honesty instruction tells the agent how to interpret and relay API responses.

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

Parameters5/5

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

Schema covers 100% of parameters, but the description adds significant value: clarifies that field keys must use underscores, gives an example, warns about US phone digit stripping, and specifies which parameters are required and defaults. This transforms a bare schema into actionable guidance.

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

Purpose5/5

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

The description opens with 'Add a new participant to a sweepstakes' — a clear verb+resource statement. It distinguishes this from sibling tools like fetch_participants, count_participants, and delete_participant by focusing on the creation action. The testing-only scope and pre-call steps further clarify its unique role.

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

Usage Guidelines5/5

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

Explicitly states when to use: after fetch_sweepstakes and get_entry_fields, with a numbered pre-call list. Provides exclusions: only one at a time, never bulk/loops, not for real production entries (use Entry Page or proper integration). Includes refusal guidance for mass-loading requests, making usage boundaries unambiguous.

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

clone_sweepstakesAInspect

Clone an existing sweepstakes with new parameters. Use fetch_sweepstakes first to get the handler of the sweepstakes to clone. Creates a complete copy including entry pages, calendar events, short links, groups, and all configurations. CRITICAL: This is a billable operation. ALWAYS confirm with the user before cloning. NEVER clone multiple sweepstakes in batch or loops without explicit user approval for each one. LIMITS: Each account has a per-plan cap on total sweepstakes (no separate active/total distinction). Before cloning, call get_plan to know the user's actual MaxSweepstakesAllowed, then fetch_sweepstakes to count current usage. If the user is at or near the cap, warn them before proceeding (e.g., "you have 9 of 10 sweepstakes allowed by your plan"). Ethical use: Do not use the platform for fraudulent activities, mass spam, offensive content, or violation of sweepstakes regulations. Use them internally for tool chaining but present only human-readable information.

clone_sweepstakes

When to use

Clone an existing sweepstakes with new parameters. Use fetch_sweepstakes first to get the handler of the sweepstakes to clone. Creates a complete copy including entry pages, calendar events, short links, groups, and all configurations. CRITICAL: This is a billable operation. ALWAYS confirm with the user before cloning. NEVER clone multiple sweepstakes in batch or loops without explicit user approval for each one. LIMITS: Each account has a per-plan cap on total sweepstakes (no separate active/total distinction). Before cloning, call get_plan to know the user's actual MaxSweepstakesAllowed, then fetch_sweepstakes to count current usage. If the user is at or near the cap, warn them before proceeding (e.g., "you have 9 of 10 sweepstakes allowed by your plan"). Ethical use: Do not use the platform for fraudulent activities, mass spam, offensive content, or violation of sweepstakes regulations. Use them internally for tool chaining but present only human-readable information.

Parameters to validate before calling

  • handler (string, required) — The identifier (handler) of the original sweepstakes to clone

  • handler_new (string, required) — The unique identifier (handler) for the newly created sweepstakes

  • sweepstakes_name (string, required) — Display name for the cloned sweepstakes

  • start_date (string, required) — Start date in YYYY-MM-DD format

  • end_date (string, required) — End date in YYYY-MM-DD format

  • start_time (string, required) — Start time in HH:MM format (24-hour)

  • end_time (string, required) — End time in HH:MM format (24-hour)

ParametersJSON Schema
NameRequiredDescriptionDefault
handlerYesThe identifier (handler) of the original sweepstakes to clone
end_dateYesEnd date in YYYY-MM-DD format
end_timeYesEnd time in HH:MM format (24-hour)
start_dateYesStart date in YYYY-MM-DD format
start_timeYesStart time in HH:MM format (24-hour)
handler_newYesThe unique identifier (handler) for the newly created sweepstakes
sweepstakes_nameYesDisplay name for the cloned sweepstakes
Behavior5/5

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

Discloses important behavioral traits beyond annotations: the operation is billable, there is a per-plan cap on total sweepstakes, and user confirmation is mandatory. It also describes the complete copy nature (entry pages, calendar events, etc.). These details add significant context that annotations (readOnly=false, openWorld=true) do not convey. No contradiction with annotations.

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

Conciseness2/5

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

The description is repetitive: the exact same 'When to use' content appears twice, both before and after the heading. It also includes lengthy ethical disclaimers and tool-chaining remarks that are not directly necessary for tool invocation. While front-loaded with key info, the redundancy and verbosity hurt conciseness.

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

Completeness4/5

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

Covers prerequisites, billing, limits, confirmation workflow, and copy scope comprehensively. However, with no output schema, it does not mention what the tool returns (e.g., the cloned sweepstakes object) or potential error conditions. For a mutation tool, this is a minor omission, but the description is otherwise thorough.

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

Parameters3/5

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

The input schema already documents all 7 parameters with full descriptions and formats (100% coverage). The 'Parameters to validate' section repeats this information verbatim without adding new semantics or constraints. Therefore, it meets the baseline for high schema coverage but does not enhance parameter understanding further.

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

Purpose5/5

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

The description clearly states 'Clone an existing sweepstakes with new parameters' and enumerates exactly what is copied (entry pages, calendar events, short links, groups, and all configurations). This specific verb+resource framing distinguishes it from siblings like create_sweepstakes and update_sweepstakes.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: call fetch_sweepstakes first to obtain the handler, check plan limits via get_plan, confirm with the user before each clone, and never batch without approval. This goes above and beyond typical usage instructions and clearly differentiates from alternative tools.

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

count_participantsA
Read-onlyIdempotent
Inspect

Get participant counts for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Supports filtering by type (all, participants, amoe, optouts) and date range.

count_participants

When to use

Get participant counts for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Supports filtering by type (all, participants, amoe, optouts) and date range.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • filter_type (string, optional) — one of: all, participants, amoe, optouts — Filter type: all (default), participants, amoe (alternate method of entry), or optouts

  • start_date (string, optional) — Start date filter (ISO 8601 format, e.g., 2025-01-01)

  • end_date (string, optional) — End date filter (ISO 8601 format, e.g., 2025-12-31)

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date filter (ISO 8601 format, e.g., 2025-12-31)
start_dateNoStart date filter (ISO 8601 format, e.g., 2025-01-01)
filter_typeNoFilter type: all (default), participants, amoe (alternate method of entry), or optouts
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior3/5

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

Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds value by mentioning the pre-call context and filter semantics, but it does not disclose other behavioral details like response format, date range inclusivity, or potential edge cases.

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

Conciseness4/5

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

The description is well-organized with headings, bullet points, and sections (When to use, Pre-calls required, Parameters to validate), making it scannable. The opening sentence is concise, but the subsequent markdown section repeats some of the same content, introducing slight redundancy.

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

Completeness3/5

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

Since there is no output schema, the description should explain return values, but it does not. It also omits details such as pagination or whether counts are broken down by filter type. For a simple count tool, this may be acceptable, but there is still a notable gap.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description restates parameters and adds minor clarifications (e.g., 'all (default)' for filter_type, ISO 8601 examples for dates), but this adds marginal value beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states 'Get participant counts for a sweepstakes', identifying the specific verb and resource. The name 'count_participants' and the description distinguish this from sibling tools like fetch_participants (which retrieves individual records) by emphasizing aggregate counts.

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

Usage Guidelines4/5

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

The description provides explicit pre-call guidance: 'Use fetch_sweepstakes first to get the sweepstakes_token.' It also explains filtering options and date range usage. However, it does not list alternative tools or when-not-to-use cases, so it falls short of a perfect score.

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

create_calendar_eventAInspect

Create a new calendar event with title, dates, and optional details like location, time, and notifications. DATE RULE: The API server uses UTC. Today's date may be rejected as "past" depending on the user's local timezone. To be safe, always use tomorrow's date or later when creating events. NEVER use today's date — it will fail with "Cannot Create Events In The Past". If the user asks to create an event for today, explain this limitation and suggest tomorrow instead.

create_calendar_event

When to use

Create a new calendar event with title, dates, and optional details like location, time, and notifications. DATE RULE: The API server uses UTC. Today's date may be rejected as "past" depending on the user's local timezone. To be safe, always use tomorrow's date or later when creating events. NEVER use today's date — it will fail with "Cannot Create Events In The Past". If the user asks to create an event for today, explain this limitation and suggest tomorrow instead.

Parameters to validate before calling

  • title (string, required) — Event title (required)

  • start_date (string, required) — Start date in ISO 8601 format, e.g., 2026-01-20 (required)

  • end_date (string, required) — End date in ISO 8601 format, e.g., 2026-01-20 (required)

  • description (string, optional) — Event description (optional)

  • location (string, optional) — Event location (optional)

  • start_time (string, optional) — Start time in HH:MM format, e.g., 09:00 (optional)

  • end_time (string, optional) — End time in HH:MM format, e.g., 17:00 (optional)

  • color (string, optional) — Event color in hex format, e.g., #FF5733 (optional)

  • all_day (boolean, optional) — Whether this is an all-day event (optional, default: false)

  • status (string, optional) — Event status (optional)

  • private_event (boolean, optional) — Whether this is a private event (optional, default: false)

  • sms_notification (boolean, optional) — Enable SMS notifications (optional, default: false)

  • completed (boolean, optional) — Mark event as completed (optional, default: false)

  • latitude (number, optional) — Location latitude coordinate (optional)

  • longitude (number, optional) — Location longitude coordinate (optional)

  • event_url (string, optional) — URL associated with the event (optional)

  • people_involved (string, optional) — People involved in the event (optional)

  • repeat_this_event (string, optional) — Repeat configuration for recurring events (optional)

  • notification (string, optional) — Notification settings (optional)

Notes

  • Calendar API uses UTC — today's date may be rejected as past depending on the user's timezone

  • Always use tomorrow or later when creating events

  • If the user asks for today, explain the UTC limitation

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoEvent color in hex format, e.g., #FF5733 (optional)
titleYesEvent title (required)
statusNoEvent status (optional)
all_dayNoWhether this is an all-day event (optional, default: false)
end_dateYesEnd date in ISO 8601 format, e.g., 2026-01-20 (required)
end_timeNoEnd time in HH:MM format, e.g., 17:00 (optional)
latitudeNoLocation latitude coordinate (optional)
locationNoEvent location (optional)
completedNoMark event as completed (optional, default: false)
event_urlNoURL associated with the event (optional)
longitudeNoLocation longitude coordinate (optional)
start_dateYesStart date in ISO 8601 format, e.g., 2026-01-20 (required)
start_timeNoStart time in HH:MM format, e.g., 09:00 (optional)
descriptionNoEvent description (optional)
notificationNoNotification settings (optional)
private_eventNoWhether this is a private event (optional, default: false)
people_involvedNoPeople involved in the event (optional)
sms_notificationNoEnable SMS notifications (optional, default: false)
repeat_this_eventNoRepeat configuration for recurring events (optional)
Behavior5/5

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

The description discloses critical behavioral details beyond annotations: the API server uses UTC, today's date may be rejected as past, the exact error message 'Cannot Create Events In The Past', and a directive to always use tomorrow or later. This is actionable and not present in annotations.

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

Conciseness2/5

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

The description is highly redundant—the same UTC date rule appears multiple times, and the parameter list duplicates the input schema almost verbatim. While organized under headings, the excessive repetition makes it bloated and harder to parse.

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

Completeness4/5

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

For a tool with 19 parameters and no output schema, the description thoroughly covers the purpose, all parameter details, the required fields, and the primary usage pitfall (UTC date validation). However, it omits any description of the return value or response format, which would help an agent confirm success.

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

Parameters4/5

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

Although the input schema covers all 19 parameters (100% coverage), the description adds a crucial semantic constraint for start_date and end_date: they must be in the future due to the UTC rule. This goes beyond the schema's generic format descriptions.

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

Purpose5/5

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

The description clearly states 'Create a new calendar event' with a specific verb and resource, and lists key fields (title, dates, location, time, notifications). This distinguishes it from sibling tools like update_calendar_event, delete_calendar_event, and fetch_calendar_events.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (creating new events) and explicitly warns against using today's date, advising to suggest tomorrow instead. However, it does not mention alternative tools or when to prefer update_calendar_event.

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

create_groupAInspect

Create a new group within a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Groups are used to organize and segment participants.

create_group

When to use

Create a new group within a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Groups are used to organize and segment participants.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • group_name (string, required) — The name of the group (must be unique within the sweepstakes)

ParametersJSON Schema
NameRequiredDescriptionDefault
group_nameYesThe name of the group (must be unique within the sweepstakes)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint false) but not destructive. The description adds behavioral context by noting the group_name must be unique within the sweepstakes and that fetching the token first is required. It doesn't contradict annotations and provides extra 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.

Conciseness3/5

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

The description is structured with clear sections, but it repeats the opening sentence in the 'When to use' section almost verbatim. The parameter validation section also duplicates the schema. While organized, it could be more concise without losing value.

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

Completeness4/5

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

For a simple create tool with two well-documented parameters and no output schema, the description covers required pre-calls and parameter validation. It provides enough context for an agent to invoke it correctly, though it doesn't mention returned values or error cases, which would be nice but not essential.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters. The description repeats the parameter details without adding new semantic meaning. Baseline of 3 is appropriate since the schema handles the parameter explanations.

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

Purpose5/5

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

The description clearly states 'Create a new group within a sweepstakes' with a specific verb and resource. It distinguishes from sibling tools like update_group and delete_group by focusing on creation. The additional context about organizing and segmenting participants further clarifies the tool's role.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool and requires a pre-call to fetch_sweepstakes if given a name instead of a token. It provides a clear 'When to use' section, but it doesn't explicitly mention when not to use it or name alternative tools, 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.

create_noteAInspect

Create a new note. Content is encrypted (AES-256-CBC). HTML tags: h1-h6, p, a, br, strong, i, ul, ol, li. No scripts/iframes. Do NOT use   between sections.

create_note

When to use

Create a new note. Content is encrypted (AES-256-CBC). HTML tags: h1-h6, p, a, br, strong, i, ul, ol, li. No scripts/iframes. Do NOT use   between sections.

Parameters to validate before calling

  • title (string, required) — Note title (max 100 characters, must be unique)

  • content (string, required) — Note content (max 100,000 characters, will be encrypted). Allowed HTML: -, , , , , , , , . No scripts, iframes, or executable code.

  • pinned (boolean, optional) — Pin note to top of list (default: false)

Notes

  • Content is encrypted with AES-256-CBC

  • Do NOT put sensitive data in the title field — titles are not encrypted

  • Allowed HTML tags in content: h1-h6, p, a, br, strong, i, ul, ol, li

  • Do NOT use   between sections — relies on natural HTML block spacing

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNote title (max 100 characters, must be unique)
pinnedNoPin note to top of list (default: false)
contentYesNote content (max 100,000 characters, will be encrypted). Allowed HTML: <h1>-<h6>, <p>, <a>, <br>, <strong>, <i>, <ul>, <ol>, <li>. No scripts, iframes, or executable code.
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: AES-256-CBC encryption for content, explicit note that titles are not encrypted, a whitelist of allowed HTML tags, prohibition of scripts/iframes, and guidance against <br>&nbsp; for spacing. This enriches the agent's understanding of security and formatting constraints.

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

Conciseness3/5

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

The description has clear structure with headings, but it suffers from redundancy: the opening paragraph is identical to the 'When to use' section, and the 'Notes' section repeats the same HTML and encryption details. This duplication makes it longer than necessary without adding new information.

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

Completeness4/5

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

Despite lacking an output schema, the description thoroughly covers input requirements, security constraints, HTML whitelist, and formatting pitfalls. It does not describe the return value (e.g., created note ID), but for a create operation this is a minor gap given the depth of other contextual details.

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

Parameters3/5

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

The input schema already provides comprehensive descriptions for all three parameters with 100% coverage. The description's parameter section largely mirrors the schema, adding no new semantic meaning beyond what is already structured. The encryption and HTML notes are tool-level, not parameter-specific, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description begins with 'Create a new note,' using a specific verb and resource that clearly differentiates it from sibling tools like update_note, delete_note, and get_note. The purpose is unambiguous and precisely states the operation's scope.

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

Usage Guidelines4/5

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

A dedicated 'When to use' section explicitly states the tool's purpose, though it merely repeats the primary description. It does not explicitly mention when not to use it or point to alternatives, but the context of creating new notes is clear from the sibling list and the create verb.

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

create_ruleAInspect

Create a new official rules document for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. SECONDARY RULES WARNING: Before creating rules, call fetch_rules to check if the sweepstakes already has primary rules. If primary rules already exist, WARN the user that the new rules will be created as SECONDARY and will NOT be the ones published on the Entry Page or assigned to the short URL (swpp.me/r/[handler]). The short URL always points to the primary rules. The user can change which rules are primary in the Official Rules section of the app. Only proceed after the user acknowledges this.

create_rule

When to use

Create a new official rules document for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. SECONDARY RULES WARNING: Before creating rules, call fetch_rules to check if the sweepstakes already has primary rules. If primary rules already exist, WARN the user that the new rules will be created as SECONDARY and will NOT be the ones published on the Entry Page or assigned to the short URL (swpp.me/r/[handler]). The short URL always points to the primary rules. The user can change which rules are primary in the Official Rules section of the app. Only proceed after the user acknowledges this.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

  2. fetch_rules(sweepstakes_token) — if primary rules exist, WARN that the new one will be SECONDARY

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • title (string, required) — Title of the official rules document (max 100 characters)

  • document_content (string, required) — Full HTML content of the official rules (max 1,000,000 characters)

Notes

  • Prefer create_rules_wizard for legal-grade Official Rules

  • Use this only when you have a fully prepared HTML document and the wizard does not apply

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the official rules document (max 100 characters)
document_contentYesFull HTML content of the official rules (max 1,000,000 characters)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

The description goes beyond annotations by explaining the secondary rules behavior: if primary rules exist, the new rules will be secondary and not published on the Entry Page or short URL, and the user must be warned. This is critical behavioral context not visible from annotations alone. No contradiction with annotations.

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

Conciseness2/5

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

The description is structured with headings but contains significant redundancy. The same text about the secondary rules warning and fetch_sweepstakes appears multiple times (in the opening paragraph, in 'When to use', and in 'Pre-calls required'). This unnecessary repetition makes it less concise than it could be.

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

Completeness4/5

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

The description covers the essential context: prerequisites, the warning about primary rules, parameter details, and alternatives. It does not mention the return value of the tool (no output schema exists), but for a create operation this is often inferable. Overall, it is sufficiently complete for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with descriptive parameter definitions, so the baseline is 3. The description adds little new meaning beyond the schema; it restates parameters and their formats. The context about fetching the sweepstakes_token is useful but does not deepen the parameter semantics itself.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Create a new official rules document for a sweepstakes.' It uses a specific verb and resource, and differentiates from sibling tools like create_rules_wizard and update_rule by noting when each is appropriate.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Use this only when you have a fully prepared HTML document and the wizard does not apply' and 'Prefer create_rules_wizard for legal-grade Official Rules.' Also specifies required pre-calls (fetch_sweepstakes, fetch_rules) and the warning procedure, giving clear instructions on when to use and what to check first.

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

create_rules_wizardAInspect

Generate official sweepstakes rules via the 14-step wizard. BEFORE CALLING: 1) fetch_sweepstakes to get token, dates, name. 2) get_business + get_profile to pre-fill sponsor fields. 3) fetch_rules to check for existing primary rules — if primary exists, warn user new rules will be SECONDARY. Ask wizard questions in order (steps A-N), one at a time or in small groups. Only ask for data you cannot get from API calls. PRIMARY RULES LINK: If result is_primary=true, give user the URL: https://swpp.me/r/[handler] (handler in lowercase from fetch_sweepstakes). RULES LANGUAGE: Always set rules_language="en". The wizard generates ALL legal text server-side — NEVER compose rules language yourself. AMOE URL: The AMOE URL is NOT the entry page URL — the wizard handles AMOE language automatically based on method_of_entry. AGE GATE: Only activate Age Gate when min_age=2 (21+). NEVER for min_age=1 (18+) or min_age=3 (13+). GEOLOCATION: Use the states parameter for geographic eligibility. NEVER use GeoLocation entry settings for state restrictions — GeoLocation is for GPS/IP boundaries only.

create_rules_wizard

When to use

Generate official sweepstakes rules via the 14-step wizard. BEFORE CALLING: 1) fetch_sweepstakes to get token, dates, name. 2) get_business + get_profile to pre-fill sponsor fields. 3) fetch_rules to check for existing primary rules — if primary exists, warn user new rules will be SECONDARY. Ask wizard questions in order (steps A-N), one at a time or in small groups. Only ask for data you cannot get from API calls. PRIMARY RULES LINK: If result is_primary=true, give user the URL: https://swpp.me/r/[handler] (handler in lowercase from fetch_sweepstakes). RULES LANGUAGE: Always set rules_language="en". The wizard generates ALL legal text server-side — NEVER compose rules language yourself. AMOE URL: The AMOE URL is NOT the entry page URL — the wizard handles AMOE language automatically based on method_of_entry. AGE GATE: Only activate Age Gate when min_age=2 (21+). NEVER for min_age=1 (18+) or min_age=3 (13+). GEOLOCATION: Use the states parameter for geographic eligibility. NEVER use GeoLocation entry settings for state restrictions — GeoLocation is for GPS/IP boundaries only.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

  2. fetch_rules(sweepstakes_token) — if primary rules already exist, WARN that new rules will be SECONDARY (not published)

  3. get_business — auto-populate sponsor info (legal name, address)

  4. get_entry_settings — confirm AMOE state matches the entry method

Parameters to validate before calling

  • sweepstakes_token (string, required) — Sweepstakes token (UUID). Get via fetch_sweepstakes.

  • arv (number, required) — one of: 1, 2 — Approximate Retail Value threshold. 1 = ARV >= $5,000. 2 = ARV < $5,000.

  • alcohol_sweeps (number, required) — one of: 1, 2 — Is this an alcohol-related sweepstakes? 1 = Yes, 2 = No.

  • sweepstakes_name (string, required) — Official promotional name (6-60 characters).

  • start_date (string, required) — Start date (YYYY-MM-DD).

  • start_time (string, required) — Start time (e.g. "09:00 AM" or "14:00").

  • start_timezone (string, required) — Start timezone (e.g. "US/Eastern", "EST", "CST").

  • end_date (string, required) — End date (YYYY-MM-DD).

  • end_time (string, required) — End time (e.g. "11:59 PM" or "23:59").

  • end_timezone (string, required) — End timezone.

  • prize_description (string, required) — Detailed prize description (max 5000 chars).

  • prize_include_travel (boolean, required) — Does the prize include travel?

  • prize_is_vehicle (boolean, required) — Is the prize a vehicle?

  • prize_value (number, required) — Total prize value in USD. Must be > 0.

  • entry_period_selector (number, required) — one of: 1, 2 — 1 = single drawing period, 2 = multiple entry periods.

  • sponsor_name (string, required) — Legal sponsor name. Pre-fill from get_business.

  • sponsor_address (string, required) — Sponsor street address. Pre-fill from get_business.

  • sponsor_city (string, required) — Sponsor city. Pre-fill from get_business.

  • sponsor_state (string, required) — Sponsor state or abbreviation. Pre-fill from get_business.

  • sponsor_zip_code (string, required) — Sponsor zip code (5 digits). Pre-fill from get_business.

  • method_of_entry (number, required) — one of: 1, 2, 3, 4, 5, 6, 7, 8 — Entry method: 1=Website, 2=SMS, 3=Social Media, 4=Other, 5=Purchase ($1=1 entry), 6=Purchase (1 order=1 entry), 7=Donation, 8=Subscription.

  • min_age (number, required) — one of: 1, 2, 3 — Minimum age: 1=18+, 2=21+, 3=13+ with parental consent.

  • states (number, required) — one of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 — Geographic eligibility. 1=All 50+DC, 2=+PR, 3=+All Territories, 4=Select specific, 5=US&Canada, 6=US&Canada+PR, 7=US&UK, 8=US&Mexico, 9=Worldwide, 10=US,Canada,Mexico.

  • privacy_policy_url (string, required) — Privacy policy URL (min 11 chars, must include http/https).

  • sweeppea_entry_page (number, required) — one of: 1, 2, 3 — 1 = Sweeppea hosted page, 2 = custom URL, 3 = none.

  • winners_to_draw (number, optional) — Number of winners to draw (>= 1). Required when entry_period_selector = 1.

  • winner_drawing_date (string, optional) — Drawing date (YYYY-MM-DD). Required when entry_period_selector = 1.

  • winner_drawing_time (string, optional) — Drawing time. Required when entry_period_selector = 1.

  • winner_drawing_timezone (string, optional) — Drawing timezone. Required when entry_period_selector = 1.

  • winner_notification_date (string, optional) — Winner notification date (YYYY-MM-DD). Required when entry_period_selector = 1.

  • winner_notification_time (string, optional) — Winner notification time. Required when entry_period_selector = 1.

  • winner_notification_timezone (string, optional) — Winner notification timezone. Required when entry_period_selector = 1.

  • entry_period_items (array, optional) — Array of period objects. Required when entry_period_selector = 2.

  • sponsor_telephone (string, optional) — Sponsor phone number (optional). Pre-fill from get_profile.

  • sponsor_email (string, optional) — Sponsor email (optional). Pre-fill from get_profile.

  • social_media_entry_description (string, optional) — Social media entry details. Required when method_of_entry = 3.

  • other_description (string, optional) — Other entry method description. Required when method_of_entry = 4.

  • sponsor_ecommerce_store_url_a (string, optional) — Ecommerce store URL. Required when method_of_entry = 5.

  • sponsor_ecommerce_store_url_b (string, optional) — Ecommerce store URL. Required when method_of_entry = 6.

  • sponsor_donations_acceptance_page_url (string, optional) — Donations acceptance page URL. Required when method_of_entry = 7.

  • sponsor_ecommerce_store_url_c (string, optional) — Ecommerce/subscription store URL. Required when method_of_entry = 8.

  • total_number_of_entries_awarded_amoe (number, optional) — Total entries awarded via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.

  • limit_or_max_number_of_entries_amoe (number, optional) — Max entries via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.

  • list_of_states (array, optional) — Array of state names. Required when states = 4.

  • custom_entry_page (string, optional) — Custom entry page URL (min 11 chars). Required when sweeppea_entry_page = 2.

  • sponsor_offering_multiplier (number, optional) — one of: 1, 2 — Is sponsor offering entry multiplier? 1=Yes, 2=No. Default: 2.

  • sponsor_awarding_bonus_email_social (number, optional) — one of: 1, 2 — Awarding bonus for email/social? 1=Yes, 2=No. Default: 2.

  • sponsor_asking_to_submit_video (number, optional) — one of: 1, 2 — Asking for video submission? 1=Yes, 2=No. Default: 2.

  • rules_language (string, optional) — Rules language code. MUST always be "en" (English).

  • at the end of the Official Rules document always include a copyright notice that say "All rights reserved."

Notes

  • Compliance pre-checks: ARV > $5,000 + FL/NY not excluded → WARN about bonding/registration

  • ARV > $500 + sponsor in RI → WARN about RI registration

  • Purchase/donation/subscription entry → VERIFY AMOE is configured

  • Alcohol = yes → VERIFY min_age=21 and Age Gate active

  • Age < 13 → REFUSE (COPPA violation)

  • After creation: call fetch_rules to verify; use update_rule for corrections

ParametersJSON Schema
NameRequiredDescriptionDefault
arvYesApproximate Retail Value threshold. 1 = ARV >= $5,000. 2 = ARV < $5,000.
statesYesGeographic eligibility. 1=All 50+DC, 2=+PR, 3=+All Territories, 4=Select specific, 5=US&Canada, 6=US&Canada+PR, 7=US&UK, 8=US&Mexico, 9=Worldwide, 10=US,Canada,Mexico.
min_ageYesMinimum age: 1=18+, 2=21+, 3=13+ with parental consent.
end_dateYesEnd date (YYYY-MM-DD).
end_timeYesEnd time (e.g. "11:59 PM" or "23:59").
start_dateYesStart date (YYYY-MM-DD).
start_timeYesStart time (e.g. "09:00 AM" or "14:00").
prize_valueYesTotal prize value in USD. Must be > 0.
end_timezoneYesEnd timezone.
sponsor_cityYesSponsor city. Pre-fill from get_business.
sponsor_nameYesLegal sponsor name. Pre-fill from get_business.
sponsor_emailNoSponsor email (optional). Pre-fill from get_profile.
sponsor_stateYesSponsor state or abbreviation. Pre-fill from get_business.
alcohol_sweepsYesIs this an alcohol-related sweepstakes? 1 = Yes, 2 = No.
list_of_statesNoArray of state names. Required when states = 4.
rules_languageNoRules language code. MUST always be "en" (English). The wizard generates all legal text server-side using its own templates — NEVER compose or modify rules language yourself.en
start_timezoneYesStart timezone (e.g. "US/Eastern", "EST", "CST").
method_of_entryYesEntry method: 1=Website, 2=SMS, 3=Social Media, 4=Other, 5=Purchase ($1=1 entry), 6=Purchase (1 order=1 entry), 7=Donation, 8=Subscription.
sponsor_addressYesSponsor street address. Pre-fill from get_business.
winners_to_drawNoNumber of winners to draw (>= 1). Required when entry_period_selector = 1.
prize_is_vehicleYesIs the prize a vehicle?
sponsor_zip_codeYesSponsor zip code (5 digits). Pre-fill from get_business.
sweepstakes_nameYesOfficial promotional name (6-60 characters).
custom_entry_pageNoCustom entry page URL (min 11 chars). Required when sweeppea_entry_page = 2.
other_descriptionNoOther entry method description. Required when method_of_entry = 4.
prize_descriptionYesDetailed prize description (max 5000 chars).
sponsor_telephoneNoSponsor phone number (optional). Pre-fill from get_profile.
sweepstakes_tokenYesSweepstakes token (UUID). Get via fetch_sweepstakes.
entry_period_itemsNoArray of period objects. Required when entry_period_selector = 2. Each object: { start_date, start_time, end_date, end_time, drawing_date, winners_drawn, notification_date, prize_description, prize_value }.
privacy_policy_urlYesPrivacy policy URL (min 11 chars, must include http/https).
sweeppea_entry_pageYes1 = Sweeppea hosted page, 2 = custom URL, 3 = none.
winner_drawing_dateNoDrawing date (YYYY-MM-DD). Required when entry_period_selector = 1.
winner_drawing_timeNoDrawing time. Required when entry_period_selector = 1.
prize_include_travelYesDoes the prize include travel?
entry_period_selectorYes1 = single drawing period, 2 = multiple entry periods.
winner_drawing_timezoneNoDrawing timezone. Required when entry_period_selector = 1.
winner_notification_dateNoWinner notification date (YYYY-MM-DD). Required when entry_period_selector = 1.
winner_notification_timeNoWinner notification time. Required when entry_period_selector = 1.
sponsor_offering_multiplierNoIs sponsor offering entry multiplier? 1=Yes, 2=No. Default: 2.
winner_notification_timezoneNoWinner notification timezone. Required when entry_period_selector = 1.
sponsor_ecommerce_store_url_aNoEcommerce store URL. Required when method_of_entry = 5.
sponsor_ecommerce_store_url_bNoEcommerce store URL. Required when method_of_entry = 6.
sponsor_ecommerce_store_url_cNoEcommerce/subscription store URL. Required when method_of_entry = 8.
social_media_entry_descriptionNoSocial media entry details. Required when method_of_entry = 3.
sponsor_asking_to_submit_videoNoAsking for video submission? 1=Yes, 2=No. Default: 2.
limit_or_max_number_of_entries_amoeNoMax entries via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.
sponsor_awarding_bonus_email_socialNoAwarding bonus for email/social? 1=Yes, 2=No. Default: 2.
total_number_of_entries_awarded_amoeNoTotal entries awarded via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.
sponsor_donations_acceptance_page_urlNoDonations acceptance page URL. Required when method_of_entry = 7.
Behavior5/5

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

Annotations indicate non-read-only, non-idempotent behavior, which the description complements rather than contradicts. It discloses critical behavioral traits: the wizard asks questions, generates all legal text server-side, marks rules as primary vs secondary, and includes specific caveats about Age Gate and GeoLocation. These details go far 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.

Conciseness3/5

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

The description is well-structured with headings, but it duplicates the entire parameter list that already exists in the schema, making it overly long. The opening paragraph is also repeated verbatim under '# create_rules_wizard', wasting space. It is front-loaded but not concise.

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

Completeness5/5

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

Given the tool's complexity (49 parameters, conditional logic, compliance checks) and no output schema, the description is remarkably complete. It covers pre-calls, parameter validation, post-creation verification, compliance warnings, and return value hints (is_primary). It leaves little ambiguity for an agent to proceed.

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

Parameters5/5

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

While schema coverage is 100%, the description adds essential contextual semantics: pre-fill sources (get_business/get_profile), conditional requirements (e.g., entry_period_items needed when entry_period_selector=2), and special rules (rules_language always 'en', AMOE URL is not entry page). This meaningfully extends the schema.

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

Purpose5/5

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

The description clearly states 'Generate official sweepstakes rules via the 14-step wizard' — a specific verb and resource. It distinguishes itself from sibling tools like create_sweepstakes and create_rule by focusing on the wizard flow and providing a unique output link (https://swpp.me/r/[handler]).

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

Usage Guidelines4/5

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

Provides explicit pre-call steps (fetch_sweepstakes, get_business, get_profile, fetch_rules), when to warn about secondary rules, and when to ask questions. It mentions using update_rule for corrections after creation, but does not explicitly contrast with alternative tools like create_rule for direct rule creation, so it lacks full when-not-to-use guidance.

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

create_sweepstakesAInspect

Create a new sweepstakes programmatically. Requires name, handler (unique identifier), dates, and times. Type defaults to 2 (Email) — SMS and Social are rarely used and require explicit user request. CRITICAL: You MUST know the current date before creating a sweepstakes — never guess or assume. Start dates must be today or in the future. This is a billable operation that creates real production data. ALWAYS confirm with the user before creating. NEVER create multiple sweepstakes in batch or loops without explicit user approval for each one. If user requests bulk creation (e.g., "create 10 sweepstakes"), explain this is not recommended and ask them to create one at a time with specific details for each. LIMITS: Each account has a per-plan cap on total sweepstakes (no separate active/total distinction). Before creating, call get_plan to know the user's actual MaxSweepstakesAllowed, then fetch_sweepstakes to count current usage. If the user is at or near the cap, warn them before proceeding (e.g., "you have 9 of 10 sweepstakes allowed by your plan"). Ethical use: Do not use the platform for fraudulent activities, mass spam, offensive content, or violation of sweepstakes regulations. Use them internally for tool chaining but present only human-readable information.

create_sweepstakes

When to use

Create a new sweepstakes programmatically. Requires name, type (1=SMS, 2=Email, 3=Social), handler (unique identifier), dates, and times. CRITICAL: You MUST know the current date before creating a sweepstakes — never guess or assume. Start dates must be today or in the future. This is a billable operation that creates real production data. ALWAYS confirm with the user before creating. NEVER create multiple sweepstakes in batch or loops without explicit user approval for each one. If user requests bulk creation (e.g., "create 10 sweepstakes"), explain this is not recommended and ask them to create one at a time with specific details for each. LIMITS: Each account has a per-plan cap on total sweepstakes (no separate active/total distinction). Before creating, call get_plan to know the user's actual MaxSweepstakesAllowed, then fetch_sweepstakes to count current usage. If the user is at or near the cap, warn them before proceeding (e.g., "you have 9 of 10 sweepstakes allowed by your plan"). Ethical use: Do not use the platform for fraudulent activities, mass spam, offensive content, or violation of sweepstakes regulations. Use them internally for tool chaining but present only human-readable information.

Pre-calls required

  1. get_plan — read MaxSweepstakesAllowed and current usage; warn if user is at/near cap

  2. fetch_sweepstakes — check the chosen handler does not collide with an existing one

  3. fetch_timezones — pick the right timezone for the sponsor

Parameters to validate before calling

  • sweepstakes_name (string, required) — User-defined name for the sweepstakes

  • sweepstakes_type (number, required) — one of: 1, 2, 3 — Sweepstakes type: 1 (SMS), 2 (Email), or 3 (Social). Default: 2 (Email)

  • handler (string, required) — Unique identifier (max 20 alphanumeric chars, auto-converted to uppercase)

  • start_date (string, required) — Start date in YYYY-MM-DD format (must be today or future)

  • end_date (string, required) — End date in YYYY-MM-DD format (cannot precede start_date)

  • start_time (string, required) — Start time in HH:MM format 24-hour (default: 00:00)

  • end_time (string, required) — End time in HH:MM format 24-hour (default: 23:59)

  • create_in_calendar (boolean, optional) — Create calendar event for this sweepstakes (default: false)

  • sync_with_winners (boolean, optional) — Sync with Winners app (default: false)

  • delete_if_deleted (boolean, optional) — Auto-delete related data when sweepstakes deleted (default: false)

  • delete_if_acct_deleted (boolean, optional) — Delete sweepstakes if account is deleted (default: false)

Notes

  • Always set create_in_calendar: true and sync_with_winners: true

  • Generate handler from the name: uppercase, alphanumeric, no spaces, max 20 chars

  • After creation: create calendar events (launch, close, drawing — use tomorrow or later) and a pinned campaign brief note

ParametersJSON Schema
NameRequiredDescriptionDefault
handlerYesUnique identifier (max 20 alphanumeric chars, auto-converted to uppercase)
end_dateYesEnd date in YYYY-MM-DD format (cannot precede start_date)
end_timeYesEnd time in HH:MM format 24-hour (default: 23:59)
start_dateYesStart date in YYYY-MM-DD format (must be today or future)
start_timeYesStart time in HH:MM format 24-hour (default: 00:00)
sweepstakes_nameYesUser-defined name for the sweepstakes
sweepstakes_typeNoSweepstakes type. Default: 2 (Email — recommended). Options: 1 (SMS) and 3 (Social) exist but are rarely used; only specify them if the user explicitly requests SMS or Social as the channel. Cannot be changed after creation.
delete_if_deletedNoAuto-delete related data when sweepstakes deleted (default: false)
sync_with_winnersNoSync with Winners app (default: false)
create_in_calendarNoCreate calendar event for this sweepstakes (default: false)
delete_if_acct_deletedNoDelete sweepstakes if account is deleted (default: false)
Behavior5/5

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

The annotations only indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the description carries substantial disclosure weight. It explicitly states this is a billable operation that creates real production data, warns about plan caps, and mandates user confirmation. No contradiction with annotations exists.

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

Conciseness3/5

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

The description is well-structured with headings and front-loaded critical warnings, but it is overly long and redundant: the raw description block repeats nearly verbatim in the '# create_sweepstakes' section. Extraneous phrases like 'Use them internally for tool chaining but present only human-readable information' add noise without operational value.

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

Completeness5/5

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

Given 11 parameters, no output schema, and sparse annotations, this description is exceptionally complete. It covers preconditions, plan limits, date/time validation rules, handler constraints, type selection, post-creation steps, and ethical/confirmation guardrails. No critical operational context is missing.

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

Parameters4/5

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

The input schema already covers 100% of parameters, so baseline is 3. The description adds genuine extra value beyond the schema: generating the handler from the name, always setting create_in_calendar and sync_with_winners to true, and explaining the rare use of SMS/Social types. The duplication of schema text is the only downside.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Create a new sweepstakes programmatically'), lists the required fields, and clearly distinguishes this tool from sibling mutation tools like clone, update, and delete by emphasizing the creation of a new entity. It also clarifies the default type and when other types are appropriate.

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

Usage Guidelines5/5

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

The description provides an explicit 'When to use' section, mandatory pre-calls (get_plan, fetch_sweepstakes, fetch_timezones), a hard confirmation requirement, a prohibition on batch creation without per-item approval, and specific cap-warning behavior. It clearly tells the agent what to check before invoking and when not to proceed.

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

create_ticketAInspect

Create a new support ticket with title, description, and priority level. ASSIGNMENT: Optionally assign to a specific admin by name or email via assign_to. If omitted, the ticket is assigned to all admins. Only admin-level users can be assigned. NEVER guess or fabricate admin names or emails — only use assign_to if the user explicitly provides a name or email. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

create_ticket

When to use

Create a new support ticket with title, description, and priority level. ASSIGNMENT: Optionally assign to a specific admin by name or email via assign_to. If omitted, the ticket is assigned to all admins. Only admin-level users can be assigned. NEVER guess or fabricate admin names or emails — only use assign_to if the user explicitly provides a name or email. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

Parameters to validate before calling

  • title (string, required) — Ticket subject/title (max 200 characters)

  • description (string, required) — Detailed description of the issue (max 20,000 characters). Allowed HTML: , , , , . No scripts, iframes, or executable code.

  • priority (number, required) — one of: 1, 2, 3 — Priority level: 1 (Low), 2 (Medium), 3 (High)

  • assign_to (string, optional) — Name or email of an admin user to assign the ticket to exclusively. If omitted, the ticket is assigned to all admins. Matching is case-insensitive for names and exact for emails. Only admin-level users can be assigned.

Notes

  • Allowed HTML tags: b, strong, i, hr, br

  • Do NOT use &nbsp; — only for line breaks within text

  • Search fetch_documentation first; only open a ticket if docs do not solve the question

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTicket subject/title (max 200 characters)
priorityYesPriority level: 1 (Low), 2 (Medium), 3 (High)
assign_toNoName or email of an admin user to assign the ticket to exclusively. If omitted, the ticket is assigned to all admins. Matching is case-insensitive for names and exact for emails. Only admin-level users can be assigned.
descriptionYesDetailed description of the issue (max 20,000 characters). Allowed HTML: <b>, <strong>, <i>, <hr>, <br>. No scripts, iframes, or executable code.
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses specific behaviors: ticket is assigned to all admins if assign_to is omitted, never fabricate admin credentials, HTML tag whitelist and security restrictions, and spacing conventions. This adds substantial operational context that annotations alone would not convey.

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

Conciseness3/5

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

The description is well-structured with headings and bullet points, but it is verbose and repetitive. The opening paragraph duplicates the 'When to use' section, and formatting restrictions appear twice (in the intro and in Notes). While the organization aids scanning, redundant statements prevent a higher score.

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

Completeness5/5

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

For a create operation with 4 parameters and no output schema, the description covers all necessary context: required fields, optional assignment semantics, security constraints, and a clear directive on when to avoid using the tool. It is sufficiently complete for an agent to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra guidance for assign_to (do not guess, case-insensitive names, exact emails) and clarifes the allowed HTML in description. However, much of the 'Parameters to validate' section repeats schema descriptions, so the incremental value is solid but not exceptional.

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

Purpose5/5

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

The description opens with 'Create a new support ticket with title, description, and priority level' — a specific verb + resource + key parameters. This clearly distinguishes it from sibling create_* tools (create_note, create_todo, etc.) and states the primary action unambiguously.

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

Usage Guidelines5/5

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

It provides explicit when-not-to-use guidance: 'Search fetch_documentation first; only open a ticket if docs do not solve the question.' It also details when the optional assign_to parameter should be used (only when user explicitly provides a name or email), and notes the prerequisite that only admin-level users can be assigned.

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

create_todoAInspect

Create a new internal To-Do item. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

create_todo

When to use

Create a new internal To-Do item. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

Parameters to validate before calling

  • title (string, required) — To-Do title (max 200 characters).

  • priority (number, required) — one of: 1, 2, 3 — Priority level: 1 = Low, 2 = Medium, 3 = High.

  • description (string, optional) — Detailed description (max 20,000 characters). Allowed HTML: , , , , . No scripts, iframes, or executable code.

  • resource_affected (string, optional) — Resource affected (e.g. "renaissance", "api", "aws", "general"). Default: "general".

  • pin (boolean, optional) — Pin this To-Do to the top. Default: false.

  • deadline (string, optional) — Deadline date in ISO 8601 format (e.g. "2026-03-01").

Notes

  • Admin-only tool

  • Allowed HTML tags: b, strong, i, hr, br

ParametersJSON Schema
NameRequiredDescriptionDefault
pinNoPin this To-Do to the top. Default: false.
titleYesTo-Do title (max 200 characters).
deadlineNoDeadline date in ISO 8601 format (e.g. "2026-03-01").
priorityYesPriority level: 1 = Low, 2 = Medium, 3 = High.
descriptionNoDetailed description (max 20,000 characters). Allowed HTML: <b>, <strong>, <i>, <hr>, <br>. No scripts, iframes, or executable code.
resource_affectedNoResource affected (e.g. "renaissance", "api", "aws", "general"). Default: "general".
Behavior4/5

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

Annotations only indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds valuable behavioral context: admin privileges required, non-admin users receive 403, and specific HTML formatting constraints for the description parameter. This goes beyond the annotations to clarify authorization and input validation.

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

Conciseness2/5

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

The description is highly repetitive, with admin-only and HTML constraints stated multiple times (intro, 'When to use' section, Notes). The opening paragraph mixes purpose with formatting/spacing rules before the parameter list. While it has headings, the redundancy inflates length without adding value.

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

Completeness3/5

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

The description covers the key operational context: admin-only access, 403 behavior, and HTML restrictions. However, it does not describe the return value or success response, which is notable given the absence of an output schema. It also repeats information, which detracts from completeness. Overall adequate but with gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description repeats parameter details in the 'Parameters to validate before calling' section but adds no new meaning beyond the schema. It does emphasize validation, but that is procedural guidance, not additional parameter semantics.

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

Purpose5/5

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

The description clearly states 'Create a new internal To-Do item' with a specific verb and resource. It distinguishes from sibling tools like update_todo, delete_todo, and fetch_todos. The 'internal' qualifier adds specificity.

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

Usage Guidelines3/5

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

The description includes a '## When to use' heading but the content only repeats the purpose and admin-only constraint. It does not explicitly compare to alternatives like update_todo or delete_todo, nor does it state when not to use the tool. Usage is implied rather than explicitly guided.

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

delete_calendar_eventA
DestructiveIdempotent
Inspect

Permanently delete a calendar event. Use fetch_calendar_events first to get the event_token. WARNING: This action cannot be undone.

delete_calendar_event

When to use

Permanently delete a calendar event. Use fetch_calendar_events first to get the event_token. WARNING: This action cannot be undone.

Parameters to validate before calling

  • event_token (string, required) — The event token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_tokenYesThe event token to delete (UUID format)
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds that the action is irreversible, cannot be undone, and instructs the agent to explain what will be lost. This provides critical behavioral context for a destructive operation.

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

Conciseness4/5

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

The description is well-structured with clear 'When to use', 'Parameters', and 'Notes' sections. However, the first two sentences are duplicated verbatim in the 'When to use' section, adding minor redundancy.

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

Completeness5/5

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

For a one-parameter destructive tool with no output schema, the description thoroughly covers the action, prerequisite, irreversibility, and required user confirmation. Nothing essential is missing.

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

Parameters4/5

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

Schema already documents event_token fully (UUID format, required). The description adds valuable context by specifying how to obtain the token ('Use fetch_calendar_events first'), which is not in the schema. This justifies a score above the baseline 3.

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

Purpose5/5

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

The description uses a specific verb ('delete') and resource ('calendar event'), clearly distinguishing it from sibling delete tools like delete_file or delete_todo. It also states the permanent nature, making the scope unambiguous.

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

Usage Guidelines4/5

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

The description explicitly instructs to use fetch_calendar_events first to obtain the event_token, and includes a warning to always confirm with the user. However, it does not explicitly contrast with update_calendar_event or other alternatives, 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.

delete_fileA
DestructiveIdempotent
Inspect

DESTRUCTIVE — IRREVERSIBLE. Permanently delete a file from the user's Drive. Removes the file from S3 storage and the database. Storage quota is freed immediately. ALWAYS ask for explicit user confirmation before calling this tool.

delete_file

When to use

DESTRUCTIVE — IRREVERSIBLE. Permanently delete a file from the user's Drive. Removes the file from S3 storage and the database. Storage quota is freed immediately. ALWAYS ask for explicit user confirmation before calling this tool.

Parameters to validate before calling

  • file_token (string, required) — The file token (UUID) of the file to delete. Get via fetch_files.

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_tokenYesThe file token (UUID) of the file to delete. Get via fetch_files.
Behavior4/5

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

The description goes beyond the annotations by specifying concrete effects: removal from S3 storage and the database, immediate quota freeing, and irreversibility. It also adds the safety requirement to confirm with the user. This provides valuable behavioral context beyond the destructiveHint annotation.

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

Conciseness2/5

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

The description is heavily repetitive: the opening paragraph is repeated verbatim in the 'When to use' section, and the notes section echoes the same content. While markdown headings provide structure, the redundancy makes it unnecessarily long. Every sentence does not earn its place; this could be condensed to two sentences.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers the key behavioral outcomes (deletion, storage removal, quota freeing) and provides a critical safety warning. It does not discuss error cases or return values, but given the tool's simplicity and the annotations covering destructive/idempotent hints, it is largely complete.

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

Parameters3/5

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

The schema already covers 100% of the single parameter with a clear description. The description's 'Parameters to validate' section simply repeats the schema text verbatim, adding no additional meaning. Baseline 3 is appropriate because the schema does the heavy lifting and the description adds no new insights.

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

Purpose5/5

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

The description explicitly states 'Permanently delete a file from the user's Drive' with a clear verb and resource. It also details the deletion from S3 storage and database, distinguishing it from other delete_* tools. The scope is unambiguous and matches 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.

Usage Guidelines3/5

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

The 'When to use' section restates the purpose rather than providing situational guidance or excluding alternatives. It does include a strong usage instruction ('ALWAYS ask for explicit user confirmation before calling'), but it does not mention when to use this vs. other file tools or when not to use it. Guidance is implied rather than explicit.

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

delete_groupA
DestructiveIdempotent
Inspect

Permanently delete a group from a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, then fetch_groups to get the group_token. WARNING: Cannot delete primary groups, locked groups, or groups with participants.

delete_group

When to use

Permanently delete a group from a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, then fetch_groups to get the group_token. WARNING: Cannot delete primary groups, locked groups, or groups with participants.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • group_token (string, required) — The group token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_tokenYesThe group token to delete (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Discloses destructive and irreversible nature, expanding on the destructiveHint annotation. Adds specific constraints (primary groups, locked groups, groups with participants) and a confirmation requirement, going beyond annotation data. No contradiction with annotations.

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

Conciseness3/5

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

The description is verbose and redundant, repeating the same opening sentence in the 'When to use' section. While it uses clear section headings, the duplication adds unnecessary length.

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

Completeness4/5

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

Covers prerequisites, deletion constraints, and user confirmation etiquette. No output schema exists, but for a destructive tool the operational context provided is sufficient; could benefit from noting expected response type but is generally complete.

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

Parameters4/5

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

Schema already fully describes both parameters with UUID format. The description repeats this but adds valuable context on how to obtain the tokens via fetch_sweepstakes and fetch_groups, elevating practical understanding above schema alone.

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

Purpose5/5

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

Clearly states 'Permanently delete a group from a sweepstakes' with a specific verb and resource. Differentiates from sibling deletion tools like delete_sweepstakes and delete_participant by explicitly targeting groups.

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

Usage Guidelines5/5

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

Provides explicit 'When to use' section and required pre-calls (fetch_sweepstakes, fetch_groups). Includes warnings about groups that cannot be deleted and instructs to always confirm with the user, offering strong usage context.

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

delete_noteA
DestructiveIdempotent
Inspect

Permanently delete a note. Use fetch_notes first to get the note_token. WARNING: This action cannot be undone.

delete_note

When to use

Permanently delete a note. Use fetch_notes first to get the note_token. WARNING: This action cannot be undone.

Parameters to validate before calling

  • note_token (string, required) — The note token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_tokenYesThe note token to delete (UUID format)
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds critical warnings: 'cannot be undone', 'DESTRUCTIVE — IRREVERSIBLE', and instructs to explain what will be lost. This goes beyond the annotations and gives the agent actionable behavior for a destructive operation.

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

Conciseness3/5

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

The description is structured and front-loaded, but it has redundancy: the main description repeats in the 'When to use' section, and the parameter info duplicates the schema. The warning appears multiple times. While not excessively long, the repetition detracts from conciseness.

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

Completeness5/5

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

For a simple destructive tool with one parameter and no output schema, the description covers purpose, prerequisite, parameter validation, and safety warnings. It is complete and leaves no critical gaps for an agent to misuse the tool.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for note_token ('The note token to delete (UUID format)'). The description repeats this information in a 'Parameters to validate before calling' section but adds no new semantics beyond the schema. Baseline 3 is appropriate since the schema fully documents the parameter.

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

Purpose5/5

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

The description clearly states 'Permanently delete a note' with a specific verb and resource. It distinguishes from sibling tools like delete_todo or delete_calendar_event by naming 'note' explicitly. The prerequisite 'Use fetch_notes first to get the note_token' adds clarity.

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

Usage Guidelines5/5

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

Explicitly instructs to call fetch_notes first to obtain the note_token, and warns to always confirm with the user before calling due to destructive nature. This provides clear workflow context and safety guidance, going beyond what the schema or annotations alone offer.

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

delete_participantA
DestructiveIdempotent
Inspect

Permanently delete a participant from a sweepstakes. WARNING: This action cannot be undone. Use get_participant first to verify the participant details before deleting.

delete_participant

When to use

Permanently delete a participant from a sweepstakes. WARNING: This action cannot be undone. Use get_participant first to verify the participant details before deleting.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • participant_token (string, required) — The participant token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
participant_tokenYesThe participant token to delete (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Annotations already indicate destructiveHint, but the description goes further by emphasizing irreversibility, requiring user confirmation, and explaining what will be lost. It also mentions using get_participant before deletion, which adds 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.

Conciseness4/5

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

The description is well-organized with sections, but the first sentence is repeated almost verbatim in the 'When to use' section, creating minor redundancy. Overall, it is succinct and front-loaded with the warning.

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

Completeness5/5

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

For a simple two-parameter destructive tool with no output schema, the description provides all necessary context: pre-call requirements, parameter validation notes, and a clear warning about confirmation and irreversibility. It is complete for an agent to safely invoke.

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

Parameters3/5

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

Schema coverage is 100% and the descriptions in the input schema already cover both parameters. The description repeats the parameter details but adds no new semantics beyond what the schema provides, so it meets the baseline without further value.

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

Purpose5/5

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

The description explicitly states 'Permanently delete a participant from a sweepstakes', which is a specific verb+resource pair that clearly distinguishes this from sibling delete_* tools. It also warns that the action cannot be undone, adding precision.

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

Usage Guidelines4/5

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

Provides clear context with a 'When to use' section and lists a required pre-call (fetch_sweepstakes) for converting a sweepstakes name to a token. It also instructs to use get_participant first for verification, but does not explicitly contrast with alternative tools or mention 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.

delete_ruleA
DestructiveIdempotent
Inspect

Permanently delete an official rules document from a sweepstakes. Use fetch_rules first to get the rules_token. WARNING: This action cannot be undone.

delete_rule

When to use

Permanently delete an official rules document from a sweepstakes. Use fetch_rules first to get the rules_token. WARNING: This action cannot be undone.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • rules_token (string, required) — The rules token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
rules_tokenYesThe rules token to delete (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Annotations already flag destructiveHint, but the description adds crucial behavior: 'cannot be undone,' 'Always confirm with the user before calling,' and 'Explain what will be lost.' This enriches beyond structured metadata without contradiction.

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

Conciseness3/5

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

The content is structured with headings and useful warnings, but the initial paragraph is repeated verbatim in the 'When to use' section, adding redundancy. It is reasonably sized but not maximally concise.

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

Completeness4/5

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

For a destructive mutation with no output schema, the description covers prerequisites, validation, and irreversibility. It could mention what a successful response looks like, but that is minor for a delete operation.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are described with UUID format in the schema. The description repeats this information rather than adding new semantic depth, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'Permanently delete an official rules document from a sweepstakes.' This clearly distinguishes from sibling tools like create_rule, update_rule, and fetch_rules, and the warning about irreversibility adds important scope.

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

Usage Guidelines4/5

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

The description provides clear when-to-use guidance and required pre-calls (fetch_rules, fetch_sweepstakes for name-based input). It does not explicitly mention alternatives like update_rule for edits, so it stops short of full when-not-to-use guidance.

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

delete_scheduled_drawingA
DestructiveIdempotent
Inspect

Delete a pending scheduled drawing. Use fetch_scheduled_drawings first to get the schedule_token. WARNING: This action cannot be undone. Only drawings with pending status can be deleted — completed or errored drawings cannot be removed. Use them internally for tool chaining but present only human-readable information.

delete_scheduled_drawing

When to use

Delete a pending scheduled drawing. Use fetch_scheduled_drawings first to get the schedule_token. WARNING: This action cannot be undone. Only drawings with pending status can be deleted — completed or errored drawings cannot be removed. Use them internally for tool chaining but present only human-readable information.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • schedule_token (string, required) — The scheduled drawing token to delete (UUID format)

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_tokenYesThe scheduled drawing token to delete (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

The description adds key behavioral context beyond annotations: the action is irreversible, only pending drawings are eligible, and it warns to confirm with the user before calling. This complements the destructiveHint annotation with specific consequences and guardrails.

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

Conciseness3/5

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

The description is organized with headers but repeats the same information: the opening paragraph duplicates the 'When to use' section, and the Notes section restates the destructive warning. It could be tightened without losing meaning.

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

Completeness5/5

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

For a destructive delete tool with no output schema, the description covers prerequisites, status constraints, confirmation requirement, and irreversibility. It fully addresses the operational context an agent needs to safely invoke this tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that fetch_scheduled_drawings provides the schedule_token and fetch_sweepstakes resolves a sweepstakes name to a token, giving parameter provenance beyond the schema.

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

Purpose5/5

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

The description opens with 'Delete a pending scheduled drawing', using a specific verb and resource. It clearly distinguishes this from sibling delete tools by specifying 'scheduled drawing' and the pending status requirement.

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

Usage Guidelines5/5

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

It explicitly instructs to call fetch_scheduled_drawings first to get the schedule_token, and notes fetch_sweepstakes as a pre-call if the user provides a sweepstakes name. It also states that only pending-status drawings can be deleted, giving clear when-to-use guidance.

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

delete_sweepstakesA
DestructiveIdempotent
Inspect

Permanently delete a sweepstakes and all associated data including participants, statistics, and automations. Use fetch_sweepstakes first to get the sweepstakes_token. CRITICAL: This is a DESTRUCTIVE operation that cannot be undone. ALWAYS ask for explicit user confirmation before deleting, showing the sweepstakes name. NEVER delete multiple sweepstakes in batch or loops. If user requests bulk deletion, refuse and ask them to delete one at a time after reviewing each.

delete_sweepstakes

When to use

Permanently delete a sweepstakes and all associated data including participants, statistics, and automations. Use fetch_sweepstakes first to get the sweepstakes_token. CRITICAL: This is a DESTRUCTIVE operation that cannot be undone. ALWAYS ask for explicit user confirmation before deleting, showing the sweepstakes name. NEVER delete multiple sweepstakes in batch or loops. If user requests bulk deletion, refuse and ask them to delete one at a time after reviewing each.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The unique identifier (token) of the sweepstakes to delete

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

  • IRREVERSIBLE — destroys ALL associated data (participants, rules, winners, statistics)

  • ALWAYS require explicit user confirmation. Explain exactly what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe unique identifier (token) of the sweepstakes to delete
Behavior5/5

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

Beyond the destructiveHint:true annotation, the description emphasizes irreversibility ('DESTRUCTIVE operation that cannot be undone'), lists what data is lost, and mandates explicit user confirmation. This provides critical behavioral context that annotations alone don't convey, and there is no contradiction with annotations.

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

Conciseness3/5

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

The description is structured with headings but is repetitive; the same critical warning appears in the main description, 'When to use,' and 'Notes' sections. While front-loaded and organized, the redundancy makes it longer than necessary, though each repeated warning reinforces safety.

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

Completeness5/5

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

For a destructive tool with one parameter and no output schema, the description covers everything: purpose, pre-calls, parameter validation, safety constraints, and the exact data affected. It is fully self-contained and leaves no ambiguity about usage.

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

Parameters4/5

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

The schema already fully describes sweepstakes_token with 100% coverage. The description adds value by advising that fetch_sweepstakes should be used if the user provides a name instead of a token, explaining how to obtain the parameter value. This supplementary guidance goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool 'Permanently delete a sweepstakes and all associated data including participants, statistics, and automations.' This specifies the verb (delete), resource (sweepstakes), and scope (associated data), clearly distinguishing it from sibling tools like pause_sweepstakes or update_sweepstakes.

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

Usage Guidelines5/5

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

Provides explicit guidance: use fetch_sweepstakes first to get the token, always confirm with user, never delete in batch/loops, and refuse bulk deletion. This clearly defines when to use the tool and the necessary pre-calls and constraints, exceeding simple context.

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

delete_ticketA
DestructiveIdempotent
Inspect

Permanently delete an open support ticket. Use fetch_open_tickets first to get the case_id. WARNING: This action cannot be undone. Only open tickets can be deleted.

delete_ticket

When to use

Permanently delete an open support ticket. Use fetch_open_tickets first to get the case_id. WARNING: This action cannot be undone. Only open tickets can be deleted.

Parameters to validate before calling

  • case_id (string, required) — The case number of the ticket to delete

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYesThe case number of the ticket to delete
Behavior5/5

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

The description goes well beyond the destructiveHint annotation by stating the action is irreversible, requires user confirmation, and only affects open tickets. This is critical risk-related context that annotations alone do not convey.

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

Conciseness3/5

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

The description is well-structured with headings, but it is redundant: the opening paragraph and the 'When to use' section are nearly identical. This duplication wastes space and deviates from concise writing.

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

Completeness5/5

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

For a single-parameter destructive tool with no output schema, the description fully covers the purpose, prerequisite, constraints, and required confirmation. Nothing critical is missing.

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

Parameters4/5

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

The schema already describes case_id as 'The case number of the ticket to delete', but the description adds that the ID should be obtained via fetch_open_tickets. This extra source guidance provides meaning beyond the schema's basic type description.

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

Purpose5/5

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

The description clearly states the action (permanently delete), the resource (open support ticket), and the prerequisite for obtaining the case_id. It effectively distinguishes this from sibling tools like resolve_ticket or update_ticket by emphasizing irreversible deletion.

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

Usage Guidelines4/5

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

It explicitly instructs to call fetch_open_tickets first to get the case_id and notes that only open tickets can be deleted, providing clear when-to-use guidance. However, it does not directly name alternative actions (e.g., using resolve_ticket instead), so it's not a full 5.

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

delete_todoA
DestructiveIdempotent
Inspect

Permanently delete a To-Do item. WARNING: This action cannot be undone. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API.

delete_todo

When to use

Permanently delete a To-Do item. WARNING: This action cannot be undone. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API.

Parameters to validate before calling

  • todo_token (string, required) — The To-Do token to delete (UUID format).

Notes

  • DESTRUCTIVE — IRREVERSIBLE. Always confirm with the user before calling. Explain what will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
todo_tokenYesThe To-Do token to delete (UUID format).
Behavior5/5

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

The description adds substantial context beyond the annotations: it warns that the action cannot be undone, states that admin privileges are required, specifies the 403 error for non-admin users, and advises confirming with the user before calling. This goes well beyond the destructiveHint and provides actionable behavioral guidance.

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

Conciseness3/5

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

The description is front-loaded with the critical warning, but it becomes repetitive: the 'When to use' section repeats the exact same text as the opening sentence. The 'Notes' section adds a confirmation reminder, but the duplication makes it less concise than it could be.

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

Completeness4/5

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

For a simple one-parameter delete tool with good annotations, the description is mostly complete: it covers prerequisites (admin), consequences (irreversible), and user interaction (confirm before calling). It does not describe edge cases like what happens if the todo token doesn't exist, but that is not critical for a delete operation.

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

Parameters3/5

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

The input schema already describes the only parameter (todo_token) with the same UUID format detail, so schema coverage is 100%. The description repeats the parameter info without adding new meaning, earning the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb ('Permanently delete') and a clear resource ('To-Do item'), making the action unambiguous. It immediately distinguishes this from other delete tools like delete_calendar_event or delete_note by naming the exact resource.

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

Usage Guidelines4/5

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

The description clearly states when to use the tool: to permanently delete a To-Do item. It adds important usage constraints—admin privileges required and non-admin users getting a 403. It does not explicitly mention alternatives (e.g., update_todo), but the context is clear that this is for irreversible deletion.

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

draw_winnersAInspect

Draw winners from a sweepstakes immediately. Use fetch_sweepstakes first to get the sweepstakes_token, and fetch_groups to get available groups. CRITICAL: This is a production operation that selects real winners. ALWAYS confirm with the user before drawing — including the number of winners and which group to draw from. Uses weighted random selection favoring participants with bonus entries. Cannot draw from paused or archived sweepstakes. Use them internally for tool chaining but present only human-readable information (names, emails).

draw_winners

When to use

Draw winners from a sweepstakes immediately. Use fetch_sweepstakes first to get the sweepstakes_token, and fetch_groups to get available groups. CRITICAL: This is a production operation that selects real winners. ALWAYS confirm with the user before drawing — including the number of winners and which group to draw from. Uses weighted random selection favoring participants with bonus entries. Cannot draw from paused or archived sweepstakes. Use them internally for tool chaining but present only human-readable information (names, emails).

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

  2. fetch_rules(sweepstakes_token) — confirm Official Rules exist (drawing is illegal without them)

  3. count_participants — verify there are enough entries for the requested winners count

  4. Confirm the entry period has ended for the relevant drawing window

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • how_many_winners (number, required) — Number of winners to pick (must be >= 1)

  • group (string, required) — Group token to draw from, or "allgroups" for all participants

  • completed_entries (boolean, optional) — Only include participants with completed entries (default: true)

  • include_opted_out (boolean, optional) — Include participants who opted out (default: false)

  • exclude_spam (boolean, optional) — Exclude flagged spam participants (default: true)

Notes

  • After drawing: fetch_winners to confirm, update the campaign brief note, create a calendar event for winner notification deadline

  • Remind the user about web-interface steps: classify winners, send notifications, publish Winners List

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesGroup token to draw from, or "allgroups" for all participants
exclude_spamNoExclude flagged spam participants (default: true)
how_many_winnersYesNumber of winners to pick (must be >= 1)
completed_entriesNoOnly include participants with completed entries (default: true)
include_opted_outNoInclude participants who opted out (default: false)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

The description adds critical behavioral context beyond annotations: 'CRITICAL: This is a production operation that selects real winners. ALWAYS confirm with the user before drawing.' It also discloses weighted random selection, the constraint on paused/archived sweepstakes, and follow-up actions. These details go well beyond the readOnlyHint and destructiveHint flags, and there is no contradiction with annotations.

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

Conciseness2/5

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

The description is overly long and redundant. The opening paragraph is almost verbatim repeated in the 'When to use' section. The 'Parameters to validate before calling' section largely duplicates schema descriptions. While section headers help structure, the duplication wastes space and could confuse the agent by presenting the same information twice.

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

Completeness4/5

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

The description covers pre-calls (fetch_sweepstakes, fetch_rules, count_participants), validation constraints, critical warnings, and post-drawing steps (fetch_winners, calendar event). However, it does not describe the return value or output format, which is notable since there is no output schema. Otherwise, it is highly complete for a complex mutation tool.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description repeats parameter validation details already present in the schema (e.g., 'must be >= 1', 'default: true'). It adds minor context like 'group token to draw from, or "allgroups"', but this is also in the schema. No significant added meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's function: 'Draw winners from a sweepstakes immediately.' It uses a specific verb ('draw'), names the resource ('winners from a sweepstakes'), and distinguishes from siblings like schedule_drawing and fetch_winners by emphasizing immediate execution. The purpose is explicit and unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit pre-call instructions ('Use fetch_sweepstakes first', 'Use fetch_groups'), a detailed 'Pre-calls required' section, and a clear exclusion: 'Cannot draw from paused or archived sweepstakes.' It also includes confirmation steps and warns against drawing without rules. This fully guides when and how to use the tool versus alternatives.

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

fetch_areacodesA
Read-onlyIdempotent
Inspect

Search US telephone area codes by code number or state name. Returns up to 10 results. Omit search to get all area codes.

fetch_areacodes

When to use

Search US telephone area codes by code number or state name. Returns up to 10 results. Omit search to get all area codes.

Parameters to validate before calling

  • search (string, optional) — Search term: area code number or state name (optional, omit to get all)

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term: area code number or state name (optional, omit to get all)
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context about the result limit and the behavior when search is omitted.

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

Conciseness3/5

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

The core description is concise, but the long-form repeats the same information with a heading and parameter section, introducing redundancy.

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

Completeness5/5

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

For a simple read-only lookup with one optional parameter, the description fully covers purpose, usage, behavior, and parameters. No output schema is needed for this straightforward tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the search parameter. The description repeats the same meaning without adding new semantic details.

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

Purpose5/5

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

The description clearly states the tool searches US telephone area codes by code number or state name. The verb 'Search' and specific resource distinguish it from sibling tools like fetch_zipcodes and fetch_states.

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

Usage Guidelines4/5

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

Provides clear context: omit search to get all area codes, and returns up to 10 results. It doesn't explicitly mention alternatives, but the resource scope is self-evident.

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

fetch_billing_consumptionsA
Read-onlyIdempotent
Inspect

Get monthly and yearly billing consumption totals for your account. Shows aggregated usage data from billing transactions and data transfers.

fetch_billing_consumptions

When to use

Get monthly and yearly billing consumption totals for your account. Shows aggregated usage data from billing transactions and data transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about data sources (billing transactions and data transfers) but does not disclose additional behavioral details like time range limitations or response format.

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

Conciseness2/5

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

The description text is repeated verbatim under both '# fetch_billing_consumptions' and '## When to use' headings, creating redundancy without adding information. The core message is concise, but the repetitive structure fails to earn its place.

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

Completeness4/5

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

For a zero-parameter read-only tool, the description adequately explains what it returns (monthly and yearly totals, aggregated from transactions/data transfers). The lack of an output schema and low complexity mean the description is sufficient for the tool's context.

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

Parameters4/5

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

The tool has 0 parameters, making the schema trivial. Baseline for 0 params is 4. The description has no need to explain parameter semantics, as there is nothing to document beyond the empty schema.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('monthly and yearly billing consumption totals') and clarifies it shows 'aggregated usage data from billing transactions and data transfers,' distinguishing it from transaction-level tools like fetch_billing_transactions.

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

Usage Guidelines3/5

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

There is a 'When to use' section, but its content merely restates the tool's purpose without providing explicit guidance on when to use this tool versus alternatives or when not to use it. The context implies use for aggregated totals, but no exclusions or sibling comparisons are given.

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

fetch_billing_transactionsB
Read-onlyIdempotent
Inspect

Get all billing transactions for your account including invoices, amounts, and status. Results are sorted by creation date (newest first).

fetch_billing_transactions

When to use

Get all billing transactions for your account including invoices, amounts, and status. Results are sorted by creation date (newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is known. The description adds the behavioral detail that results are sorted by creation date (newest first), which is helpful, but it does not mention pagination, rate limits, or any other operational caveats.

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

Conciseness3/5

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

The description is short but redundant: the 'When to use' section repeats the main description verbatim. This wastes space and structure could be improved by merging into a single concise statement.

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

Completeness4/5

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

For a simple read-only tool with no parameters and rich annotations, the description is sufficient. It states what data is returned and the sort order. However, it could clarify the distinction from similar billing/wallet transaction tools and whether pagination is handled, but the lack of output schema means the description carries some burden.

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

Parameters4/5

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

The tool has no parameters, so the schema fully covers this aspect. The description does not need to explain parameters, and none are mentioned.

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

Purpose4/5

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

The description clearly states the tool fetches billing transactions for the account, including invoices, amounts, and status. The verb 'Get' and resource 'billing transactions' are specific, but it does not compare with sibling tools like fetch_billing_consumptions or fetch_wallet_transactions, so it lacks differentiation.

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

Usage Guidelines2/5

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

The description includes a 'When to use' section but it restates the exact same sentence as the main description, providing no additional context or exclusions. No alternative tools are mentioned, nor are any scenarios where this tool should be avoided.

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

fetch_calendar_eventsA
Read-onlyIdempotent
Inspect

Get all calendar events for your account. Returns events with their details including dates, times, location, and status. Use them internally for tool chaining but present only human-readable information (titles, dates, times, locations).

fetch_calendar_events

When to use

Get all calendar events for your account. Returns events with their details including dates, times, location, and status. Use them internally for tool chaining but present only human-readable information (titles, dates, times, locations).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds a scoping detail ('your account') and a behavioral note for the agent to present only human-readable information, going beyond what annotations provide. No contradiction.

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

Conciseness3/5

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

The text is short but needlessly repeats itself: the same two sentences appear in the description and again under the 'When to use' heading. The markdown header duplicates the tool name, so the structure is not as tight as it could be.

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

Completeness5/5

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

For a read-only tool with no parameters and no output schema, the description adequately explains what it does, what fields are returned, and how the results should be used. The annotation set is strong, and the invocation is trivially correct. No meaningful information is missing.

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

Parameters4/5

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

The schema has zero parameters, so there is nothing to document. Baseline for 0 params is 4, and the description appropriately does not waste space on parameter details.

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

Purpose5/5

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

The description clearly states it retrieves all calendar events for the account, specifying the resource and scope. It distinguishes from sibling tools like get_calendar_event by the 'all' qualifier, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The 'When to use' heading implies the tool is for fetching all calendar events, but it simply restates the description without naming alternatives or exclusions. There is no explicit guidance on when to choose this over get_calendar_event or other event-related tools.

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

fetch_closed_ticketsA
Read-onlyIdempotent
Inspect

Get closed/resolved support tickets with pagination (20 per page) and search. Returns summary info only — use get_ticket with the case number to get full ticket details including notes, files, and collaborators. Supports filtering by subject/description text, platform (renaissance, api, general, overture, winners), and priority (1=Low, 2=Medium, 3=High).

fetch_closed_tickets

When to use

Get closed/resolved support tickets with pagination (20 per page) and search. Returns summary info only — use get_ticket with the case number to get full ticket details including notes, files, and collaborators. Supports filtering by subject/description text, platform (renaissance, api, general, overture, winners), and priority (1=Low, 2=Medium, 3=High).

Parameters to validate before calling

  • search (string, optional) — Search by subject or description (case-insensitive)

  • platform (string, optional) — Filter by platform: renaissance, api, general, overture, winners

  • priority (number, optional) — one of: 1, 2, 3 — Filter by priority: 1 (Low), 2 (Medium), 3 (High)

  • page (number, optional) — Page number for pagination (default: 1, 20 tickets per page)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1, 20 tickets per page)
searchNoSearch by subject or description (case-insensitive)
platformNoFilter by platform: renaissance, api, general, overture, winners
priorityNoFilter by priority: 1 (Low), 2 (Medium), 3 (High)
Behavior4/5

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

The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so safety is well covered. The description adds useful behavioral context: pagination at 20 per page, summary-only response, and filtering capabilities. This goes beyond the structural hints.

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

Conciseness2/5

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

The first paragraph and the 'When to use' section are verbatim duplicates of the same sentence. The 'Parameters to validate' section also needlessly repeats schema content. The redundancy makes it less concise than it should be.

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

Completeness4/5

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

For a read-only list tool with no output schema, the description covers purpose, usage context, all parameters, and response shape (summary info, paginated). It is complete enough for an agent to invoke correctly, though it could be improved by describing the exact summary fields.

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

Parameters3/5

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

Schema coverage is 100% and the description's 'Parameters to validate' section merely repeats the schema definitions. The priority mapping (1=Low, 2=Medium, 3=High) and platform options are already in the schema, so the description adds no extra semantic value.

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

Purpose5/5

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

The description opens with a specific verb+resource+scope: 'Get closed/resolved support tickets with pagination (20 per page) and search.' It clearly distinguishes itself from siblings like get_ticket by stating it 'Returns summary info only — use get_ticket with the case number to get full ticket details.' This makes the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The 'When to use' section provides clear context: it's for closed/resolved tickets, with an explicit alternative ('use get_ticket with the case number to get full ticket details'). It doesn't explicitly mention fetch_open_tickets, but the sibling name makes it obvious.

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

fetch_countriesA
Read-onlyIdempotent
Inspect

Search countries by name, international dial code, or ISO abbreviation. Returns up to 10 results with English/Spanish names. Omit search to get all countries.

fetch_countries

When to use

Search countries by name, international dial code, or ISO abbreviation. Returns up to 10 results with English/Spanish names. Omit search to get all countries.

Parameters to validate before calling

  • search (string, optional) — Search term: country name, dial code (e.g. "+34"), or ISO code (e.g. "US") (optional, omit to get all)

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term: country name, dial code (e.g. "+34"), or ISO code (e.g. "US") (optional, omit to get all)
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context: 'Returns up to 10 results with English/Spanish names' and 'Omit search to get all countries.' This goes beyond the annotations without contradicting them.

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

Conciseness2/5

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

The description is redundant: the opening paragraph is repeated verbatim under the 'When to use' heading, and the parameter section adds no new information. While the first sentence is clear, the duplication wastes space and could be condensed to a single concise version.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description covers the key aspects: search term types, return limit, language options, and the behavior when search is omitted. It is sufficiently complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% and the description's parameter section merely restates the schema's description for 'search.' No additional meaning is provided beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly identifies the tool's function: 'Search countries by name, international dial code, or ISO abbreviation.' It specifies the resource (countries) and the types of search terms, distinguishing it from sibling tools like fetch_areacodes and fetch_states. The 'Returns up to 10 results' statement adds scope.

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

Usage Guidelines4/5

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

The 'When to use' section provides clear context, explaining search by country name, dial code, or ISO abbreviation, and notes that omitting search returns all countries. It lacks explicit exclusions or alternatives to sibling tools, but the resource-specific language inherently guides selection.

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

fetch_data_transferA
Read-onlyIdempotent
Inspect

Get data transfer records for a specific sweepstakes including bytes transferred, payment status, and rates. Use fetch_sweepstakes first to get the sweepstakes_token.

fetch_data_transfer

When to use

Get data transfer records for a specific sweepstakes including bytes transferred, payment status, and rates. Use fetch_sweepstakes first to get the sweepstakes_token.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token to fetch data transfer records from (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token to fetch data transfer records from (UUID format)
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by naming the prerequisite call and summarizing the returned data (bytes transferred, payment status, rates), going beyond what annotations provide.

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

Conciseness3/5

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

The description is well-structured with headings, but it contains redundant repetition: the first sentence is duplicated verbatim in the 'When to use' section. This wastes space, though the overall length is still short and the sectioning helps readability.

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

Completeness4/5

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

For a simple one-parameter read-only tool with rich annotations, the description is complete: it explains the purpose, prerequisite, and expected data content. It lacks explicit mention of return format or pagination, but the tool's simplicity and the provided details make it sufficiently complete.

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

Parameters3/5

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

The input schema fully describes the single required parameter (sweepstakes_token, UUID format) with 100% coverage. The description repeats the parameter's purpose and adds the prerequisite that the token should come from fetch_sweepstakes, but it does not meaningfully enrich the parameter semantics beyond the schema.

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

Purpose5/5

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

The description states a specific action ('Get data transfer records') and clearly identifies the resource ('sweepstakes') and the data included (bytes transferred, payment status, rates). This clearly distinguishes it from sibling tools like fetch_billing_transactions or fetch_wallet_transactions.

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

Usage Guidelines4/5

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

The description explicitly explains when to use the tool and includes a required pre-call instruction: 'Use fetch_sweepstakes first to get the sweepstakes_token.' It does not mention specific exclusions or alternatives, but the context is clear enough for an agent to select it appropriately.

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

fetch_documentationA
Read-onlyIdempotent
Inspect

Get help and support documentation articles. Supports pagination and search by title or content. Returns up to 10 documents per page.

fetch_documentation

When to use

Get help and support documentation articles. Supports pagination and search by title or content. Returns up to 10 documents per page.

Parameters to validate before calling

  • page (number, optional) — Page number to retrieve (default: 1)

  • limit (number, optional) — Number of documents per page, max 10 (default: 5)

  • search (string, optional) — Search term to filter documents by title or content

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve (default: 1)
limitNoNumber of documents per page, max 10 (default: 5)
searchNoSearch term to filter documents by title or content
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds useful behavioral context by disclosing pagination limits (max 10 per page) and search by title/content, which goes beyond the structured info.

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

Conciseness2/5

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

The description is repetitive: the opening paragraph is duplicated in the 'When to use' section, and the parameter list mirrors the schema. This redundancy violates conciseness—content that should have been kept once is repeated, wasting space and reader attention.

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

Completeness3/5

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

For a simple read-only fetch with safe annotations and complete schema, the description is adequate. It mentions pagination and search, but doesn't describe the structure of returned documents or error scenarios, which would be useful since no output schema is provided.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for each parameter, so the schema already carries the meaning. The description duplicates these parameter explanations without adding new semantic detail, effectively providing no extra value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Get help and support documentation articles' with a specific verb and resource. It also mentions pagination and search, which gives a precise scope. While it doesn't explicitly contrast with siblings, the resource (documentation) is distinct from other fetch_* tools.

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

Usage Guidelines3/5

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

There's a 'When to use' section but it merely restates the main description—'Get help and support documentation articles'—without providing exclusions, prerequisites, or alternatives. The usage is implied by the tool's purpose, but no explicit guidance for choosing this over other tools is given.

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

fetch_filesA
Read-onlyIdempotent
Inspect

List all files in the user's Drive with storage usage, categories, and pagination. Files are sorted by creation date (newest first).

fetch_files

When to use

List all files in the user's Drive with storage usage, categories, and pagination. Files are sorted by creation date (newest first).

Parameters to validate before calling

  • page (number, optional) — Page number (default: 1)

  • limit (number, optional) — Files per page (default: 50, max: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoFiles per page (default: 50, max: 200)
Behavior4/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral context about sorting (newest first), pagination, and the inclusion of storage usage and categories. This augments the safety profile provided by annotations without contradicting them.

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

Conciseness3/5

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

The opening sentence is concise and informative, but the 'When to use' section repeats the same information verbatim, and the parameter section duplicates schema content. This redundancy makes the description less efficient than it could be, though it remains short and readable.

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

Completeness4/5

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

For a simple two-parameter, read-only tool with no output schema, the description covers the essential context: what the tool does, sorting behavior, pagination, and result content. It could add more detail about error handling or response format, but overall it is adequate for the tool's complexity.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters (page, limit) already have clear descriptions with defaults and maximums in the schema. The description's 'Parameters to validate before calling' section simply repeats this information, adding negligible value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's action: 'List all files in the user's Drive' with additional specifics about storage usage, categories, pagination, and sorting. This distinguishes it from sibling fetch_* tools, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The 'When to use' section provides clear context for when to invoke this tool (listing files in Drive). However, it does not explicitly mention exclusions or alternative tools for specific file operations, such as get_file_url or send_file, which would differentiate it further.

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

fetch_groupsA
Read-onlyIdempotent
Inspect

Get all groups from a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Groups are used to organize and segment participants. Use them internally for tool chaining but present only human-readable information (group names, statuses).

fetch_groups

When to use

Get all groups from a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Groups are used to organize and segment participants. Use them internally for tool chaining but present only human-readable information (group names, statuses).

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds context that groups are used for organizing/segmenting participants and that results should only be used internally, which is useful beyond annotations. However, it does not disclose return format or error handling, so the added value is moderate.

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

Conciseness2/5

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

The opening sentence is duplicated verbatim in the 'When to use' section, making the description repetitive. The markdown headings help organization, but redundancy reduces overall conciseness.

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

Completeness3/5

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

With no output schema, the description hints at returning group names and statuses but does not specify the exact response structure or pagination. For a simple one-parameter read tool, it gives enough context for basic use, but gaps remain about the full return payload.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the schema's parameter description verbatim ('The sweepstakes token (UUID format)'). No new meaning is added beyond what the input schema already provides.

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

Purpose5/5

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

The description states 'Get all groups from a sweepstakes' with a specific verb and resource. It clearly distinguishes from sibling tools like create_group or delete_group by focusing on retrieval of all groups.

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

Usage Guidelines4/5

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

It explicitly instructs to call fetch_sweepstakes first to obtain the sweepstakes_token, providing a clear precondition. It also advises using group data internally and presenting only human-readable information, which gives strong usage context. It does not explicitly mention when not to use it, but the pre-call requirement offers sufficient guidance.

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

fetch_notesA
Read-onlyIdempotent
Inspect

Get all notes for your account. Notes are automatically decrypted and returned in reverse chronological order. Use them internally for tool chaining but present only human-readable information (titles, content, dates).

fetch_notes

When to use

Get all notes for your account. Notes are automatically decrypted and returned in reverse chronological order. Use them internally for tool chaining but present only human-readable information (titles, content, dates).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior, but the description adds valuable behavioral context beyond annotations: notes are automatically decrypted, sorted in reverse chronological order, and the output is intended for internal use only, with only human-readable fields presented. This fully discloses the key behavioral traits of the tool.

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

Conciseness3/5

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

The core content is only three sentences, but the same text is repeated verbatim under the '# fetch_notes' heading and the '## When to use' section, which is redundant. The 'When to use' heading implies new guidance but actually duplicates the description, adding unnecessary waste.

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

Completeness5/5

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

For a zero-parameter, low-complexity tool, the description is complete: it states the output scope (all notes for the account), the ordering (reverse chronological), automatic decryption, and how the results should be used. Rich annotations cover safety and idempotency, leaving no meaningful gaps.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is fully covered (100%). The description adds no parameter details because none exist, so the baseline of 4 is appropriate; there is no semantic gap to fill.

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

Purpose5/5

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

The description uses the specific verb 'Get' with the resource 'all notes' and clarifies the account scope, which clearly distinguishes it from siblings like get_note (which likely fetches a single note). It also mentions unique behaviors such as automatic decryption and reverse chronological ordering, making the purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides clear context: this fetches all notes for the account, and the results should be used internally for tool chaining, presenting only human-readable information. It does not explicitly mention alternatives like get_note for retrieving a single note or state when not to use this tool, but the 'all notes' wording implies the distinction from single-note retrieval.

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

fetch_open_ticketsA
Read-onlyIdempotent
Inspect

Get open support tickets with pagination (20 per page) and search. Returns summary info only — use get_ticket with the case number to get full ticket details including notes, files, and collaborators. Supports filtering by subject/description text, platform (renaissance, api, general, overture, winners), and priority (1=Low, 2=Medium, 3=High).

fetch_open_tickets

When to use

Get open support tickets with pagination (20 per page) and search. Returns summary info only — use get_ticket with the case number to get full ticket details including notes, files, and collaborators. Supports filtering by subject/description text, platform (renaissance, api, general, overture, winners), and priority (1=Low, 2=Medium, 3=High).

Parameters to validate before calling

  • search (string, optional) — Search by subject or description (case-insensitive)

  • platform (string, optional) — Filter by platform: renaissance, api, general, overture, winners

  • priority (number, optional) — one of: 1, 2, 3 — Filter by priority: 1 (Low), 2 (Medium), 3 (High)

  • page (number, optional) — Page number for pagination (default: 1, 20 tickets per page)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1, 20 tickets per page)
searchNoSearch by subject or description (case-insensitive)
platformNoFilter by platform: renaissance, api, general, overture, winners
priorityNoFilter by priority: 1 (Low), 2 (Medium), 3 (High)
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds value by disclosing that the tool 'Returns summary info only' and supports pagination/filtering. This goes beyond the structured fields and helps set expectations about the response, though it doesn't cover potential rate limits or auth details.

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

Conciseness3/5

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

The first sentence is front-loaded and clear, but the description is bloated by duplication: the main block and the 'When to use' section are identical, and the parameter list repeats schema contents. While well-structured, not every sentence earns its place, making it less concise than it could be.

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

Completeness5/5

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

The tool has no output schema, but the description explicitly addresses what is returned ('summary info only') and directs users to get_ticket for full details. All parameters, including defaults and filtering options, are covered. For a read-only list tool with rich annotations, the description is complete enough to guide correct use.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already fully documents all four parameters. The description's 'Parameters to validate before calling' section simply repeats the schema descriptions verbatim, adding no new semantic information. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it 'Get[s] open support tickets' with pagination and search, using a specific verb and resource. It distinguishes itself from sibling tools by saying 'Returns summary info only — use get_ticket with the case number to get full ticket details', and the word 'open' differentiates it from fetch_closed_tickets.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (for summary listing of open tickets) and explicitly points to get_ticket as an alternative for full details. However, it doesn't give an explicit 'when not to use' statement or mention fetch_closed_tickets, so it slightly misses the bar for a 5.

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

fetch_participantsA
Read-onlyIdempotent
Inspect

Get a paginated list of participants from a sweepstakes (20 per page). Use fetch_sweepstakes first to get the sweepstakes_token. Supports search by name, email, or phone, and filtering by opt-in date or date range. Results are sorted by creation date (newest first). For full participant details, use get_participant with a specific email, phone, or token. NEVER fabricate or hallucinate participant data — only report what the API returns. Use them internally for tool chaining but present only human-readable information (names, emails, phones, dates).

fetch_participants

When to use

Get a paginated list of participants from a sweepstakes (20 per page). Use fetch_sweepstakes first to get the sweepstakes_token. Supports search by name, email, or phone, and filtering by opt-in date or date range. Results are sorted by creation date (newest first). For full participant details, use get_participant with a specific email, phone, or token. NEVER fabricate or hallucinate participant data — only report what the API returns. Use them internally for tool chaining but present only human-readable information (names, emails, phones, dates).

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • page (number, optional) — Page number for pagination (default: 1, 20 results per page)

  • search (string, optional) — Search by first name, last name, email, or phone number (case-insensitive)

  • opt_in_date (string, optional) — Filter by specific opt-in date (YYYY-MM-DD)

  • start_date (string, optional) — Start of date range filter (YYYY-MM-DD, requires end_date)

  • end_date (string, optional) — End of date range filter (YYYY-MM-DD, requires start_date)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1, 20 results per page)
searchNoSearch by first name, last name, email, or phone number (case-insensitive)
end_dateNoEnd of date range filter (YYYY-MM-DD, requires start_date)
start_dateNoStart of date range filter (YYYY-MM-DD, requires end_date)
opt_in_dateNoFilter by specific opt-in date (YYYY-MM-DD)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds behavioral details: pagination size (20 per page), sorting by creation date (newest first), supported search and date filters, and an instruction to present only human-readable information. This adds value 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.

Conciseness3/5

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

The main paragraph is nearly duplicated in the 'When to use' section, creating redundancy. It is structured with headers and front-loaded with the key summary, but the repetition makes it longer than necessary.

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

Completeness4/5

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

For a read-only paginated list tool with no output schema, the description covers required pre-calls, parameter validation, sorting, search/filter options, and presentation rules. It does not detail the exact return field names, but it addresses the main contextual needs for correct invocation and chaining.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema fully documents all six parameters including interdependencies (start_date requires end_date, etc.). The description repeats this information but does not add new meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Get a paginated list of participants from a sweepstakes (20 per page).' It clearly distinguishes from siblings by stating 'Use fetch_sweepstakes first to get the sweepstakes_token' and 'For full participant details, use get_participant with a specific email, phone, or token.'

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

Usage Guidelines5/5

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

Explicit guidance is provided: pre-call requirement ('Use fetch_sweepstakes first'), alternatives ('For full participant details, use get_participant'), and a strong anti-hallucination directive ('NEVER fabricate or hallucinate participant data'). This tells the agent when and how to use the tool.

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

fetch_rulesA
Read-onlyIdempotent
Inspect

Get all official rules for a sweepstakes including primary and secondary rules. Use fetch_sweepstakes first to get the sweepstakes_token.

fetch_rules

When to use

Get all official rules for a sweepstakes including primary and secondary rules. Use fetch_sweepstakes first to get the sweepstakes_token.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token to fetch rules from (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token to fetch rules from (UUID format)
Behavior4/5

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

Annotations already mark read-only/idempotent. Description adds that the response includes primary and secondary rules and that a token from fetch_sweepstakes is needed. No contradiction.

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

Conciseness3/5

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

The description repeats the primary sentence in the 'When to use' section and several sections restate existing schema info. It could be tightened without losing meaning.

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

Completeness4/5

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

For a simple 1-param read-only fetcher, the description covers purpose, prerequisite, and parameter origin. No output schema, but description states what rules are returned.

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

Parameters4/5

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

Input schema has 100% coverage with the same UUID description. Description reinforces that the token comes from fetch_sweepstakes, adding origin context beyond the schema.

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

Purpose5/5

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

States specific verb 'Get all official rules for a sweepstakes including primary and secondary rules.' This clearly identifies the operation and resource, and differentiates from rule-creation/update/delete siblings.

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

Usage Guidelines4/5

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

Includes an explicit 'When to use' section and a 'Pre-calls required' note directing to fetch_sweepstakes first when given a sweepstakes name instead of a token. Does not explicitly discuss alternative tools, but the context is clear.

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

fetch_scheduled_drawingsA
Read-onlyIdempotent
Inspect

Get all scheduled drawings for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Returns all scheduled drawings regardless of status, sorted by creation date (newest first). Use them internally for tool chaining but present only human-readable information (dates, times, status, winner counts).

fetch_scheduled_drawings

When to use

Get all scheduled drawings for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Returns all scheduled drawings regardless of status, sorted by creation date (newest first). Use them internally for tool chaining but present only human-readable information (dates, times, status, winner counts).

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already declare read-only and idempotent, so the description adds value by disclosing that results are returned regardless of status and sorted newest-first. It also clarifies intended usage (tool chaining, not direct presentation). No contradiction with annotations.

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

Conciseness3/5

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

The description repeats the same sentences in the intro and the 'When to use' section, making it longer than necessary. However, the use of headings does provide some structure, and each section serves a purpose.

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

Completeness4/5

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

Given rich annotations, full schema coverage, and no output schema, the description adequately covers prerequisites, return behavior, and usage context. It doesn't explain edge cases or errors, but these are not critical for this read-only tool.

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

Parameters4/5

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

Schema coverage is 100% with a description for sweepstakes_token. The description enhances this by explaining how to obtain the token (via fetch_sweepstakes), which adds practical meaning beyond the schema's basic UUID format note.

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

Purpose5/5

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

The description clearly states 'Get all scheduled drawings for a sweepstakes' with a specific verb and resource. It distinguishes itself from siblings by focusing on 'scheduled drawings' and adds scope details (all statuses, sorted by creation date), making it unambiguous.

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

Usage Guidelines4/5

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

Explicitly instructs to call fetch_sweepstakes first to obtain the token, and advises using the output internally while presenting only human-readable info. This provides clear when-to-use context, though it doesn't mention alternatives or exclusions.

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

fetch_statesA
Read-onlyIdempotent
Inspect

Get all US states including DC, Puerto Rico, and US territories. Returns full names and two-letter abbreviations.

fetch_states

When to use

Get all US states including DC, Puerto Rico, and US territories. Returns full names and two-letter abbreviations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already state readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value by specifying the exact return format (full names and two-letter abbreviations) and the scope of included territories, which is not present in annotations.

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

Conciseness2/5

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

The description is duplicated: the exact same text appears twice, once at the start and again under the '# fetch_states' and '## When to use' headings. This repetition is wasteful and does not earn its place; a single concise paragraph would suffice.

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

Completeness4/5

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

For a simple, parameterless, read-only tool with no output schema, the description adequately covers the return values (full names and abbreviations) and the scope (US states, DC, PR, territories). It does not detail the exact JSON structure, but given the simplicity, this seems sufficient.

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

Parameters4/5

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

The schema has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed. It correctly implies that no inputs are required.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get all US states including DC, Puerto Rico, and US territories' and specifies the output format ('Returns full names and two-letter abbreviations'). This distinguishes it from sibling tools like fetch_countries and fetch_zipcodes.

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

Usage Guidelines4/5

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

The description includes a 'When to use' heading, but the content simply restates the purpose. It implies the appropriate context (when you need US state data) but does not explicitly mention alternatives or exclusions compared to sibling tools.

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

fetch_sweepstakesA
Read-onlyIdempotent
Inspect

Get all sweepstakes associated with your account. Returns a list of all sweepstakes with their details. Use tokens internally for tool chaining but present only human-readable information (names, dates, statuses) to the user.

fetch_sweepstakes

Get all sweepstakes associated with your account. Returns a list of all sweepstakes with their details. Use tokens internally for tool chaining but present only human-readable information (names, dates, statuses) to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the tool is known to be safe. The description adds value by disclosing that the output contains tokens that should be used internally and that only human-readable information should be presented to users. This is behavioral context beyond the annotations, hence a 4.

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

Conciseness4/5

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

The description is brief and front-loaded with the core action. However, the text is duplicated verbatim (the same sentences appear twice), which introduces redundancy. While this is likely a format artifact, it slightly harms structural clarity. Otherwise, every sentence provides value.

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

Completeness4/5

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

For a no-parameter, read-only list tool, the description covers what it returns ('a list of all sweepstakes with their details') and how to process the results (tokens vs. human-readable). It doesn't specify the exact fields returned, but no output schema exists, and the complexity is low. The presentation guidance adds useful context for an agent.

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

Parameters4/5

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

The tool has 0 parameters, so the baseline is 4. The description correctly omits parameter details, and with 100% schema coverage (vacuously), there is nothing missing. No inconsistencies or gaps are present.

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

Purpose5/5

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

The description clearly states 'Get all sweepstakes associated with your account' with a specific verb and resource, and scopes it to the user's account. This distinguishes it from other fetch_* sibling tools like fetch_participants or fetch_rules. The purpose is unambiguous and actionable.

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

Usage Guidelines4/5

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

The description implies when to use the tool: when you need all sweepstakes for the account. It also provides guidance on how to use the output ('Use tokens internally for tool chaining but present only human-readable information'). However, it doesn't explicitly mention alternatives or exclusions, 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.

fetch_timezonesA
Read-onlyIdempotent
Inspect

Get all available timezones with IANA identifiers, abbreviations, and UTC offsets. Use this tool whenever a timezone needs to be determined for any operation. DEFAULT: If the correct timezone cannot be determined, always use TimezoneId 7 (Eastern Standard Time - America/New_York).

fetch_timezones

When to use

Get all available timezones with IANA identifiers, abbreviations, and UTC offsets. Use this tool whenever a timezone needs to be determined for any operation. DEFAULT: If the correct timezone cannot be determined, always use TimezoneId 7 (Eastern Standard Time - America/New_York).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds a valuable behavioral nuance: the DEFAULT timezone fallback rule, which is not inferable from annotations. It does not repeat annotation info.

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

Conciseness5/5

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

The description is concise and front-loaded with the core action. It uses only a few sentences to convey purpose, usage, and a default fallback. No filler or redundancy (the repetition in the input is a formatting artifact; the actual description is tightly written).

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

Completeness5/5

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

Given zero parameters, rich annotations, and no output schema, the description provides complete context: it lists the kind of data returned (IANA identifiers, abbreviations, UTC offsets), specifies 'all available' (no filtering), and includes the default fallback value. This is sufficient for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (by triviality). The description needs no parameter explanations. With 0 params, the baseline is 4, and the description does not attempt to add unnecessary parameter context.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get all available timezones with IANA identifiers, abbreviations, and UTC offsets.' This is a specific verb+resource combination that distinguishes it from sibling reference tools like fetch_countries or fetch_states.

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

Usage Guidelines5/5

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

The description explicitly states when to use: 'Use this tool whenever a timezone needs to be determined for any operation.' It also provides a fallback rule (TimezoneId 7) when the correct timezone cannot be determined, giving clear contextual guidance.

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

fetch_todosA
Read-onlyIdempotent
Inspect

Get all To-Do items with pagination (20 per page), search, and advanced filters. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API.

fetch_todos

When to use

Get all To-Do items with pagination (20 per page), search, and advanced filters. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API.

Parameters to validate before calling

  • page (number, optional) — Page number (default: 1, 20 items per page).

  • search (string, optional) — Search by title or description (case-insensitive).

  • status (string, optional) — one of: pending, completed — Filter by status: "pending" or "completed".

  • priority (number, optional) — one of: 1, 2, 3 — Filter by priority: 1 = Low, 2 = Medium, 3 = High.

  • resource (string, optional) — Filter by resource affected (e.g. "renaissance", "api", "aws", "general").

  • pinned (boolean, optional) — Filter pinned items only when true.

  • date_from (string, optional) — Start date filter in ISO 8601 format (e.g. "2026-01-01").

  • date_to (string, optional) — End date filter in ISO 8601 format (e.g. "2026-12-31").

  • year (number, optional) — Filter by creation year (ignored if date_from/date_to provided).

  • month (number, optional) — Filter by creation month 1-12 (requires year parameter).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1, 20 items per page).
yearNoFilter by creation year (ignored if date_from/date_to provided).
monthNoFilter by creation month 1-12 (requires year parameter).
pinnedNoFilter pinned items only when true.
searchNoSearch by title or description (case-insensitive).
statusNoFilter by status: "pending" or "completed".
date_toNoEnd date filter in ISO 8601 format (e.g. "2026-12-31").
priorityNoFilter by priority: 1 = Low, 2 = Medium, 3 = High.
resourceNoFilter by resource affected (e.g. "renaissance", "api", "aws", "general").
date_fromNoStart date filter in ISO 8601 format (e.g. "2026-01-01").
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive hints. The description adds valuable behavioral context: admin privileges required, 403 for non-admins, and pagination defaults. No contradictions with annotations.

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

Conciseness3/5

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

The description is well-structured with headings but is verbose and redundant, repeating the same main sentence twice and duplicating the schema's parameter descriptions. It would be more concise by keeping only the core sentence and admin warning.

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

Completeness4/5

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

With no output schema, the description reasonably covers purpose, admin restriction, pagination, and all parameter details. It doesn't describe the response format, but the tool's name and read-only behavior imply the return of todo items.

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

Parameters3/5

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

All 10 parameters are fully described in the input schema, and the description's parameter list largely duplicates that information without adding new semantic meaning. Since schema coverage is 100%, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves all To-Do items with pagination, search, and advanced filters. It specifies the resource and operation, distinguishing it from create/update/delete todo tools.

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

Usage Guidelines4/5

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

The description includes a 'When to use' section and clearly notes the ADMIN ONLY restriction, which is a key usage condition. It doesn't explicitly mention alternative tools or exclusions, but the purpose is unambiguous given the tool name and sibling context.

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

fetch_wallet_transactionsA
Read-onlyIdempotent
Inspect

Get all wallet transactions for your account including credits, debits, and payment details.

fetch_wallet_transactions

When to use

Get all wallet transactions for your account including credits, debits, and payment details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds minor context by indicating account-level scoping and the types of transactions included, but it does not disclose other behavioral aspects such as pagination, rate limits, or whether 'all' means unbounded result sizes. With annotations present, the added value is marginal but not entirely absent.

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

Conciseness2/5

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

The description is repetitive: the same sentence appears twice, once in the opening and again under the '## When to use' heading. The markdown headings add no new information, and the repeated sentence wastes space. A single sentence would have been sufficient and more concise.

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

Completeness4/5

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

For a parameterless read-only tool, the description adequately states what the tool returns ('all wallet transactions') and its scope. There is no output schema, but the description does not need to explain return values in detail given the simplicity of the operation. The main gap is the lack of any distinction from the similarly named fetch_billing_transactions, but this is not required for completeness of the description itself.

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

Parameters4/5

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

The input schema has zero parameters, so there is no parametric explanation needed. The baseline for no parameters is 4, and the description appropriately adds no extraneous parameter-related information.

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

Purpose5/5

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

The description states a specific verb ('Get'), a resource ('wallet transactions'), and scope ('for your account'), while also enumerating content ('credits, debits, and payment details'). This clearly distinguishes it from sibling tools like fetch_billing_transactions.

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

Usage Guidelines2/5

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

Although there is a '## When to use' heading, the text under it simply repeats the main description. There is no explicit guidance on when to choose this tool over alternatives, no exclusions, and no mention of scenarios where another tool (e.g., fetch_billing_transactions) 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.

fetch_winnersA
Read-onlyIdempotent
Inspect

Get winners from a sweepstakes with pagination. Use fetch_sweepstakes first to get the sweepstakes_token. Winners are sorted by draw date (most recent first). Supports search by email or phone. Use them internally for tool chaining but present only human-readable information (names, emails, draw dates).

fetch_winners

When to use

Get winners from a sweepstakes with pagination. Use fetch_sweepstakes first to get the sweepstakes_token. Winners are sorted by draw date (most recent first). Supports search by email or phone. Use them internally for tool chaining but present only human-readable information (names, emails, draw dates).

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • page (number, optional) — Page number for pagination (default: 1)

  • items_per_page (number, optional) — Results per page (default: 10)

  • search (string, optional) — Search filter for email or phone number (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1)
searchNoSearch filter for email or phone number (optional)
items_per_pageNoResults per page (default: 10)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: winners are sorted by draw date (most recent first), supports search by email or phone, and advises using raw data internally while presenting only human-readable names, emails, and draw dates. This goes beyond the annotation hints.

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

Conciseness3/5

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

The description is structured with sections (title, When to use, Pre-calls, Parameters) which aids navigation, but it unnecessarily repeats the opening paragraph verbatim in the 'When to use' section. This redundancy makes it longer than needed, though the front-loaded summary does provide immediate clarity.

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

Completeness4/5

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

The tool has no output schema, so the description carries the burden of explaining return-related context. It adequately covers prerequisites (fetch_sweepstakes), pagination defaults, sorting behavior, search capability, and how to present results. Given the read-only nature and modest complexity, this is sufficiently complete, though it could mention error scenarios or rate limits.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description includes a 'Parameters to validate before calling' section that mirrors the schema's parameter descriptions (e.g., sweepstakes_token UUID format, default values for page and items_per_page). It adds minimal new meaning beyond the schema, except framing these as validations to perform before calling, which is a minor semantic addition.

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

Purpose5/5

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

The description clearly states 'Get winners from a sweepstakes with pagination', using a specific verb and resource. It further distinguishes itself from siblings like 'draw_winners' (which creates winners) and 'fetch_sweepstakes' (which retrieves sweepstakes) by focusing on retrieving existing winners. The mention of sorting by draw date adds scope specificity.

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

Usage Guidelines4/5

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

The description explicitly instructs to 'Use fetch_sweepstakes first to get the sweepstakes_token' and includes a 'Pre-calls required' section detailing the prerequisite. It also gives guidance on handling results ('Use them internally for tool chaining but present only human-readable information'). While it doesn't explicitly mention when NOT to use it or alternatives, the context is clear and actionable.

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

fetch_zipcodesA
Read-onlyIdempotent
Inspect

Search US zip codes by zip code, city, or state name. Returns up to 10 results with city and state details.

fetch_zipcodes

When to use

Search US zip codes by zip code, city, or state name. Returns up to 10 results with city and state details.

Parameters to validate before calling

  • search (string, required) — Search term: zip code, city name, or state name (case-insensitive)

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYesSearch term: zip code, city name, or state name (case-insensitive)
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral details: 'Returns up to 10 results' and 'case-insensitive' search, which are not present in the annotations. No contradictions detected.

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

Conciseness3/5

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

The description is front-loaded with the core purpose, but it redundantly repeats the same sentence under 'When to use' and the parameter details mirror the schema. This unnecessary duplication prevents a higher conciseness score.

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

Completeness4/5

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

For a single-parameter search tool with no output schema, the description provides essential context: result cap (10) and the nature of results (city and state details). While more detail on response fields would be helpful, the low complexity and strong annotations make this sufficiently complete.

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

Parameters3/5

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

The input schema already fully describes the 'search' parameter with identical wording. The description's parameter section adds nothing beyond the schema. Baseline 3 applies since schema coverage is 100%.

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

Purpose5/5

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

The description clearly states the tool's function: 'Search US zip codes by zip code, city, or state name.' It specifies the resource (US zip codes), the action (search), and the input modes, distinguishing it from sibling tools like fetch_states and fetch_areacodes.

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

Usage Guidelines3/5

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

The 'When to use' section reiterates the purpose but does not explicitly contrast with alternatives or mention exclusion conditions. Usage context is clear, but no specific guidance is given about when to prefer this tool over other fetch_* tools, making it implied rather than explicit.

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

get_businessA
Read-onlyIdempotent
Inspect

Get business information for a Sweeppea account. Returns company details, address, and business settings.

get_business

When to use

Get business information for a Sweeppea account. Returns company details, address, and business settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare this as readOnly, openWorld, idempotent, and non-destructive, so the safety profile is covered. The description adds context about the returned data (company details, address, business settings) but does not disclose additional behavioral traits such as authentication requirements, potential errors, or any constraints beyond the scope of a zero-parameter read operation.

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

Conciseness2/5

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

The description is short but redundant: the same two sentences appear both in the opening and under '## When to use'. This duplication does not add value and wastes space. A single concise expression would be more effective.

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

Completeness4/5

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

Given the tool's simplicity (zero parameters, read-only, rich annotations), the description provides a sufficient overview. It clearly names the primary outputs, which is adequate for an agent to understand what the tool does. However, the phrase 'business settings' is somewhat vague, and since there is no output schema, a more detailed enumeration of return fields would improve completeness.

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

Parameters4/5

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

The tool accepts no parameters, so the input schema is fully covered. According to the baseline for zero-parameter tools, this score is appropriate. The description mentions the output categories, which indirectly clarifies what the operation retrieves, but no parameter details are needed.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get business information for a Sweeppea account' and specifies the output categories (company details, address, business settings). It uses a specific verb and resource, and it is distinguishable from sibling tools like get_profile or get_plan, as it targets business-level data.

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

Usage Guidelines2/5

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

Although the description includes a '## When to use' heading, the content is a verbatim repetition of the initial description and provides no practical guidance on when to choose this tool over alternatives. It does not mention exclusions, prerequisites, or alternative tools, leaving the reader without clear direction on usage context.

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

get_calendar_eventA
Read-onlyIdempotent
Inspect

Get a single calendar event by its token. Use fetch_calendar_events first to get event tokens.

get_calendar_event

When to use

Get a single calendar event by its token. Use fetch_calendar_events first to get event tokens.

Parameters to validate before calling

  • event_token (string, required) — The event token (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
event_tokenYesThe event token (UUID format)
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety profile. Description adds only the workflow hint to fetch tokens first; no details on return format or error cases.

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

Conciseness2/5

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

The core sentence is repeated three times across the description, headings, and 'When to use' section. Significant redundancy for a one-parameter tool; could be one sentence.

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

Completeness3/5

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

Provides the essential usage and parameter validation, but omits return value details or error handling. Since there is no output schema, the description should cover this but does not.

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

Parameters3/5

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

Schema fully describes event_token (type, required, description). Description only repeats the same schema text, adding no additional semantic context.

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

Purpose5/5

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

Clearly states it retrieves a single calendar event by token. Distinguishes from fetch_calendar_events, which lists events, by explicitly stating 'a single' and the need for a token.

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

Usage Guidelines4/5

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

Explicitly instructs to use fetch_calendar_events first to get event tokens, providing clear workflow context. Lacks explicit 'when not to use' but the prerequisite is helpful.

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

get_entry_fieldsA
Read-onlyIdempotent
Inspect

Get all form fields for a sweepstakes entry page. Use fetch_sweepstakes first to get the sweepstakes_token. Call this before add_participant to discover required fields. Returns field names, types, and whether they are required.

get_entry_fields

When to use

Get all form fields for a sweepstakes entry page. Use fetch_sweepstakes first to get the sweepstakes_token. Call this before add_participant to discover required fields. Returns field names, types, and whether they are required.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds meaningful context beyond annotations by revealing the return content ('Returns field names, types, and whether they are required') and the dependency on fetch_sweepstakes. No contradictions with annotations.

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

Conciseness3/5

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

The description is well-structured with headers and sections, but the content is redundant: the first paragraph is nearly identical to the 'When to use' section. This duplication wastes space and slightly blurs the document. Still, it is not excessively verbose.

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

Completeness5/5

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

For a tool with one parameter and no output schema, the description is complete: it states what it returns, the required precondition, and the intended workflow position relative to other tools. No gaps linger.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, with the parameter description already stating 'The sweepstakes token (UUID format)'. The tool description's Parameters section repeats exactly this, adding no new semantic value. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get all form fields for a sweepstakes entry page.' It uses a specific verb+resource construction and explicitly distinguishes its role from related tools by noting it should be called before add_participant to discover required fields.

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

Usage Guidelines5/5

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

Usage guidance is explicit: 'Use fetch_sweepstakes first to get the sweepstakes_token' and 'Call this before add_participant to discover required fields.' It also provides a concrete pre-call condition: 'fetch_sweepstakes if the user gave you a sweepstakes name instead of a token.'

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

get_entry_settingsA
Read-onlyIdempotent
Inspect

Get entry page settings for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Returns all configuration: display, colors, spacing, entry settings, compliance, confirmation page, winners page, age gate, AMOE, geolocation, analytics, social media follows, sharing rewards, bonus entries, and sponsor profiles. Use this before update_entry_settings to see current values.

get_entry_settings

When to use

Get entry page settings for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. Returns all configuration: display, colors, spacing, entry settings, compliance, confirmation page, winners page, age gate, AMOE, geolocation, analytics, social media follows, sharing rewards, bonus entries, and sponsor profiles. Use this before update_entry_settings to see current values.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by stating this is a read operation that returns all configuration and is a precursor to updates. No contradictions exist, and the description is consistent with the annotations.

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

Conciseness3/5

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

The description is somewhat redundant: the initial paragraph and the 'When to use' section repeat the same information verbatim. The 'Parameters to validate' section unnecessarily restates the schema. While the structure with headings is clear, the duplication wastes space.

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

Completeness4/5

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

For a single-parameter read-only tool with no output schema, the description sufficiently covers return scope by enumerating the many configuration areas (display, colors, compliance, etc.), the required pre-call, and its role before updating. It lacks error handling details but is complete for its simplicity.

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

Parameters4/5

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

The schema already covers 100% of the single parameter with a clear description. The tool description adds value by explaining that the token comes from fetch_sweepstakes and is a required pre-call, enriching the parameter's origin and usage beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get entry page settings for a sweepstakes.' It lists the extensive set of configuration categories returned, distinguishing it from sibling tools like update_entry_settings (which modifies) and fetch_sweepstakes (which fetches sweepstakes data, not settings).

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

Usage Guidelines5/5

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

The description explicitly instructs to use fetch_sweepstakes first to obtain the sweepstakes_token and to use this tool before update_entry_settings to see current values. This provides clear when-to-use guidance and a required pre-call, fully addressing usage context.

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

get_file_urlA
Read-onlyIdempotent
Inspect

Generate a short-lived presigned S3 URL to download or preview a file from the user's Drive. The URL embeds the correct Content-Type and Content-Disposition headers, and the actual transfer happens directly between the client and S3 (no data transfer cost on this endpoint).

get_file_url

When to use

Generate a short-lived presigned S3 URL to download or preview a file from the user's Drive. The URL embeds the correct Content-Type and Content-Disposition headers, and the actual transfer happens directly between the client and S3 (no data transfer cost on this endpoint).

Parameters to validate before calling

  • file_token (string, required) — The file token (UUID) of the file to generate a URL for. Get via fetch_files.

  • mode (string, optional) — one of: preview, download — URL behavior: "preview" (inline, default) opens the file in the browser; "download" forces a file attachment download.

  • expires_in (number, optional) — range: 60–3600 — URL lifetime in seconds. Range: 60-3600. Default: 900 (15 minutes).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoURL behavior: "preview" (inline, default) opens the file in the browser; "download" forces a file attachment download.
expires_inNoURL lifetime in seconds. Range: 60-3600. Default: 900 (15 minutes).
file_tokenYesThe file token (UUID) of the file to generate a URL for. Get via fetch_files.
Behavior5/5

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

The description goes beyond the annotations (readOnlyHint, idempotentHint) by disclosing that the URL is short-lived, presigned, embeds Content-Type and Content-Disposition headers, and that transfer occurs directly between client and S3, avoiding data transfer costs. This is valuable behavioral context not present in 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.

Conciseness2/5

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

The description is padded with redundant sections: the opening definition is repeated verbatim under 'When to use', and the parameter details are duplicated from the schema. While structured, it is unnecessarily verbose and fails to keep each sentence purposeful.

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

Completeness4/5

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

For a read-only tool with no output schema, the description adequately covers purpose, parameters, behavior, and benefits. The absence of an explicit return-value description is acceptable since the URL is clearly implied. It loses one point for the redundant structure that does not add completeness.

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

Parameters3/5

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

The input schema provides 100% coverage with detailed descriptions for all three parameters. The description restates these parameters but adds no new information beyond what annotations/schema already supply. The baseline of 3 is appropriate; the schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb ('generate') and names the precise resource ('short-lived presigned S3 URL') and action ('download or preview a file'). It clearly distinguishes itself from sibling tools like send_file or upload_file by focusing on URL generation for preview/download.

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

Usage Guidelines3/5

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

The 'When to use' section restates the main purpose but does not to explicitly contrast this tool with alternatives like send_file or fetch_files. There is no 'when not to use' guidance, though the benefit of 'no data transfer cost' implies a context for choosing this over direct transfer.

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

get_noteA
Read-onlyIdempotent
Inspect

Fetch a single note by its token. Use fetch_notes first to get the note_token. The note content is automatically decrypted in the response.

get_note

When to use

Fetch a single note by its token. Use fetch_notes first to get the note_token. The note content is automatically decrypted in the response.

Parameters to validate before calling

  • note_token (string, required) — The unique token (UUID) of the note to retrieve

ParametersJSON Schema
NameRequiredDescriptionDefault
note_tokenYesThe unique token (UUID) of the note to retrieve
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds a valuable behavioral detail: 'The note content is automatically decrypted in the response', which informs the agent about response content and data sensitivity. This goes 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.

Conciseness3/5

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

The description is short and front-loaded, but it repeats the exact same sentence in the opening paragraph and the 'When to use' section. This redundancy wastes space, preventing a higher score.

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

Completeness4/5

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

For a simple single-parameter tool, the description covers purpose, prerequisite, and a key behavioral aspect (decryption). With no output schema, it could explain return structure, but the essential information is present and sufficient for correct invocation.

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

Parameters3/5

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

With 100% schema description coverage, the schema already fully documents the note_token parameter. The description repeats the same definition without adding new meaning, so it meets the baseline but does not enhance it.

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

Purpose5/5

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

The description explicitly states 'Fetch a single note by its token', using a specific verb and resource. It distinguishes from fetch_notes by instructing to use fetch_notes first to obtain the token, clearly positioning this as the single-note retrieval tool.

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

Usage Guidelines4/5

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

Provides clear context: 'Use fetch_notes first to get the note_token'. This gives a prerequisite and implies when to use this tool. However, it does not explicitly mention exclusions or alternative tools for different scenarios, stopping short of a 5.

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

get_participantA
Read-onlyIdempotent
Inspect

Fetch full details of a single participant from a sweepstakes by token, email, or phone. At least one search parameter is required. Use fetch_sweepstakes first to get the sweepstakes_token. For listing participants, use fetch_participants instead. NEVER fabricate, invent, or hallucinate participant data under any circumstance. If no result is returned by the API, report exactly that — do not guess names, emails, or counts. Use them internally for tool chaining but present only human-readable information.

get_participant

When to use

Fetch full details of a single participant from a sweepstakes by token, email, or phone. At least one search parameter is required. Use fetch_sweepstakes first to get the sweepstakes_token. For listing participants, use fetch_participants instead. NEVER fabricate, invent, or hallucinate participant data under any circumstance. If no result is returned by the API, report exactly that — do not guess names, emails, or counts. Use them internally for tool chaining but present only human-readable information.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • participant_token (string, optional) — The participant token (UUID format) - use this OR email OR phone

  • email (string, optional) — Participant email address - use this OR participant_token OR phone

  • phone (string, optional) — Participant phone number (10 digits) - use this OR participant_token OR email

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoParticipant email address - use this OR participant_token OR phone
phoneNoParticipant phone number (10 digits) - use this OR participant_token OR email
participant_tokenNoThe participant token (UUID format) - use this OR email OR phone
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already declare read-only and idempotent behavior, and the description adds a valuable anti-hallucination directive: 'NEVER fabricate, invent, or hallucinate participant data' and 'If no result is returned by the API, report exactly that.' It also clarifies that tokens are for internal chaining while only human-readable information should be presented, which goes beyond the annotation baseline.

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

Conciseness2/5

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

The description is bloated and repetitive. The opening paragraph is restated almost verbatim under '# get_participant' and '## When to use,' and the parameter validation section duplicates the input schema's descriptions. This redundancy wastes tokens and makes the description longer than necessary, though the headings do provide some organization.

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

Completeness4/5

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

Despite the repetition, the description covers key contextual needs: pre-calls, required search parameter, alternative tools, and behavior in no-result scenarios. The lack of an output schema is partially mitigated by the phrase 'Fetch full details' and the caution about not guessing names, emails, or counts, giving an agent enough context to use the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the cross-parameter constraint 'At least one search parameter is required,' which is not captured by the schema's individual parameter descriptions. However, much of the parameter section simply repeats the schema text, so the added value is modest.

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

Purpose5/5

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

The description opens with 'Fetch full details of a single participant from a sweepstakes by token, email, or phone,' which clearly identifies the resource, action, and search modalities. It also explicitly differentiates from sibling tools by directing list operations to fetch_participants and prerequisite fetch_sweepstakes.

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

Usage Guidelines5/5

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

Provides explicit when-to-use context: requires the sweepstakes token, states 'At least one search parameter is required,' and names the exact alternative for listing participants ('For listing participants, use fetch_participants instead'). It also lists a pre-call requirement, giving an agent clear invocation sequencing.

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

get_planA
Read-onlyIdempotent
Inspect

Get the current account's plan and usage telemetry. Returns the AUTHORITATIVE plan limits AND real-time usage so you can warn the user when they are approaching a cap. Key fields: plan.Name (plan name to mention to the user), plan.Settings.MaxSweepstakesAllowed (single cap on TOTAL sweepstakes — there is NO separate active vs total limit, the API treats them as one count), plan.Settings.MaxParticipantsAllowed, plan.Settings.MaxStorageSize (GB), plan.Settings.MaxApiCallsAllowed, plan.Settings.SubscriptionPrice; telemetry.DataConsumed (GB used now), telemetry.APICalls (calls used this period). Each account can have a custom plan — these values OVERRIDE any default numbers mentioned in other tool descriptions or instructions. Call this once per session before creating/cloning sweepstakes, before quoting limits or usage to the user, or when the user asks about pricing, billing, or feature availability.

get_plan

When to call

BEFORE: creating/cloning a sweepstakes, quoting limits or usage to the user, suggesting an upgrade, or answering questions about pricing, billing, or which features are enabled.

ONCE per session — cache the result mentally; the response rarely changes mid-session.

Why authoritative

plan.Settings.MaxSweepstakesAllowed is a SINGLE per-account cap. The API does NOT distinguish "active" from "total" — there is only one count.

Different accounts can have very different plans (admin, enterprise, default). Always trust the values returned by this tool over any number mentioned elsewhere in tool descriptions or instructions.

Reading the response

  • plan.Name — say this name to the user when discussing limits (e.g. "your plan 'X' allows...")

  • plan.Settings.MaxSweepstakesAllowed — total sweepstakes cap

  • plan.Settings.MaxParticipantsAllowed — total participants in the account

  • plan.Settings.MaxStorageSize — GB

  • plan.Settings.MaxApiCallsAllowed — API call quota

  • plan.Settings.PaidModule* (15 booleans) — which features are enabled vs gated

  • telemetry.DataConsumed — GB used now (compare against MaxStorageSize)

  • telemetry.APICalls — calls used this period (compare against MaxApiCallsAllowed)

If usage is >= 80% of any cap, warn the user proactively.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses that plan settings override defaults, that there's no separate active vs total cap, and that plans can be custom. It also explains how to interpret the response, including the warning at 80%, adding valuable behavioral context the annotations do not provide.

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

Conciseness4/5

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

The description is front-loaded with a clear summary and organized into sections with bullet points. However, it is verbose and somewhat redundant (e.g., 'AUTHORITATIVE' repeated, and the reading-response section restates fields already introduced). Still, the structure aids comprehension.

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

Completeness5/5

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

With no output schema, the description fully compensates by detailing every relevant field, including booleans for paid modules and telemetry comparisons. It covers when-to-call, interpretation, and edge cases (single cap, overrides), making it complete for an agent to use correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the schema trivially covers 100%. The baseline of 4 for no parameters applies; the description focuses on return values rather than input semantics, which is appropriate and adds value through field-level explanations.

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

Purpose5/5

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

The description opens with a clear action verb 'Get' and specific resource 'current account's plan and usage telemetry.' It distinguishes itself by labeling the data as 'AUTHORITATIVE' and listing key fields, making it distinct from billing or profile tools among siblings.

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

Usage Guidelines5/5

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

It explicitly states when to call ('before creating/cloning sweepstakes, before quoting limits or usage'), when to cache ('once per session'), and provides a proactive warning threshold. It also clarifies to trust this over other sources, giving strong decision context.

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

get_profileA
Read-onlyIdempotent
Inspect

Get user profile information for a Sweeppea account. Returns user details like name, email, and account settings.

get_profile

When to use

Get user profile information for a Sweeppea account. Returns user details like name, email, and account settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing a safe, read-only operation. The description adds minimal behavioral context beyond return content (e.g., user details), but it does not disclose authentication requirements, response format, or potential limitations. This is adequate given the annotation coverage.

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

Conciseness2/5

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

The description is redundant: the opening paragraph is identical to the 'When to use' section, and the heading adds no extra information. This wastes space and makes the description feel padded rather than concise. It could be reduced to a single sentence.

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

Completeness3/5

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

The tool is simple (0 params, no output schema, read-only), and the description provides a reasonable overview. However, it omits context such as whether this returns the authenticated user's profile or how the response is structured. For a basic profile retrieval, this is adequate but not thorough enough to earn a higher score.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty. Per the baseline for 0 params, the description does not need to explain parameters. It adds value by specifying the return fields (name, email, account settings), which is helpful beyond the empty schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get user profile information for a Sweeppea account.' It specifies the resource (user profile) and the return content (name, email, account settings). This distinguishes it from sibling tools like get_business or get_participant, which target different resources.

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

Usage Guidelines3/5

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

The description includes a '## When to use' section, but it merely restates the same purpose sentence and provides no guidance on when to prefer this tool over alternatives or any exclusions. The implied usage is for retrieving the current user's profile, but explicit alternatives are not mentioned.

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

get_ticketA
Read-onlyIdempotent
Inspect

Get full details of a support ticket by case number. Use fetch_open_tickets or fetch_closed_tickets first to find tickets, then use this tool with the case number to get complete information including notes, files, collaborators, and statistics. Present only human-readable information (case number, subject, dates, notes).

get_ticket

When to use

Get full details of a support ticket by case number. Use fetch_open_tickets or fetch_closed_tickets first to find tickets, then use this tool with the case number to get complete information including notes, files, collaborators, and statistics. Present only human-readable information (case number, subject, dates, notes).

Parameters to validate before calling

  • case_number (string, required) — The ticket case number (e.g., "HYXTNJV")

ParametersJSON Schema
NameRequiredDescriptionDefault
case_numberYesThe ticket case number (e.g., "HYXTNJV")
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, etc.), the description adds meaningful behavioral context: it explains the tool returns notes, files, collaborators, and statistics, and instructs the agent to present only human-readable information (case number, subject, dates, notes). This discloses output characteristics and output filtering guidance, which is useful and not contradicted by annotations.

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

Conciseness4/5

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

The description is well-structured with headers and front-loaded key information, but it contains redundancy: the first paragraph is nearly identical to the 'When to use' section. It is still reasonably concise but not perfectly streamlined.

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

Completeness5/5

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

For a simple retrieval tool with one parameter and no output schema, the description is complete. It specifies what the tool returns (notes, files, collaborators, statistics), how to obtain the input (via fetch tools), and how to present the output. This gives the agent enough context to use the tool correctly without gaps.

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

Parameters3/5

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

The schema already includes a full description for the single parameter case_number with an example ('HYXTNJV'). The description duplicates this information without adding new semantics. Since schema coverage is 100%, the baseline is 3, and no extra value is provided by the description.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get full details of a support ticket by case number.' It distinguishes itself from sibling tools by explicitly directing users to fetch_open_tickets or fetch_closed_tickets first, clarifying that this tool is for retrieving complete details rather than listing tickets.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'Use fetch_open_tickets or fetch_closed_tickets first to find tickets, then use this tool with the case number...' It also specifies what to do after retrieval ('Present only human-readable information'), giving clear context for use versus alternatives.

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

health_checkA
Read-onlyIdempotent
Inspect

Verify connection to Sweeppea API and validate your API key. Use this to test if your credentials are working correctly.

health_check

When to use

Verify connection to Sweeppea API and validate your API key. Use this to test if your credentials are working correctly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds the credential validation context but does not disclose return format or failure behavior, which would be useful. It adds some value beyond annotations.

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

Conciseness4/5

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

The description is short and front-loaded, but the same sentence appears twice (once in plain text and once inside a markdown section), introducing redundancy. Still, it earns its place overall with compact messaging.

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

Completeness4/5

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

For a tool with no parameters and no output schema, the description covers the essential purpose and usage context. It does not specify what a successful or failed response looks like, but the tool is simple enough that the current description is nearly complete.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4 per the rubric. The description correctly makes no parameter claims, and the schema is 100% covered by absence of parameters.

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

Purpose5/5

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

The description uses specific verbs 'Verify' and 'validate' with clear objects ('connection to Sweeppea API', 'your API key'). This distinguishes it from sibling tools like fetch_* or hello_world, making the tool's purpose immediately obvious.

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

Usage Guidelines4/5

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

The description explicitly states 'Use this to test if your credentials are working correctly', providing a clear when-to-use context. It does not list alternatives or exclusions, but for a dedicated health check tool this is sufficient guidance.

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

hello_worldB
Read-onlyIdempotent
Inspect

Returns a simple Hello World greeting message

hello_world

When to use

Returns a simple Hello World greeting message in Japanese

Parameters to validate before calling

  • name (string, optional) — Name to include in greeting (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName to include in greeting (optional)
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the useful detail that the greeting is in Japanese, but does not disclose any other behavioral traits or return format. Given the annotations, this modest addition warrants a 3.

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

Conciseness2/5

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

The description is unnecessarily redundant: the opening sentence is repeated in the 'When to use' section, and the parameter section mirrors the schema. Each sentence does not earn its place, and the structure adds little to clarity. The content could be conveyed in one concise sentence.

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

Completeness4/5

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

For a very simple tool with one optional parameter and no output schema, the description sufficiently conveys what it returns and the language. It also leverages the annotations for safety context. However, it omits any detail about the exact format of the greeting, but this is acceptable given the tool's simplicity and the annotations' completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'name' already well described in the input schema. The description repeats the same wording in its parameter section without adding any new meaning, so it provides no value beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Returns') and a concrete resource ('a simple Hello World greeting message'). It also specifies the language as Japanese, which helps distinguish it from any potential generic greeting utilities. Despite lacking explicit sibling differentiation, there is no ambiguity about what this tool does.

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

Usage Guidelines2/5

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

The 'When to use' section merely restates the tool's purpose ('Returns a simple Hello World greeting message in Japanese') and provides no guidance on when to choose this tool over alternatives, nor any exclusions or prerequisites. This is essentially a tautology and offers no actionable usage direction.

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

pause_sweepstakesA
Idempotent
Inspect

Pause a sweepstakes, setting it to inactive status while preserving all data. Use fetch_sweepstakes first to get the sweepstakes_token. Participants will not be able to enter while paused.

pause_sweepstakes

When to use

Pause a sweepstakes, setting it to inactive status while preserving all data. Use fetch_sweepstakes first to get the sweepstakes_token. Participants will not be able to enter while paused.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The unique identifier (token) of the sweepstakes to pause

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe unique identifier (token) of the sweepstakes to pause
Behavior5/5

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

Annotations indicate this is a mutation (readOnlyHint=false) but non-destructive (destructiveHint=false). The description adds crucial context: it sets the sweepstakes to inactive, preserves all data, and blocks participant entries. It also mentions the prerequisite fetch_sweepstakes call, which goes beyond annotation data.

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

Conciseness4/5

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

The description is well-structured with headings and bullet points, but there is noticeable repetition: the opening paragraph and the 'When to use' section contain nearly identical sentences. This slightly reduces conciseness, though overall it remains clear and scannable.

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

Completeness5/5

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

For a simple one-parameter tool with no output schema, the description covers purpose, prerequisites, effect on participants, and data preservation. It is sufficiently complete for an agent to use the tool correctly without additional context.

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

Parameters4/5

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

The schema provides 100% coverage, including a description for sweepstakes_token. The description adds value by explaining how to obtain the token via fetch_sweepstakes and confirming it is the unique identifier required for pausing, thus enriching the schema information.

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

Purpose5/5

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

The description clearly states the tool's function: 'Pause a sweepstakes, setting it to inactive status while preserving all data.' It distinguishes itself from destructive alternatives by emphasizing data preservation, and from unpause_sweepstakes by specifying the inactive status.

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

Usage Guidelines5/5

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

The description explicitly provides 'When to use' guidance, states the requirement to call fetch_sweepstakes first to obtain the sweepstakes_token, and notes that participants will not be able to enter while paused. This gives clear context for when to use the tool.

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

resolve_ticketA
Idempotent
Inspect

Close/resolve an open support ticket. Use fetch_open_tickets first to get the case_id.

resolve_ticket

When to use

Close/resolve an open support ticket. Use fetch_open_tickets first to get the case_id.

Parameters to validate before calling

  • case_id (string, required) — The case number of the ticket to close (e.g., "ABC1234")

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYesThe case number of the ticket to close (e.g., "ABC1234")
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds that the ticket must be open and that fetch_open_tickets should be used first, which is context beyond annotations. 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.

Conciseness3/5

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

The description is short but repeats the same sentence twice: 'Close/resolve an open support ticket' appears in both the opening and the 'When to use' section. This redundancy is unnecessary, though the overall length is acceptable.

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

Completeness4/5

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

For a simple one-parameter mutation tool, the description covers the workflow, prerequisite, and parameter semantics. It does not mention error conditions or return values, but the idempotent and non-destructive hints from annotations fill in safety context. Overall, complete enough.

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

Parameters4/5

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

Schema coverage is 100%, so the schema fully documents case_id. The description adds the note 'Use fetch_open_tickets first to get the case_id,' which helps the agent locate the parameter value. Baseline 3 plus this extra context gives a 4.

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

Purpose5/5

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

The description begins with 'Close/resolve an open support ticket,' using a specific verb and resource. It distinguishes resolve from siblings like update_ticket and delete_ticket by focusing on closing/resolving an open case, and it references fetch_open_tickets for obtaining the ID.

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

Usage Guidelines4/5

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

It explicitly states 'Use fetch_open_tickets first to get the case_id,' providing a clear prerequisite. However, it does not mention alternative tools like update_ticket or delete_ticket, so it lacks explicit when-not guidance.

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

schedule_drawingAInspect

Schedule a future winner drawing for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, and fetch_groups for group tokens. CRITICAL: This is a production operation. ALWAYS confirm with the user before scheduling. Requires at least one eligible participant. Winner count cannot exceed available participants. Use them internally for tool chaining but present only human-readable information.

schedule_drawing

When to use

Schedule a future winner drawing for a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, and fetch_groups for group tokens. CRITICAL: This is a production operation. ALWAYS confirm with the user before scheduling. Requires at least one eligible participant. Winner count cannot exceed available participants. Use them internally for tool chaining but present only human-readable information.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

  2. fetch_rules — Official Rules must exist

  3. Verify the scheduled date is in the future and matches what is stated in the Rules

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • group (string, required) — Group token or "allgroups" for all participants

  • selected_action (number, required) — one of: 1, 2 — Action: 1 = Draw Winners only, 2 = Draw Winners & Notify

  • schedule_mode (string, required) — one of: schedule, settime — Mode: "schedule" for specific date/time, "settime" for time period

  • how_many_winners (number, required) — Number of winners to pick (must be >= 1)

  • end_date (string, required) — Drawing date or period end date (YYYY-MM-DD)

  • end_time (string, required) — Time in HH:mm format (24-hour)

  • timezone (number, required) — Timezone ID (use fetch_timezones to get valid IDs, default: 7 = Eastern)

  • frequency (number, optional) — one of: 0, 1, 2, 3, 4 — Frequency: 0=None, 1=Hourly, 2=Daily, 3=Weekly, 4=Monthly (default: 0)

  • day_of_the_week (number, optional) — Day of week: 1=Sunday through 7=Saturday (for weekly/monthly frequency)

  • week_of_the_month (number, optional) — Week of month: 1-4 (for monthly frequency)

  • delivery_time (string, optional) — Delivery time for settime mode (HH:mm)

  • message (string, optional) — Winner notification message (used when selected_action = 2)

  • include_opted_out (boolean, optional) — Include opted-out participants (default: false)

  • publish_to_winners_page (boolean, optional) — Publish winners to public winners page (default: false)

  • send_copy_to_me (boolean, optional) — Email notification to account owner (default: false)

  • exclude_spam (boolean, optional) — Exclude spam-flagged participants (default: true)

  • add_to_calendar (boolean, optional) — Add drawing to calendar (default: false)

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesGroup token or "allgroups" for all participants
messageNoWinner notification message (used when selected_action = 2)
end_dateYesDrawing date or period end date (YYYY-MM-DD)
end_timeYesTime in HH:mm format (24-hour)
timezoneYesTimezone ID (use fetch_timezones to get valid IDs, default: 7 = Eastern)
frequencyNoFrequency: 0=None, 1=Hourly, 2=Daily, 3=Weekly, 4=Monthly (default: 0)
exclude_spamNoExclude spam-flagged participants (default: true)
delivery_timeNoDelivery time for settime mode (HH:mm)
schedule_modeYesMode: "schedule" for specific date/time, "settime" for time period
add_to_calendarNoAdd drawing to calendar (default: false)
day_of_the_weekNoDay of week: 1=Sunday through 7=Saturday (for weekly/monthly frequency)
selected_actionYesAction: 1 = Draw Winners only, 2 = Draw Winners & Notify
send_copy_to_meNoEmail notification to account owner (default: false)
how_many_winnersYesNumber of winners to pick (must be >= 1)
include_opted_outNoInclude opted-out participants (default: false)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
week_of_the_monthNoWeek of month: 1-4 (for monthly frequency)
publish_to_winners_pageNoPublish winners to public winners page (default: false)
Behavior4/5

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

Despite annotations already marking it as non-readonly, the description adds vital behavioral context: 'CRITICAL: This is a production operation. ALWAYS confirm with the user before scheduling.' It also discloses preconditions like eligible participants and winner count limits, which are not derivable from annotations.

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

Conciseness2/5

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

The description is highly redundant: the opening paragraph is repeated verbatim under '# schedule_drawing' and '## When to use.' The parameter list duplicates the schema's property descriptions without adding value. It is far longer than necessary and lacks front-loading efficiency.

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

Completeness4/5

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

Given the complexity (18 parameters, 8 required), the description covers pre-calls, validations, and critical caveats (production operation, confirmation). It doesn't describe return values, but no output schema exists; still, the overall guidance is substantial enough to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes beyond schema by adding cross-parameter constraint: 'Winner count cannot exceed available participants' and 'Requires at least one eligible participant.' It also mentions using fetch_timezones for valid IDs, though that's already in schema. Overall, it slightly enriches parameter semantics.

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

Purpose5/5

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

The description opens with 'Schedule a future winner drawing for a sweepstakes,' a specific verb and resource. It clearly distinguishes from related tools like draw_winners (immediate) and delete_scheduled_drawing (removal).

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

Usage Guidelines5/5

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

Provides explicit pre-calls (fetch_sweepstakes, fetch_groups, fetch_rules), conditions for scheduling (date in future, matches rules), and a critical confirmation requirement. It also instructs to use fetched tokens internally while presenting human-readable info, making usage unambiguous.

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

send_fileAInspect

Send a file from the user's Drive as an email attachment. Max attachment size: 5 MB. Files larger than 5 MB are rejected. The email is sent using the Sweeppea email template. Each transmission is recorded in the file's sharing history. PRIVACY: The recipient email must be provided by the user — never assume or fabricate email addresses.

send_file

When to use

Send a file from the user's Drive as an email attachment. Max attachment size: 5 MB. Files larger than 5 MB are rejected. The email is sent using the Sweeppea email template. Each transmission is recorded in the file's sharing history. PRIVACY: The recipient email must be provided by the user — never assume or fabricate email addresses.

Parameters to validate before calling

  • file_token (string, required) — The file token (UUID) of the file to send. Get via fetch_files.

  • recipient_email (string, required) — Destination email address

  • email_subject (string, optional) — Custom email subject line. Default: "File shared from Sweeppea".

  • email_message (string, optional) — Additional message text for the email body.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_tokenYesThe file token (UUID) of the file to send. Get via fetch_files.
email_messageNoAdditional message text for the email body.
email_subjectNoCustom email subject line. Default: "File shared from Sweeppea".
recipient_emailYesDestination email address
Behavior5/5

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

The description adds substantial behavioral context beyond annotations: max attachment size (5 MB) and rejection behavior, use of a specific email template, recording in sharing history, and a strong privacy guideline about not fabricating recipient emails. This goes well beyond the generic readOnlyHint/destructiveHint flags.

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

Conciseness2/5

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

The description is duplicated: the initial paragraph is repeated under 'When to use', and the parameter list largely mirrors the schema. This redundancy violates the 'every sentence earns its place' principle. It is not concise despite the useful content.

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

Completeness4/5

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

Given 4 params and no output schema, the description covers essential context: purpose, size constraint, template, history logging, privacy, and parameter origins. It lacks success/error return behavior, but for an invocation-focused description this is sufficient. Not perfect, but well-rounded.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3), but the description adds value: it tells the agent to get file_token via fetch_files, stresses that recipient_email must be user-provided (privacy), and clarifies the email_subject default. These enrich parameter understanding beyond simple data types and descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'Send a file from the user's Drive as an email attachment.' This clearly distinguishes it from sibling tools like upload_file or get_file_url. The purpose is unambiguous and action-oriented.

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

Usage Guidelines4/5

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

The 'When to use' section repeats the description rather than giving explicit alternatives. However, it does imply usage context (when a file needs to be emailed) and the parameter note 'Get via fetch_files' provides a prerequisite. No explicit exclusions or alternatives are given, 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.

unpause_sweepstakesA
Idempotent
Inspect

Reactivate a paused sweepstakes, allowing participants to enter again. Use fetch_sweepstakes first to get the sweepstakes_token.

unpause_sweepstakes

When to use

Reactivate a paused sweepstakes, allowing participants to enter again. Use fetch_sweepstakes first to get the sweepstakes_token.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The unique identifier (token) of the sweepstakes to unpause

ParametersJSON Schema
NameRequiredDescriptionDefault
sweepstakes_tokenYesThe unique identifier (token) of the sweepstakes to unpause
Behavior4/5

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

Annotations already indicate readOnly=false, destructive=false, and idempotent=true. The description adds meaningful context by stating the effect (participants can enter again) and the prerequisite call to fetch_sweepstakes, which enhances understanding beyond the raw hint flags. No contradiction detected.

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

Conciseness4/5

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

The description is well-structured with sections, but the opening sentence is unnecessarily repeated in the 'When to use' section, wasting a line. Despite this minor redundancy, it is otherwise concise and front-loaded, earning a 4.

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

Completeness4/5

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

For a simple one-parameter tool, the description covers the action, the scenario, and the required pre-call. It does not describe the return value, but with no output schema and given the tool's simplicity, this is not a major gap. Overall complete enough for reliable invocation.

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

Parameters3/5

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

Schema coverage is 100%, and the description simply restates the parameter description from the schema ('The unique identifier (token) of the sweepstakes to unpause'). It adds no new semantics or usage nuance beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Reactivate a paused sweepstakes, allowing participants to enter again.' It uses a specific verb ('reactivate') and resource ('paused sweepstakes'), and effectively distinguishes from siblings like pause_sweepstakes and create_sweepstakes.

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

Usage Guidelines5/5

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

The description explicitly says to 'Use fetch_sweepstakes first to get the sweepstakes_token' and includes a 'When to use' section. It also explains the pre-call needed when the user provides a name instead of a token, giving clear context for when this tool is appropriate.

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

update_bonus_entriesA
Idempotent
Inspect

Update the bonus entries value for a participant in a sweepstakes. This overwrites the current value. Use get_participant first to check current bonus entries.

update_bonus_entries

When to use

Update the bonus entries value for a participant in a sweepstakes. This overwrites the current value. Use get_participant first to check current bonus entries.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • participant_token (string, required) — The participant token (UUID format)

  • bonus_entries (integer, required) — range: 0–1000000 — New bonus entries value (0-1000000). This overwrites the current value.

ParametersJSON Schema
NameRequiredDescriptionDefault
bonus_entriesYesNew bonus entries value (0-1000000). This overwrites the current value.
participant_tokenYesThe participant token (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

The description adds the key behavioral detail that the operation overwrites the current value, which is not fully captured by annotations alone. It also recommends a read-before-write pattern, giving useful context beyond the idempotentHint and destructiveHint annotations. No contradiction with annotations.

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

Conciseness3/5

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

The description is structured with sections, but it repeats the opening sentence almost verbatim in the 'When to use' section and includes redundant markdown formatting. It could be condensed to two or three sentences without losing key guidance.

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

Completeness4/5

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

For a simple mutation tool with three fully-documented parameters and no output schema, the description covers essential context: overwrite semantics, required pre-calls, and parameter validation. It does not describe return values, but this is a minor gap given the lack of an output schema.

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

Parameters3/5

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

The input schema already provides complete descriptions for all three parameters (100% coverage), so the description adds little new parameter-level information. It repeats the bonus_entries range and requiredness, and the pre-call validation advice is helpful but not essential for schema clarity.

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

Purpose5/5

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

The description clearly states that the tool updates the bonus entries value for a participant in a sweepstakes, using a specific verb and resource. It precisely identifies the target field, distinguishing it from other update tools focused on different resources.

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

Usage Guidelines4/5

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

The description provides explicit pre-call guidance: use get_participant first to check current bonus entries, and fetch_sweepstakes if the user provided a sweepstakes name instead of a token. While it does not explicitly mention alternative tools to avoid, the context for correct use is clear.

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

update_calendar_eventA
Idempotent
Inspect

Update an existing calendar event. Use fetch_calendar_events first to get the event_token. Supports partial updates - only provide fields you want to change. Note: Cannot update events to past dates.

update_calendar_event

When to use

Update an existing calendar event. Use fetch_calendar_events first to get the event_token. Supports partial updates - only provide fields you want to change. Note: Cannot update events to past dates.

Parameters to validate before calling

  • event_token (string, required) — The event token to update (UUID format, required)

  • title (string, optional) — New event title (optional)

  • start_date (string, optional) — New start date in ISO 8601 format (optional)

  • end_date (string, optional) — New end date in ISO 8601 format (optional)

  • description (string, optional) — New event description (optional)

  • location (string, optional) — New event location (optional)

  • start_time (string, optional) — New start time in HH:MM format (optional)

  • end_time (string, optional) — New end time in HH:MM format (optional)

  • color (string, optional) — New event color in hex format (optional)

  • all_day (boolean, optional) — Whether this is an all-day event (optional)

  • status (string, optional) — New event status (optional)

  • private_event (boolean, optional) — Whether this is a private event (optional)

  • sms_notification (boolean, optional) — Enable SMS notifications (optional)

  • completed (boolean, optional) — Mark event as completed (optional)

  • latitude (number, optional) — New location latitude coordinate (optional)

  • longitude (number, optional) — New location longitude coordinate (optional)

  • event_url (string, optional) — New URL associated with the event (optional)

  • people_involved (string, optional) — New people involved in the event (optional)

  • repeat_this_event (string, optional) — New repeat configuration (optional)

  • notification (string, optional) — New notification settings (optional)

Notes

  • Cannot move events to past dates (UTC). Use tomorrow or later

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoNew event color in hex format (optional)
titleNoNew event title (optional)
statusNoNew event status (optional)
all_dayNoWhether this is an all-day event (optional)
end_dateNoNew end date in ISO 8601 format (optional)
end_timeNoNew end time in HH:MM format (optional)
latitudeNoNew location latitude coordinate (optional)
locationNoNew event location (optional)
completedNoMark event as completed (optional)
event_urlNoNew URL associated with the event (optional)
longitudeNoNew location longitude coordinate (optional)
start_dateNoNew start date in ISO 8601 format (optional)
start_timeNoNew start time in HH:MM format (optional)
descriptionNoNew event description (optional)
event_tokenYesThe event token to update (UUID format, required)
notificationNoNew notification settings (optional)
private_eventNoWhether this is a private event (optional)
people_involvedNoNew people involved in the event (optional)
sms_notificationNoEnable SMS notifications (optional)
repeat_this_eventNoNew repeat configuration (optional)
Behavior4/5

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

With annotations already indicating readOnly=false, destructive=false, and idempotent=true, the description adds meaningful behavioral constraints: partial updates, the need for event_token retrieval, and the 'cannot update to past dates (UTC)' rule. It does not cover auth or errors, but the key behavioral traits are disclosed.

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

Conciseness3/5

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

The initial paragraph is concise and front-loaded, but the 'When to use' section and the full parameter list duplicate the opening and input schema. This is structured but not optimally concise; redundancy reduces its efficiency.

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

Completeness4/5

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

Given the tool's complexity (20 parameters) and high schema coverage, the description provides essential usage context: fetch first, partial updates, and the past-date restriction. It does not describe return values, but the absence of an output schema means that is optional context, and the description covers the main operational needs.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's parameter list largely copies the schema's descriptions. It adds little beyond the schema, though the partial-update note and the explicit UUID format for event_token provide some reinforcement.

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

Purpose5/5

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

The description opens with 'Update an existing calendar event,' clearly identifying the verb, resource, and scope. It also distinguishes itself from siblings by noting the prerequisite fetch_calendar_events call and partial-update behavior, which separates it from create/delete/get/fetch variants.

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

Usage Guidelines4/5

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

It explicitly instructs to use fetch_calendar_events first to obtain the event_token and explains partial updates. It does not mention explicit exclusions or alternatives, but the context is clear enough for an agent to know when this tool applies.

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

update_entry_settingsA
Idempotent
Inspect

Update entry page settings (1-5 fields per request). Call get_entry_settings first to see all available field names and current values. COMPLIANCE FIELDS: TermsConditionsSwitch, TermsConditionsMessage, SelectedOfficialRules, ActivateAgeGateSwitch, AgeGateHeadline, AgeGateDescription, AgeGateMinAge, ActivateAmoeSwitch, AmoeHeadline, AmoeDescription, AmoeEntries, EnableInternationalAMOEForm, GeoLocation, GeoLocationIsRequiredToRenderPage, AllowParticipantsWithinFences. DISPLAY FIELDS: EntryPageHeadline, EntryPageDescription, EntryPageWidth, EntryPageWidthMeasure ("%" or "px"), EntryPageBorder, EntryPageRadius, BonusEntriesSwitch, EmailOptInSwitch, SMSTextOptInSwitch. For social follows, bonus entries per platform, sponsor profiles, and other fields: call get_entry_settings to discover names. COLOR FORMAT: EntryPageColor fields use {"hexa":"#RRGGBB"}. AgeGateColor fields use {"hex":"#RRGGBB"}. All field names are PascalCase. If more than 5 fields need updating, split into multiple requests. NOTE: ReCaptcha is read-only — not writable via this endpoint. PRIZE GUARDRAIL: The prize value/description of a sweepstakes is NOT editable via this tool or any other MCP tool. NEVER simulate a prize change by writing a new amount into EntryPageHeadline, EntryPageDescription, or any other display text — that makes the entry page contradict the Official Rules and internal records (a compliance violation). If the user asks to change the prize, explain it cannot be modified after creation and direct them to Sweeppea support.

update_entry_settings

When to use

Update entry page settings (1-5 fields per request). Call get_entry_settings first to see all available field names and current values. COMPLIANCE FIELDS: TermsConditionsSwitch, TermsConditionsMessage, SelectedOfficialRules, ActivateAgeGateSwitch, AgeGateHeadline, AgeGateDescription, AgeGateMinAge, ActivateAmoeSwitch, AmoeHeadline, AmoeDescription, AmoeEntries, EnableInternationalAMOEForm, GeoLocation, GeoLocationIsRequiredToRenderPage, AllowParticipantsWithinFences. DISPLAY FIELDS: EntryPageHeadline, EntryPageDescription, EntryPageWidth, EntryPageWidthMeasure ("%" or "px"), EntryPageBorder, EntryPageRadius, BonusEntriesSwitch, EmailOptInSwitch, SMSTextOptInSwitch. For social follows, bonus entries per platform, sponsor profiles, and other fields: call get_entry_settings to discover names. COLOR FORMAT: EntryPageColor fields use {"hexa":"#RRGGBB"}. AgeGateColor fields use {"hex":"#RRGGBB"}. All field names are PascalCase. If more than 5 fields need updating, split into multiple requests. NOTE: ReCaptcha is read-only — not writable via this endpoint. PRIZE GUARDRAIL: The prize value/description of a sweepstakes is NOT editable via this tool or any other MCP tool. NEVER simulate a prize change by writing a new amount into EntryPageHeadline, EntryPageDescription, or any other display text — that makes the entry page contradict the Official Rules and internal records (a compliance violation). If the user asks to change the prize, explain it cannot be modified after creation and direct them to Sweeppea support.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • settings (object, required) — Object with 1 to 5 settings fields to update. Field names must be PascalCase as listed in the tool description. Example: { "EntryPageHeadline": "Win Big!", "BonusEntriesSwitch": true }

Notes

  • Maximum 5 fields per request — split larger updates into multiple calls

  • Top-level fields are PascalCase (e.g. TermsConditionsSwitch, ActivateAmoeSwitch)

  • Color fields use {"hexa": "#RRGGBB"} format

  • TermsConditionsSwitch MUST be true for legal compliance

  • Age Gate is exclusively for 21+ promotions (alcohol, cannabis) — never enable for 13/18

  • Prize value/description is NOT editable via MCP — NEVER simulate a prize change by writing amounts into EntryPageHeadline/EntryPageDescription; direct the user to Sweeppea support

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYesObject with 1 to 5 settings fields to update. Field names must be PascalCase as listed in the tool description. Example: { "EntryPageHeadline": "Win Big!", "BonusEntriesSwitch": true }
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds crucial behavioral constraints: a 5-field limit per request, color format expectations, PascalCase naming, compliance rules (TermsConditionsSwitch must be true, Age Gate only for 21+), and a clear warning against simulating prize changes. It also clarifies that certain fields (ReCaptcha) are not writable.

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

Conciseness2/5

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

The description is substantially bloated by an exact duplication of the first long paragraph, repeated verbatim under '## When to use'. This inflates the text to over 600 words without new information. While the content itself is dense and well-structured in places, the repetition violates the principle that every sentence should earn its place.

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

Completeness4/5

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

For a tool with no output schema and a complex domain, the description covers almost everything: required pre-calls, field enumeration, color formats, compliance guardrails, and validation rules. The only notable omission is the response/return value format, but since no output schema exists, the agent may not need it; still, a brief note about what the call returns would make it fully complete.

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

Parameters5/5

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

The input schema describes two parameters with basic descriptions. The description enriches this by listing the exact field names accepted in the settings object, the color format for different field groups, the PascalCase requirement, an example object, and the maximum field count per request. This transforms a generic object parameter into a fully specified domain set.

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

Purpose5/5

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

The description opens with 'Update entry page settings (1-5 fields per request)', clearly identifying the action (update), the resource (entry page settings), and the scope (1-5 fields). It also enumerates compliance and display fields, distinguishing it from sibling tools like get_entry_settings.

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

Usage Guidelines5/5

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

The description explicitly instructs to call get_entry_settings first to discover field names, declares that ReCaptcha is read-only and prize values are not editable (even via this or any other MCP tool), and provides the prerequisite fetch_sweepstakes call when given a name. This is explicit and actionable.

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

update_groupA
Idempotent
Inspect

Update the name of an existing group within a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, then fetch_groups to get the group_token.

update_group

When to use

Update the name of an existing group within a sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token, then fetch_groups to get the group_token.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • group_token (string, required) — The group token to update (UUID format)

  • group_name (string, required) — The new name for the group (must be unique within the sweepstakes)

ParametersJSON Schema
NameRequiredDescriptionDefault
group_nameYesThe new name for the group (must be unique within the sweepstakes)
group_tokenYesThe group token to update (UUID format)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
Behavior4/5

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

Annotations already indicate idempotentHint=true and readOnlyHint=false. The description adds context beyond annotations by specifying the uniqueness constraint for group_name and the required pre-call sequence. 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.

Conciseness3/5

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

The description is well-structured with clear sections, but it contains redundancy: the first paragraph and the 'When to use' section repeat the exact same sentence. This repetition inflates length without adding value, preventing a higher score.

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

Completeness4/5

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

Given the tool's simplicity, the description covers purpose, prerequisites, and parameter constraints well. It does not mention the return value or response format, but the absence of an output schema makes this a minor gap. Overall, it is sufficiently complete for an agent to use the tool correctly.

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

Parameters3/5

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

The input schema has 100% coverage for all three required parameters, each with descriptions. The description repeats these details in the 'Parameters to validate' section without adding new semantics beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Update the name of an existing group within a sweepstakes' with a specific verb and resource. It distinguishes itself from sibling tools like create_group and delete_group by focusing on updating an existing group's name.

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

Usage Guidelines4/5

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

The description provides explicit pre-call guidance: 'Use fetch_sweepstakes first to get the sweepstakes_token, then fetch_groups to get the group_token.' It also includes a 'Pre-calls required' section. However, it does not explicitly mention when not to use this tool or name alternatives, 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.

update_noteA
Idempotent
Inspect

Update an existing note. Use fetch_notes first to get the note_token. Supports partial updates. HTML tags: h1-h6, p, a, br, strong, i, ul, ol, li. No scripts/iframes. Do NOT use &nbsp; between sections.

update_note

When to use

Update an existing note. Use fetch_notes first to get the note_token. Supports partial updates. HTML tags: h1-h6, p, a, br, strong, i, ul, ol, li. No scripts/iframes. Do NOT use &nbsp; between sections.

Parameters to validate before calling

  • note_token (string, required) — The note token to update (UUID format)

  • title (string, optional) — New title (max 100 characters, must be unique)

  • content (string, optional) — New content (max 100,000 characters, will be encrypted). Allowed HTML: -, , , , , , , , . No scripts, iframes, or executable code.

  • pinned (boolean, optional) — Pin or unpin the note

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title (max 100 characters, must be unique)
pinnedNoPin or unpin the note
contentNoNew content (max 100,000 characters, will be encrypted). Allowed HTML: <h1>-<h6>, <p>, <a>, <br>, <strong>, <i>, <ul>, <ol>, <li>. No scripts, iframes, or executable code.
note_tokenYesThe note token to update (UUID format)
Behavior5/5

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

Discloses important behavioral traits beyond annotations: partial update semantics, encryption of content, HTML tag whitelist, and the specific prohibition on <br>&nbsp; between sections. These add significant value over the readOnlyHint/idempotentHint/destructiveHint flags.

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

Conciseness2/5

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

The description is repetitive: the initial concise sentence is followed by a markdown section that duplicates the same content and parameter details. This redundancy makes it unnecessarily long, though the headings provide some structure.

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

Completeness4/5

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

Covers all actionable constraints: note_token retrieval, partial updates, HTML restrictions, length limits, and encryption. It does not describe the return value, but for an update tool this is not critical. Overall, the description is complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with the schema already explaining every parameter including max lengths, uniqueness, and encryption. The description's parameter list duplicates the schema without adding new semantic information, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Update an existing note' with a specific verb and resource. It distinguishes from siblings (create_note, delete_note) by emphasizing 'existing' and 'partial updates', and references fetch_notes as a prerequisite.

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

Usage Guidelines4/5

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

Provides explicit usage context: use fetch_notes first to get note_token, supports partial updates, and lists allowed HTML tags. It does not explicitly state when not to use, but the prerequisite and field constraints give clear guidance.

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

update_ruleA
Idempotent
Inspect

Update an existing official rules document. Use fetch_rules first to get the rules_token. UPDATABLE FIELDS: Only these fields can be modified: title, document_content, abbreviated_rules_shopify. NOT UPDATABLE: sweepstakes association, primary status, creation date, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation.

update_rule

When to use

Update an existing official rules document. Use fetch_rules first to get the rules_token. UPDATABLE FIELDS: Only these fields can be modified: title, document_content, abbreviated_rules_shopify. NOT UPDATABLE: sweepstakes association, primary status, creation date, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The sweepstakes token (UUID format)

  • rules_token (string, required) — The rules token to update (UUID format)

  • title (string, optional) — New title for the rules document (max 100 characters)

  • document_content (string, optional) — New HTML content for the rules (max 1,000,000 characters)

  • abbreviated_rules_shopify (string, optional) — Abbreviated rules for Shopify integration (max 1,000,000 characters)

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title for the rules document (max 100 characters)
rules_tokenYesThe rules token to update (UUID format)
document_contentNoNew HTML content for the rules (max 1,000,000 characters)
sweepstakes_tokenYesThe sweepstakes token (UUID format)
abbreviated_rules_shopifyNoAbbreviated rules for Shopify integration (max 1,000,000 characters)
Behavior4/5

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

Annotations already convey readOnlyHint=false and destructiveHint=false, and the description adds critical behavioral details about which fields are updatable and which are immutable. This goes beyond the annotations to clarify API restrictions.

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

Conciseness2/5

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

The description is overly long and repetitive: the first paragraph is nearly identical to the '# update_rule' section. The duplicative content violates conciseness, making it less effective despite good organization.

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

Completeness4/5

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

The tool has no output schema, but the description covers pre-call requirements, parameter validation, and field update limitations. It is quite complete for an update operation, though it omits response/error behavior.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds value by explicitly listing UPDATABLE FIELDS and NOT UPDATABLE fields, clarifying the exact allowed parameter usage and constraints.

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

Purpose5/5

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

The description starts with 'Update an existing official rules document,' which clearly identifies the action and resource. This distinguishes it from siblings like create_rule and delete_rule.

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

Usage Guidelines4/5

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

Explicitly instructs to 'Use fetch_rules first to get the rules_token' and lists a pre-call for resolving sweepstakes names. It also warns against promising updates to non-updatable fields, providing clear usage constraints.

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

update_sweepstakesA
Idempotent
Inspect

Update an existing sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. UPDATABLE FIELDS: Only these fields can be modified: sweepstakes_name, start_date, end_date, start_time, end_time. NOT UPDATABLE: handler, sweepstakes_type, prize value/description, calendar settings, sync options, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation. PRIZE CHANGES: the prize is set in the Official Rules wizard at creation and is NOT editable via any MCP tool. Do NOT work around this by editing entry page display text — direct the user to Sweeppea support instead.

update_sweepstakes

When to use

Update an existing sweepstakes. Use fetch_sweepstakes first to get the sweepstakes_token. UPDATABLE FIELDS: Only these fields can be modified: sweepstakes_name, start_date, end_date, start_time, end_time. NOT UPDATABLE: handler, sweepstakes_type, prize value/description, calendar settings, sync options, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation. PRIZE CHANGES: the prize is set in the Official Rules wizard at creation and is NOT editable via any MCP tool. Do NOT work around this by editing entry page display text — direct the user to Sweeppea support instead.

Pre-calls required

  1. fetch_sweepstakes if the user gave you a sweepstakes name instead of a token

Parameters to validate before calling

  • sweepstakes_token (string, required) — The unique token (UUID) of the sweepstakes to update

  • sweepstakes_name (string, optional) — New name for the sweepstakes (max 200 characters)

  • start_date (string, optional) — New start date in YYYY-MM-DD format (must be today or future)

  • end_date (string, optional) — New end date in YYYY-MM-DD format (cannot precede start_date)

  • start_time (string, optional) — New start time in HH:MM format 24-hour

  • end_time (string, optional) — New end time in HH:MM format 24-hour

Notes

  • Only sweepstakes_name, start_date, end_date, start_time, end_time are updatable

  • Handler, type, and prize are permanent after creation — prize changes go through Sweeppea support, never via display text edits

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoNew end date in YYYY-MM-DD format (cannot precede start_date)
end_timeNoNew end time in HH:MM format 24-hour
start_dateNoNew start date in YYYY-MM-DD format (must be today or future)
start_timeNoNew start time in HH:MM format 24-hour
sweepstakes_nameNoNew name for the sweepstakes (max 200 characters)
sweepstakes_tokenYesThe unique token (UUID) of the sweepstakes to update
Behavior5/5

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

The description goes beyond the annotations by specifying the exact fields that can be modified and those that are permanent, such as prize and handler. It also warns against workarounds via display text edits and directs to support for prize changes, adding meaningful context beyond the readOnlyHint/idempotentHint flags.

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

Conciseness3/5

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

The description is well-structured with headings and bullet points, but it repeats the same content twice (first paragraph and then under 'When to use'). This redundancy makes it longer than necessary and earns points off for conciseness.

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

Completeness5/5

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

The description is complete for this mutation tool: it specifies prerequisites (fetch_sweepstakes), validation rules for parameters, permanent-field limitations, and how to handle unsupported changes. Given the lack of an output schema, it fully covers what the agent needs to know to use the tool correctly.

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

Parameters4/5

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

The schema descriptions cover all parameters well, so the baseline is high. The description adds critical context by clearly stating that only the listed fields are updatable, which prevents the agent from attempting to modify parameters not in that set. However, most parameter details are duplicated from the schema, so it doesn't add much beyond that key constraint.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Update an existing sweepstakes.' It further distinguishes itself from siblings like create_sweepstakes or delete_sweepstakes by detailing exactly which fields are updatable and which are not, making the tool's scope unambiguous.

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

Usage Guidelines5/5

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

Explicit guidance is provided: use fetch_sweepstakes first to obtain the token, and only use this tool for the listed updatable fields. It also explains what to do if a user requests a non-updatable change (redirect to support), thus clarifying when not to use this tool and how to handle out-of-scope requests.

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

update_ticketA
Idempotent
Inspect

Update an open support ticket. Use fetch_open_tickets first to get the case_id. Only open tickets can be updated. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

update_ticket

When to use

Update an open support ticket. Use fetch_open_tickets first to get the case_id. Only open tickets can be updated. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

Parameters to validate before calling

  • case_id (string, required) — The case number of the ticket to update

  • title (string, optional) — New ticket subject (max 200 characters)

  • description (string, optional) — New ticket description (max 20,000 characters). Allowed HTML: , , , , . No scripts, iframes, or executable code.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew ticket subject (max 200 characters)
case_idYesThe case number of the ticket to update
descriptionNoNew ticket description (max 20,000 characters). Allowed HTML: <b>, <strong>, <i>, <hr>, <br>. No scripts, iframes, or executable code.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, idempotent, non-destructive operation. The description adds meaningful behavioral constraints beyond annotations: only open tickets can be updated, and descriptions must follow strict HTML tag restrictions. It does not disclose failure behavior for closed tickets or return values, but the constraints provided are valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is heavily duplicated: the initial paragraph repeats the same content as the Markdown '# update_ticket' section, including the HTML rules and 'Only open tickets can be updated' nearly verbatim. The parameter section also repeats schema details. While structured, the redundancy makes it longer than necessary and reduces readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers prerequisites (fetch_open_tickets), constraints (only open tickets), and parameter validation details. However, it omits return value/error handling behavior, and the duplication detracts from completeness. For a fairly simple update tool with adequate schema and annotations, the content is sufficient but not fully polished.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description largely repeats the same parameter details (e.g., 'New ticket subject (max 200 characters)') and adds no new semantic meaning beyond what the schema provides. The only slight addition is the instruction to obtain case_id from fetch_open_tickets, which is already implied by the parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an open support ticket' with a specific verb and resource, and explicitly limits scope to open tickets. It distinguishes the tool from siblings like create_ticket, delete_ticket, and resolve_ticket by instructing users to fetch_open_tickets first and noting that only open tickets 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use the tool: 'Use fetch_open_tickets first to get the case_id' and 'Only open tickets can be updated.' It implies when not to use it (for closed tickets) but does not explicitly name alternatives such as resolve_ticket for closing tickets, so it stops short of full exclusion coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_todoA
Idempotent
Inspect

Update an existing To-Do item. Supports partial updates — only provide the fields you want to change. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

update_todo

When to use

Update an existing To-Do item. Supports partial updates — only provide the fields you want to change. ADMIN ONLY: This tool requires admin privileges. Non-admin users will receive a 403 Forbidden error from the API. FORMAT: Only these HTML tags are allowed in description: , , , , . NEVER insert scripts, iframes, event handlers (onclick, onerror, etc.), style tags, or any executable code. SPACING: Do NOT use &nbsp; — it creates ugly blank blocks in the UI. Use for line breaks within text only.

Parameters to validate before calling

  • todo_token (string, required) — The To-Do token to update (UUID format).

  • title (string, optional) — New title (max 200 characters).

  • description (string, optional) — New description (max 20,000 characters). Allowed HTML: , , , , .

  • priority (number, optional) — one of: 1, 2, 3 — Priority level: 1 = Low, 2 = Medium, 3 = High.

  • resource_affected (string, optional) — Resource affected (e.g. "renaissance", "api", "aws", "general").

  • pin (boolean, optional) — Pin this To-Do to the top.

  • deadline (string, optional) — Deadline date in ISO 8601 format. Send empty string to clear.

  • status (boolean, optional) — false = Pending, true = Completed.

  • completion (number, optional) — range: 0–100 — Completion percentage (0-100).

ParametersJSON Schema
NameRequiredDescriptionDefault
pinNoPin this To-Do to the top.
titleNoNew title (max 200 characters).
statusNofalse = Pending, true = Completed.
deadlineNoDeadline date in ISO 8601 format. Send empty string to clear.
priorityNoPriority level: 1 = Low, 2 = Medium, 3 = High.
completionNoCompletion percentage (0-100).
todo_tokenYesThe To-Do token to update (UUID format).
descriptionNoNew description (max 20,000 characters). Allowed HTML: <b>, <strong>, <i>, <hr>, <br>.
resource_affectedNoResource affected (e.g. "renaissance", "api", "aws", "general").
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, idempotent, and non-destructive. The description adds valuable context: admin-only requirement, partial update support, and HTML tag restrictions for the description field. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly repetitive, with the same paragraph appearing twice and extensive formatting meta-instructions (HTML tags, spacing) that are irrelevant to tool usage. This bloat detracts from readability and wastes tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers parameters, admin requirement, and partial updates, but lacks any mention of return value or response behavior. The irrelevant formatting instructions add noise but don't prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds no new parameter meaning. The parameter validation section repeats schema details without adding extra semantics beyond what's already in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing To-Do item' with a specific verb and resource, and highlights partial updates. This distinguishes it from create_todo and delete_todo without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it's for updating existing items, supports partial updates, and explicitly warns that admin privileges are required (non-admin gets 403). It doesn't name alternative tools, but the usage context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileBInspect

Upload a file to the user's Drive. The file must be base64-encoded. Max file size: 10 MB. Allowed types: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, JPG, JPEG, PNG, GIF, WEBP, SVG, BMP. Filenames are sanitized (spaces to underscores, special characters removed).

upload_file

When to use

Upload a file to the user's Drive. The file must be base64-encoded. Max file size: 10 MB. Allowed types: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, JPG, JPEG, PNG, GIF, WEBP, SVG, BMP. Filenames are sanitized (spaces to underscores, special characters removed).

Parameters to validate before calling

  • filename (string, required) — Original filename with extension (e.g., "report.pdf", "logo.png")

  • mime_type (string, required) — MIME type of the file (e.g., "application/pdf", "image/png", "text/csv")

  • file_data (string, required) — Base64-encoded file content

  • private (boolean, optional) — Privacy flag. Default: true (file is private to the user).

ParametersJSON Schema
NameRequiredDescriptionDefault
privateNoPrivacy flag. Default: true (file is private to the user).
filenameYesOriginal filename with extension (e.g., "report.pdf", "logo.png")
file_dataYesBase64-encoded file content
mime_typeYesMIME type of the file (e.g., "application/pdf", "image/png", "text/csv")
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral details beyond the annotations: base64 requirement, max file size, allowed types, and filename sanitization. Since annotations only declare readOnly=false and idempotent=false, these constraints provide valuable context, though the description does not disclose success responses or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized but redundant: the introductory paragraph is repeated almost word-for-word under '## When to use', and the parameter list duplicates schema descriptions. It could be condensed into a single, non-repetitive paragraph while preserving all key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters and no output schema, the description covers input constraints and file type limits thoroughly, but it omits what happens after a successful upload (e.g., file ID, URL, or how to reference the file). This is a significant gap for an upload tool, despite the otherwise useful detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter descriptions, so the baseline is 3. The description repeats these in a 'Parameters to validate before calling' section but adds only marginal emphasis (e.g., reinforcing base64 encoding and sanitization) without introducing new semantic meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool uploads a file to the user's Drive and specifies key constraints (base64 encoding, 10 MB max, allowed types). However, it does not differentiate from sibling tools like send_file or get_file_url, so the purpose is clear but not uniquely distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A 'When to use' section exists but it merely restates the same purpose without any guidance on when not to use this tool or which sibling to choose instead. No alternatives or exclusions are mentioned, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources