Skip to main content
Glama

Headcount plan

headcount_plan
Read-onlyIdempotent

Estimate how many invited guests will attend (adults vs children) and the food, drink, cake, favor and plate quantities to buy, with standard buffers. Use when sizing the shopping list from an invite count. Do NOT use for spending (use party_budget) or a dated to-do plan (use party_timeline).

Input Schema

NameRequiredDescriptionDefault
invitedYesPeople invited, whole number 1-1000, e.g. 40
children_pctNoPercent of attendees who are children, 0-100, default 0
expected_decline_pctNoPercent of invitees expected to decline, 0-100, default 15

Output Schema

NameRequiredDescriptionDefault
noteYesPlain-language explanation of the estimate and buffers
adultsYesExpected adult attendees
invitedYesNumber of people invited
childrenYesExpected child attendees
quantitiesYesShopping quantities including buffers
expected_attendeesYesExpected attendance after declines (rounded up)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changed
    • changedInput schema / properties / children_pct / description
      Previous value: -"Share of attendees who are children, 0-100 (default 0)"New value: +"Percent of attendees who are children, 0-100, default 0"
    • addedInput schema / properties / children_pct / maximum
      Added value: +100
    • addedInput schema / properties / children_pct / minimum
      Added value: +0
    • changedInput schema / properties / expected_decline_pct / description
      Previous value: -"Expected share who decline, 0-100 (default 15)"New value: +"Percent of invitees expected to decline, 0-100, default 15"
    • addedInput schema / properties / expected_decline_pct / maximum
      Added value: +100
    • addedInput schema / properties / expected_decline_pct / minimum
      Added value: +0
    • changedInput schema / properties / invited / description
      Previous value: -"People invited (1-1000)"New value: +"People invited, whole number 1-1000, e.g. 40"
    • addedInput schema / properties / invited / maximum
      Added value: +1000
    • addedInput schema / properties / invited / minimum
      Added value: +1
    • changedInput schema / properties / invited / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / adults
      Added value: +{
      +  "description": "Expected adult attendees",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / cake_slices
      Removed value: -{
      -  "description": "Number of cake slices needed",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / children
      Added value: +{
      +  "description": "Expected child attendees",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / drinks
      Removed value: -{
      -  "description": "Number of drinks needed",
      -  "type": "integer"
      -}
    • removedOutput schema / properties / expected_attendance
      Removed value: -{
      -  "description": "Estimated number of adults attending",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / expected_attendees
      Added value: +{
      +  "description": "Expected attendance after declines (rounded up)",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / expected_children
      Removed value: -{
      -  "description": "Estimated number of children attending",
      -  "type": "integer"
      -}
    • removedOutput schema / properties / favors
      Removed value: -{
      -  "description": "Number of favors needed",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / invited
      Added value: +{
      +  "description": "Number of people invited",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / mains_portions
      Removed value: -{
      -  "description": "Number of main course portions needed",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Plain-language explanation of the estimate and buffers",
      +  "type": "string"
      +}
    • removedOutput schema / properties / plates
      Removed value: -{
      -  "description": "Number of plates needed",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / quantities
      Added value: +{
      +  "description": "Shopping quantities including buffers",
      +  "properties": {
      +    "cake_slices": {
      +      "description": "Cake slices (20% extra)",
      +      "type": "integer"
      +    },
      +    "drinks": {
      +      "description": "Drinks (2.5 per adult, 1.5 per child)",
      +      "type": "integer"
      +    },
      +    "favors": {
      +      "description": "Party favors (10% extra)",
      +      "type": "integer"
      +    },
      +    "mains_portions": {
      +      "description": "Main-course portions (15% extra per adult, 0.75 per child)",
      +      "type": "integer"
      +    },
      +    "plates": {
      +      "description": "Plates (25% extra)",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "mains_portions",
      +    "drinks",
      +    "cake_slices",
      +    "favors",
      +    "plates"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "expected_attendance",
      -  "expected_children",
      -  "mains_portions",
      -  "drinks",
      -  "cake_slices",
      -  "favors",
      -  "plates"
      -]New value: +[
      +  "invited",
      +  "expected_attendees",
      +  "adults",
      +  "children",
      +  "quantities",
      +  "note"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "cake_slices": {
      +      "description": "Number of cake slices needed",
      +      "type": "integer"
      +    },
      +    "drinks": {
      +      "description": "Number of drinks needed",
      +      "type": "integer"
      +    },
      +    "expected_attendance": {
      +      "description": "Estimated number of adults attending",
      +      "type": "integer"
      +    },
      +    "expected_children": {
      +      "description": "Estimated number of children attending",
      +      "type": "integer"
      +    },
      +    "favors": {
      +      "description": "Number of favors needed",
      +      "type": "integer"
      +    },
      +    "mains_portions": {
      +      "description": "Number of main course portions needed",
      +      "type": "integer"
      +    },
      +    "plates": {
      +      "description": "Number of plates needed",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "expected_attendance",
      +    "expected_children",
      +    "mains_portions",
      +    "drinks",
      +    "cake_slices",
      +    "favors",
      +    "plates"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's remaining job is to add context it does not repeat. It discloses that the estimate applies 'standard buffers' and spans adults vs children, which tells the agent the output is buffered and pre-split — useful behavioral context beyond the annotations. It does not describe output shape or how buffers scale, so it stops short of a 5.

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

Conciseness5/5

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

Three short sentences: capability first, then usage trigger, then exclusions. Every clause earns its place and the routing information is 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?

An output schema exists, so return values need not be explained, and the three input parameters are fully specified in the schema. The description covers capability, trigger, exclusions and the buffer assumption — everything an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% with each parameter fully documented, including ranges and defaults (15% decline). The description only implies the 'invite count' maps to 'invited' and adds no format or interaction detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Estimate') and precisely what is estimated (attendee split plus food, drink, cake, favor and plate quantities), and explicitly distinguishes itself from party_budget and party_timeline. An agent can route to this tool without opening any sibling schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('sizing the shopping list from an invite count') and explicit when-not-to-use with named alternatives for both the spending case (party_budget) and the scheduling case (party_timeline). Nothing is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources