Skip to main content
Glama
Tempguru-co

TempGuru Event Staffing

Official
by Tempguru-co

Get Role Pricing

get_role_pricing
Read-only

Get all-inclusive hourly rate ranges for a specific event staffing role in a specific city. Rates include W-2 pay, workers comp, liability, and payroll taxes.

Instructions

Get the all-inclusive hourly rate range for a specific role in a specific city. Perfect for 'What does it cost to hire brand ambassadors in [city]?', 'How much are registration workers in [city]?', or 'What's the rate for ushers at a [city] stadium event?' questions. All rates include W-2 worker pay, workers comp, general liability, and payroll taxes. DO NOT use for availability or dates (use check_availability) and never present the range as a binding quote. For a multi-role budget, use plan_staffing. get_role_pricing(role='Brand Ambassadors', city='Boston') ; get_role_pricing(role='registration-staff', city='nashville-event-staffing') Role and city accept names or slugs. Brand Ambassadors floor at $40/hour in every market.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., 'Boston') or slug (e.g., 'boston-event-staffing').
roleYesRole name (e.g., 'Brand Ambassadors') or slug (e.g., 'brand-ambassadors').

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNo
noteNo
roleNo
errorNo
stateNo
currencyNo
city_tierNoMarket tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.
requestedNoEcho of the unmatched input.
role_noteNoCaveat about the resolved role (e.g. 'security' maps to unarmed Crowd Control, not licensed security).
role_slugNo
city_foundNoPresent (false) only when the city didn't match.
role_foundNoPresent (false) only when the role didn't match.
suggestionNoClosest known city/role for a miss. Confirm with the user before using it; do not auto-apply.
all_inclusiveNo
pricing_notesNo
available_rolesNoThe valid role catalog, returned when the role didn't match.
tier_definitionNo
fallback_pricingNoAll-tier pricing shown when the city didn't match.
hourly_range_lowNo
hourly_range_highNo
all_tiers_for_contextNoRate bands across all three market tiers for context.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.7.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "all_inclusive": {
      +      "type": "string"
      +    },
      +    "all_tiers_for_context": {
      +      "additionalProperties": false,
      +      "description": "Rate bands across all three market tiers for context.",
      +      "properties": {
      +        "hub": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        },
      +        "mid": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        },
      +        "small": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "small",
      +        "mid",
      +        "hub"
      +      ],
      +      "type": "object"
      +    },
      +    "available_roles": {
      +      "description": "The valid role catalog, returned when the role didn't match.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "city": {
      +      "type": "string"
      +    },
      +    "city_found": {
      +      "const": false,
      +      "description": "Present (false) only when the city didn't match.",
      +      "type": "boolean"
      +    },
      +    "city_tier": {
      +      "description": "Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.",
      +      "enum": [
      +        "hub",
      +        "mid",
      +        "small"
      +      ],
      +      "type": "string"
      +    },
      +    "currency": {
      +      "enum": [
      +        "USD",
      +        "CAD"
      +      ],
      +      "type": "string"
      +    },
      +    "error": {
      +      "type": "string"
      +    },
      +    "fallback_pricing": {
      +      "additionalProperties": false,
      +      "description": "All-tier pricing shown when the city didn't match.",
      +      "properties": {
      +        "hub": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        },
      +        "mid": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        },
      +        "small": {
      +          "additionalProperties": false,
      +          "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
      +          "properties": {
      +            "high": {
      +              "description": "Upper end of the hourly rate range.",
      +              "type": "number"
      +            },
      +            "low": {
      +              "description": "Lower end of the hourly rate range.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "low",
      +            "high"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "small",
      +        "mid",
      +        "hub"
      +      ],
      +      "type": "object"
      +    },
      +    "hourly_range_high": {
      +      "type": "number"
      +    },
      +    "hourly_range_low": {
      +      "type": "number"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "pricing_notes": {
      +      "type": "string"
      +    },
      +    "requested": {
      +      "description": "Echo of the unmatched input.",
      +      "type": "string"
      +    },
      +    "role": {
      +      "type": "string"
      +    },
      +    "role_found": {
      +      "const": false,
      +      "description": "Present (false) only when the role didn't match.",
      +      "type": "boolean"
      +    },
      +    "role_note": {
      +      "description": "Caveat about the resolved role (e.g. 'security' maps to unarmed Crowd Control, not licensed security).",
      +      "type": "string"
      +    },
      +    "role_slug": {
      +      "type": "string"
      +    },
      +    "state": {
      +      "type": "string"
      +    },
      +    "suggestion": {
      +      "additionalProperties": false,
      +      "description": "Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply.",
      +      "properties": {
      +        "kind": {
      +          "enum": [
      +            "city",
      +            "role"
      +          ],
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "slug": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "slug",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "tier_definition": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv1.0.0

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by explaining that rates are all-inclusive, non-binding, and not a quote, which shapes how the agent should present results.

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 dense but every sentence earns its place: it defines output semantics, gives user-style queries, routes to alternatives, adds exclusion guidance, and provides examples and hints. It is front-loaded with the core purpose.

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 read-only tool with a full output schema, the description is complete: it states the exact inputs, the meaning of the returned range, the non-binding caveat, and alternative tools for related tasks.

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 descriptions already cover 100% of the parameters with names and slug examples. The description adds value beyond the schema with call examples and a useful pricing hint: 'Brand Ambassadors floor at $40/hour in every market.' This helps agents choose valid parameter values.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get the all-inclusive hourly rate range for a specific role in a specific city.' It clearly distinguishes itself from siblings like check_availability and plan_staffing through question examples and explicit exclusions.

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 gives explicit when-to-use guidance with natural language examples, and explicit when-not-to-use guidance: 'DO NOT use for availability or dates (use check_availability)' and 'For a multi-role budget, use plan_staffing.' This leaves little ambiguity about tool routing.

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