Skip to main content
Glama

TempGuru Event Staffing

Server Details

Plan W-2 event staffing from 345 catalog entries; a coordinator confirms each order.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Tempguru-co/tempguru-mcp
GitHub Stars
2
Server Listing
TempGuru Event Staffing

TDQS

A4.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct function: availability, city lookup, compliance, plan management, pricing, etc. Even the two rate tools (get_rate_benchmark vs get_role_pricing) are clearly separated by scope (national index vs. city-specific), with explicit cross-references to avoid misuse.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_* for read operations, and action verbs (check_, plan_, request_, save_) for other operations. No camelCase or stylistic deviations, making the API predictable and navigable.

Tool Count5/5

12 tools is well within the ideal 3-15 range. Each tool earns its place by covering a distinct aspect of the staffing workflow—catalog, roles, pricing, compliance, planning, persistence, quoting, and policies—without redundancy.

Completeness5/5

The tool set covers the full lifecycle from catalog discovery (get_cities, get_roles), through pricing and compliance checks, to plan creation (plan_staffing), persistence (save_staffing_plan/get_plan), and quoting (request_quote/get_quote_status). Deliberate omissions (e.g., no reservation tool) are documented as coordinator-confirmed steps, so there are no dead ends for agents.

Available Tools

12 tools
check_availabilityCheck AvailabilityA
Read-only
Inspect

Return tier-based lead-time guidance for an event date and configured market. Use for 'What's the typical lead time for brand ambassadors in [city]?' or 'Is this date inside the usual planning window?'. This is not a real-time inventory or order-coverage check: a TempGuru coordinator confirms coverage and final lead time for the specific order after buyer submission. DO NOT use for cost questions (use get_role_pricing) and never present the result as a reservation. check_availability(date='2026-08-14', city='Dallas') ; check_availability(date='2026-07-01', city='Boston', role='brand-ambassadors', count=6) Even a 'rush' window is worth submitting, same-week backfills exist in select markets.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., 'Boston') or slug (e.g., 'boston-event-staffing').
dateYesEvent date as YYYY-MM-DD; legacy recognizable dates are still accepted.
roleNoOptional role name or slug to include rate context.
countNoOptional headcount for the event.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityNo
roleNoRate context when a role was provided; null otherwise.
countNoEcho of the requested headcount.
errorNoPresent when the date could not be parsed.
notesNo
stateNo
in_pastNoTrue when the requested date is already in the past — confirm the date before planning.
messageNoPresent when city_found is false.
city_tierNoMarket tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.
requestedNoEcho of the unmatched city input.
city_foundYesfalse = city did not match the configured catalog (see message); true = planning guidance below, not confirmed coverage.
event_dateNoNormalized ISO date (YYYY-MM-DD).
role_foundNonull = no role requested; false = the requested role didn't match the catalog (see notes).
suggestionNoClosest known city/role for a miss. Confirm with the user before using it; do not auto-apply.
catalog_matchNo
recommendationNoLead-time guidance, NOT a reservation. Even rush is worth submitting.
role_suggestionNoClosest known city/role for a miss. Confirm with the user before using it; do not auto-apply.
days_until_eventNo
typical_lead_time_hoursNo
coverage_confirmation_requiredNo

TDQS

A4.5/5.0
Behavior4/5

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

Despite annotations covering readOnly/non-destructive, the description adds valuable behavioral context: it clarifies the result is guidance, not a commitment; final coverage requires coordinator confirmation; and results must not be shown as reservations. This exceeds what annotations alone convey, even if it doesn't detail the output structure (which the output schema covers).

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 yet information-dense, with the core purpose front-loaded, followed by caveats, a 'DO NOT' that points to a sibling tool, and a strategic hint. Each sentence serves a clear function in guiding correct invocation.

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 presence of an output schema, full parameter schema coverage, and behavior annotations, the description adds the right amount of extra context—tier-based, not a reservation, coordinator confirmation, and a useful market hint. The tool is well-specified for each aspect an agent needs to decide whether and how to call it.

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 covers all parameters with descriptions (100% coverage). The description adds useful examples demonstrating optional role and count but does not add deeper semantics beyond the schema. The schema handles the parameter documentation well.

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, distinct purpose: return tier-based lead-time guidance for an event date and configured market. It includes concrete example queries and explicitly differentiates itself from real-time inventory checks and cost queries (get_role_pricing), so an agent can clearly tell it apart from sibling tools.

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 with natural language examples, explicit exclusions, and names the alternative tool for cost questions. It also includes a hint about rush windows and instructs the agent not to present the result as a reservation. This is thorough and actionable.

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

get_citiesGet CitiesA
Read-only
Inspect

List configured market entries by tier, or match one city. Catalog presence is not availability or order coverage; check_availability gives tier-based lead-time guidance only, and a coordinator confirms each order after buyer submission. Use for 'What markets are configured in [state]?', 'Is [city] in the catalog?', or 'Which Canadian markets are listed?'. For 'Do you cover [city]?' pass city='[name]', report the catalog match or suggestion, and preserve the coordinator-confirmation caveat. Use get_role_pricing for rates, check_availability for dates, or plan_staffing for a full plan. get_cities(city='Brooklyn') ; get_cities(state='TX') ; get_cities(tier='hub', country='CA') ; get_cities(limit=25) State accepts 'CA' or 'California'; country accepts US or CA. City resolves nicknames and boroughs. Unfiltered results are capped; use filters or limit. Configured entries are planning data; the public coverage claim is 300+ U.S. and Canadian markets.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoOptional single-city catalog match (nickname/borough aware). Returns catalog_match plus a suggestion; never a coverage promise.
tierNoOptional filter to one tier only.
limitNoOptional cap on the number of cities returned (full counts still in total/tier_breakdown).
stateNoOptional 2-letter state code (e.g., 'CA') or full state name.
countryNoOptional country filter: 'US' or 'CA'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityNoThe matched configured entry, or null when there was no catalog match.
noteNoPresent when the list was truncated by limit.
totalNoTotal cities matching the filter (before limit).
citiesNo
messageNo
returnedNoNumber of cities in the cities array (after limit).
requestedNo
suggestionNoClosest known city/role for a miss. Confirm with the user before using it; do not auto-apply.
catalog_checkNoPresent when a single-city catalog check was requested.
catalog_matchNoWhether the city resolved to a configured catalog entry; not an availability or coverage promise.
tier_breakdownNo
catalog_qualificationNo
coverage_confirmation_requiredNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false. The description adds meaningful behavioral context: configured entries are planning data, catalog presence does not promise availability or coverage, a coordinator must confirm orders, unfiltered results are capped, and the public coverage claim is 300+ markets. This goes well beyond the structured 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 dense but front-loaded with the core purpose and caveat, followed by use cases, examples, and hints. It is longer than the minimum, but every section earns its place given the semantic pitfalls an agent must avoid. The structure is organized 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 read-only lookup tool with 100% parameter documentation and an output schema, the description supplies all needed context: when to use it, how to answer common user questions, what caveats to preserve, how filters behave, and what sibling tools cover adjacent needs. Nothing material is missing for correct invocation.

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 coverage is 100%, but the description still adds value by clarifying accepted formats ('CA' or 'California' for state, 'US' or 'CA' for country), nickname/borough resolution, the meaning of limit caps with full counts retained, and the fact that city matching returns a suggestion rather than a coverage promise. These nuances are not fully captured in 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 a specific verb and resource: 'List configured market entries by tier, or match one city.' It clearly distinguishes this tool from siblings like check_availability and get_role_pricing, and explicitly names the non-goal: catalog presence is not availability or order coverage.

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 concrete query patterns ('What markets are configured in [state]?', 'Is [city] in the catalog?'), provides example calls for several filter combinations, and explicitly names sibling tools for related tasks (get_role_pricing, check_availability, plan_staffing). It even instructs how to handle 'Do you cover [city]?' with the proper caveat.

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

get_compliance_by_stateGet Compliance By StateA
Read-only
Inspect

Get the event staffing compliance summary for a US state. Returns minimum wage, overtime rules, and state-specific quirks. Perfect for 'What are the W-2 vs 1099 rules for event workers in [state]?', 'What's the minimum wage for event staff in [state]?', or 'Are there compliance gotchas for hiring event workers in [state]?' questions. NOT legal advice, consult employment counsel for binding interpretation. DO NOT use for rates (use get_role_pricing). get_compliance_by_state(state='CA') ; get_compliance_by_state(state='Tennessee') Daily-overtime states (CA, AK, NV, CO) change shift budgeting, flag them in any plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesTwo-letter state code (e.g., 'CA') or full state name (e.g., 'California').

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateNo
w2_noteNo
requestedNo
state_abbrNo
state_foundNoPresent (false) only when the state didn't match.
w2_requiredNo
data_versionNoVersion of the compliance dataset used for this result.
min_wage_usdNo2026 state minimum wage.
unique_rulesNo
citation_noteNoOperational guidance, not legal advice.
currency_noteNoReminder that wages change annually; verify before relying.
min_wage_as_ofNoEffective date of this state's stored minimum wage.
min_wage_sourceNoAuthoritative source URL for the minimum wage figure.
available_statesNo
data_current_as_ofNoDate the compliance dataset was last verified (YYYY-MM-DD).
seventh_day_overtimeNoTrue where a seventh-consecutive-day premium applies (CA).
workers_comp_includedNo
liability_coverage_includedNo
overtime_daily_double_hoursNoStart of the double-time band (hours/day) where the state has one (CA: 12); null otherwise.
overtime_threshold_daily_hoursNoDaily overtime threshold where the state has one (CA, AK, NV, CO); null otherwise.
overtime_threshold_weekly_hoursNo

TDQS

A4.6/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 useful behavioral context beyond the annotations: it returns regulatory information, flags that it is not legal advice, and adds a daily-overtime hint (CA, AK, NV, CO). This is meaningful supplementary context.

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 the core purpose and return contents, followed by targeted usage examples, an explicit exclusion, and a useful hint. It is slightly verbose due to the example questions, but each part adds practical guidance, so the length is justified.

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 read-only lookup with a rich schema, an output schema, and annotations already present, the description is complete. It covers what the tool returns, when to use it, when not to use it, the non-advice caveat, and an operational hint about daily-overtime states.

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% and the single 'state' parameter is already well described as accepting either a two-letter code or full state name. The description adds value with concrete example calls such as state='CA' and state='Tennessee', reinforcing accepted formats and making invocation unambiguous.

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 event staffing compliance summary for a US state', and lists what it returns (minimum wage, overtime rules, state-specific quirks). It also distinguishes itself from get_role_pricing by explicitly disclaiming rates, so an agent can clearly separate this tool from its 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?

The description gives concrete example questions that should trigger this tool, explicitly says 'DO NOT use for rates (use get_role_pricing)', and includes a 'NOT legal advice' caveat. This provides clear when-to-use and when-not-to-use guidance with a named alternative.

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

get_planGet Saved Staffing PlanA
Read-only
Inspect

Restore a complete non-PII staffing plan created by plan_staffing or save_staffing_plan within the last 30 days. Use when a buyer starts a new conversation, changes agent platforms, or wants to continue a saved plan before requesting a quote. DO NOT guess or enumerate plan IDs; use only the 12-character plan_id the user, plan_staffing, or save_staffing_plan supplied. get_plan(plan_id='ABCDEFGH2345') A not-found result means the plan expired, storage was unavailable, or the ID is wrong; re-run plan_staffing. Review the restored plan with the user before request_quote.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes12-character lookalike-free plan reference returned by plan_staffing or save_staffing_plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
plan_idYes
snapshotNo
next_stepsYes
offer_noteNoPublished first-order offer note. Snapshot totals remain undiscounted.
plan_foundYesDiscriminator. false means the reference was absent or expired.
continuationNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly and destructive hints, the description discloses the 30-day expiration window, the provenance requirement for plan_id, a do-not-guess/enumerate guardrail, and not-found failure semantics. This adds meaningful behavioral context an agent would not infer from the annotations or schema alone.

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 appropriately triaged: the core purpose and when-to-use are front-loaded, then the warning guardrail, then an example, then failure and workflow hints. Every sentence earns its place and supports correct invocation without redundant filler.

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 output schema is present, it doesn't need to enumerate return fields. It covers selection criteria, required input provenance, failure interpretation, and post-restore actions, which gives the agent everything needed to call the tool correctly and handle the result appropriately.

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 plan_id thoroughly with a regex pattern, length, and source description, so the baseline is high. The description adds value with 'DO NOT guess or enumerate plan IDs', an explicit example call, and a clear statement that only user-supplied or tool-supplied IDs are valid, which strengthens anti-hallucination behavior.

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 ('Restore') and a precise resource ('complete non-PII staffing plan created by plan_staffing or save_staffing_plan within the last 30 days'). This clearly identifies what the tool does and differentiates it from siblings like get_quote_status or plan_staffing.

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 conditions: buyer starts a new conversation, changes agent platforms, or wants to continue a saved plan before requesting a quote. It also provides a fallback action on failure ('re-run plan_staffing') and a workflow guardrail ('Review the restored plan with the user before request_quote'), which is strong practical guidance.

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

get_policiesGet Booking and Procurement PoliciesA
Read-only
Inspect

Get TempGuru's published booking and procurement policies, plus any currently published public offer. Use for real booking questions that otherwise require an email. Values not supported by canonical copy are explicitly marked confirm_with_coordinator with TODO-for-Megan; never infer a missing number. get_policies() ; get_policies(topic='payment-terms') ; get_policies(topic='coi-additional-insured') Choose an advertised topic to return one policy. Narrow lexical aliases remain accepted, and unknown topics return the current available-topic list. This is an operational summary, not a contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional canonical policy topic. Choose an advertised enum value; omit for all policies or a broader question.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scopeNo
statusYes
messageNo
updatedNo
policiesNo
requestedNo
disclaimerNo
data_versionNo
policy_foundYesDiscriminator. false means the requested topic is not published.
todo_for_meganNo
available_topicsNo

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing how unsupported values are marked, instructing agents to never infer missing numbers, noting that unknown topics return an available-topic list, and adding the interpretive caveat that the output is 'an operational summary, not a contract.' These are high-value behavioral details.

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?

Info is front-loaded with the core purpose first, followed by usage guidance and examples. Every sentence contributes context that affects invocation behavior, and the format with examples and hints is efficiently structured without padding.

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 single optional parameter, rich schema, and annotations, the description is fully complete for invocation. It covers what happens with omission, unknown topics, aliases, unsupported values, and how to treat the response. The output schema exists, so return-value details are not required here.

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 a baseline of 3 applies, but the description adds meaning beyond the enum by explaining that omitting the topic returns all policies or a broader answer, that aliases are accepted, and that unknown topics return the list of available topics. It also provides concrete examples.

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 resource (TempGuru's published booking and procurement policies plus public offers) and uses a specific verb ('get'). It sets the tool apart from sibling tools like get_cities or get_roles by specifying a uniquely policy-related resource and 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 explicitly says to 'Use for real booking questions that otherwise require an email,' which gives clear context for when to invoke it. It does not explicitly list exclusions or alternative sibling tools, but the guidance is strong and contextual.

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

get_quote_statusGet Quote Request StatusA
Read-only
Inspect

Check whether a TempGuru quote request reference was received by the CRM or durably queued. Use only after the buyer personally submitted a TempGuru website form and received a TG reference, or for a historical reference. The authless MCP request_quote handoff does not create a reference. This v1 status stub reports received/queued only; it does not yet expose quote_sent or won. get_quote_status(reference='TG-ABC234') Status records are retained for 90 days. A not-found result does not prove the CRM lead is absent; follow up with the reference at megan@tempguru.co.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesTG reference returned after the buyer submits the TempGuru website form, e.g. TG-ABC234.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
channelNo
messageYes
deal_nameNo
follow_upYes
referenceYes
created_atNo
quote_foundYesDiscriminator. false means the status stub is absent or expired.

TDQS

A4.9/5.0
Behavior5/5

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

The description adds important behavior beyond the annotations: this is a v1 status stub that only reports received/queued, does not yet expose quote_sent or won, retains status records for 90 days, and not-found results do not prove the CRM lead is absent. This is rich, honest behavior disclosure.

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 front-loaded with the purpose, followed by concrete usage rules, limitations, an example, and retention hints. Every sentence carries meaningful information, and the structured examples/hints tags make the details easy for an agent to parse.

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 status-checking tool, this is complete: purpose, usage constraints, sibling distinction, current limitations, retention behavior, and a not-found caveat are all covered. The output schema handles return-value details, so no additional information is needed here.

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 documents the reference parameter with a pattern, maxLength, and example, so it carries most of the semantic load. The description adds valuable extra context by clarifying that only form-submission references are valid and that the authless request_quote handoff does not generate one.

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 and resource ('Check whether a TempGuru quote request reference was received by the CRM or durably queued'), and clearly differentiates itself from siblings by noting that the authless MCP request_quote handoff does not create a reference. It is precise and disambiguates the tool from request_quote.

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 usage conditions are given: 'Use only after the buyer personally submitted a TempGuru website form and received a TG reference, or for a historical reference.' It also states an exclusion — the authless MCP request_quote handoff does not create a reference — making it clear when not to use this tool.

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

get_rate_benchmarkGet Rate Benchmark (Rate Index)A
Read-only
Inspect

The TempGuru Event Staffing Rate Index: all-inclusive W-2 hourly bill rates by role from 407 measured US/Canada markets, as a typical rate plus the full national range (brand ambassadors shown by market tier), with methodology and a ready-to-use citation line. Perfect for 'What do event staff cost in 2026?', 'Industry benchmark for brand ambassador rates?', or any article, report, or comparison that needs citable staffing-rate data. DO NOT use for one city's price (use get_role_pricing) or to build an event budget (use plan_staffing). get_rate_benchmark() ; get_rate_benchmark(role='brand-ambassadors') ; get_rate_benchmark(tier='hub') Returns a national typical + range per role; brand ambassadors by tier. Pass tier to add each role's measured span within that tier (tier_usd). For one city's exact rate use get_role_pricing. Cite as: TempGuru Event Staffing Rate Index 2026, tempguru.co.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoOptional non-empty role name or slug to filter to one role.
tierNoOptional market tier; adds each role's measured span within that tier (tier_usd).

Output Schema

ParametersJSON Schema
NameRequiredDescription
basisNo
indexNo
ratesNo
floorsNo
editionNo
updatedNo
citationNo
requestedNo
role_foundNo
methodologyNo
data_versionNo
reading_noteNo
requested_tierNo
available_rolesNo
methodology_urlNo
markets_measuredNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds meaningful behavioral details beyond that: it returns a national typical plus range, handles brand ambassadors by market tier, and describes the optional tier parameter as adding 'tier_usd' data for each role.

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 more detailed than average, but every sentence contributes: scope, data source, return value, example use cases, exclusions, citation, and parameter hints are all covered. It is front-loaded with the core result and the guidance to use alternative tools.

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 two optional parameters, an output schema, and clear annotation coverage, this description is complete. It covers the dataset, measurement scope, tier handling, citation format, and appropriate alternatives. An agent can confidently decide when to invoke this tool and understand the shape of the result before even opening the output schema.

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 parameter basics are already documented. The description adds extra value by explaining what the tier parameter actually does ('adds each role's measured span within that tier (tier_usd)') and by showing concrete example calls with different parameter combinations, which helps an agent understand how to pass arguments correctly.

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 resource (TempGuru Event Staffing Rate Index) and the specific output: all-inclusive W-2 hourly bill rates by role from 407 markets, with a typical rate plus the national range. It also explicitly distinguishes itself from related tools like get_role_pricing and plan_staffing by stating what the tool is NOT for.

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 and actionable. It provides example queries, states when to use the tool ('What do event staff cost in 2026?', 'Industry benchmark'), and gives clear exclusions: do not use for one city's price (use get_role_pricing) or to build a budget (use plan_staffing).

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

get_role_pricingGet Role PricingA
Read-only
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

get_rolesGet RolesA
Read-only
Inspect

List event staffing roles TempGuru provides, with descriptions and skill tiers. Perfect for 'What kinds of event workers can I hire?', 'What roles do you staff for trade shows / festivals / corporate events?', or 'Do you have brand ambassadors?' questions. DO NOT use for what a role costs, use get_role_pricing with a city. get_roles() Returned slugs (brand-ambassadors, registration-staff, team-leads) are the exact values the other tools accept.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rolesYes
totalYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds useful behavioral context beyond annotations: the tool returns slugs that are the exact values other tools accept, and that entries include descriptions and skill tiers. This helps the agent predict integration behavior, meriting a score above baseline.

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 slightly longer than typical for zero parameters but each element earns its place: the first sentence states the core purpose, the question examples clarify usage, the DO NOT sentence provides routing, and the hints add cross-tool integration value. It is structured with clear separation, just slightly 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 zero-parameter, read-only tool with a high-quality output schema, the description covers everything an agent needs: what the tool does, when to use it, when to avoid it, how it integrates with other tools, and expected content. No meaningful gap remains.

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 100% schema coverage, so no parameter documentation is needed. The description further reinforces this with an example call get_roles() showing it accepts no arguments, which is helpful for the agent. A 4 aligns with the 0-parameter baseline.

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 and resource ('List event staffing roles TempGuru provides') and immediately separates itself from get_role_pricing by explicitly naming it as the alternative for cost questions. The example user questions anchor the resource in concrete intents, leaving no ambiguity about what get_roles returns.

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 signals via representative question examples ('What kinds of event workers can I hire?', 'Do you have brand ambassadors?') and explicitly states when not to use it ('DO NOT use for what a role costs, use get_role_pricing with a city'). Names the sibling tool directly, leaving no inference required.

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

plan_staffingPlan StaffingAInspect

CALL THIS FIRST for event staffing requests. Returns a configured-market catalog match, role-level W-2 rate math, estimated totals, tier-based lead-time guidance, and state compliance flags from the event's city, date, roles, and headcount. It does not confirm order coverage or live inventory; a coordinator does that after buyer submission. Use granular tools only for a single rate, date, or state fact. A complete plan may save a non-contact snapshot for 30 days and return plan_id plus continuation. If it returns no plan_id and the buyer needs persistence, call save_staffing_plan once; never save a plan that already has an ID. This tool never accepts or submits contact details, reserves staff, or creates a quote request. Omit roles for the catalog and a suggested mix. Treat totals as planning estimates, not quotes. Branch on status: plan, needs_roles, roles_not_found, or city_not_found; confirm suggestions rather than auto-applying them.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesEvent city, name or slug (e.g., 'Chicago').
rolesNoRoles and headcount. Omit to receive the role catalog and a suggested mix.
attendeesNoExpected attendee count.
event_dateNoEvent date as YYYY-MM-DD; legacy recognizable dates are still accepted.
event_typeNotrade-show, conference, festival, concert, sporting-event, corporate, brand-activation, or other.
descriptionNoOptional free-text event description, echoed into the plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tipNo
eventNo
statusYesDiscriminator. Branch on this before reading the rest.
messageNo
plan_idNoComplete plans only. Non-PII plan reference retained for 30 days when Redis persistence succeeds.
lead_timeNo
complianceNo
next_stepsNo
offer_noteNoPublished first-order offer note. Totals remain undiscounted planning estimates.
plan_linesNo
suggestionNoClosest known city/role for a miss. Confirm with the user before using it; do not auto-apply.
continuationNoComplete plans only. Prefilled website handoff; may be present without plan_id when storage fails open.
plan_completeNostatus:plan only. false = one or more requested roles could not be priced and are EXCLUDED from all totals (see unpriced_roles) — resolve them and re-plan before presenting a budget or quoting.
requested_cityNo
staffing_notesNo
unpriced_rolesNostatus:plan with plan_complete:false — the requested lines missing from every total.
available_rolesNo
requested_rolesNo
unresolved_rolesNo
estimated_total_rangeNo
overtime_adjusted_total_rangeNoPresent (non-null) only when daily/weekly OT (or a double-time band) applies to the schedule.

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing side effects like saving a non-contact snapshot for 30 days, returning plan_id and continuation, not confirming coverage, not accepting contact details, and treating totals as estimates. It also tells the caller to branch on specific statuses, giving a clear behavioral contract.

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 dense but every sentence contributes important operational guidance. It is longer than average, but the length is justified by the complexity of the tool's branching, side effects, and exclusions.

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?

It covers main use, limitations, follow-up tools, side effects, parameter behavior, and status branching. With an output schema present, the lacking return-format detail does not create a 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?

The schema has 100% documented parameter coverage, so the description is not required to add param-level detail. It does call out inputs like city, date, roles, and headcount and mentions omitting roles for a catalog, but most of this is already captured in 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 opens with 'CALL THIS FIRST for event staffing requests' and names the concrete outputs: catalog match, W-2 rate math, estimates, lead-time guidance, and compliance flags. It distinguishes itself from granular and persistence tools, 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 Guidelines5/5

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

It gives explicit when-to-use guidance, instructs to use granular tools for single facts, names save_staffing_plan as the persistence fallback, and says never to save a plan that already has an ID. This is strong usage-routing guidance.

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

request_quoteRequest QuoteA
Read-onlyIdempotent
Inspect

Use only after the buyer reviews a staffing plan and asks to proceed. Requires the saved non-PII plan_id from plan_staffing or save_staffing_plan and returns a prefilled TempGuru-owned review form. This tool never accepts or transmits names, email, phone, company, or other contact details and never creates a CRM lead or quote reference. The buyer must open form_url, review the plan, enter their own details, and submit it; only that submission creates a lead. This is not a reservation and does not guarantee pricing or availability. If a complete plan has continuation.form_url but no plan_id, give that URL directly instead. Never collect contact details for an MCP call; re-run an expired plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesSaved non-PII plan reference returned by plan_staffing or save_staffing_plan.
skill_idNoOptional canonical TempGuru skill that assembled the plan.
skill_versionNoOptional version of the TempGuru staffing skill used.
source_platformNoOptional agent/platform attribution, e.g. claude-ai, openclaw, or hermes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYesHuman-readable outcome to relay to the buyer.
plan_idYes
form_urlNoPrefilled TempGuru-owned review form. Present only when handoff_ready is true.
next_stepsYesSafe next actions; no agent-side contact collection.
plan_foundYesWhether the supplied non-PII plan_id resolved before expiry.
handoff_readyYestrue when the saved plan resolved and a prefilled buyer form URL was created.
buyer_submission_requiredYesAlways true. The buyer, not the agent, must enter contact details and submit the form.

TDQS

A4.6/5.0
Behavior5/5

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

The annotations already carry readOnlyHint, idempotentHint, and destructiveHint, but the description adds meaningful non-obvious behavior: it never transmits contact information, never creates a lead itself, requires the buyer to open and submit the form, and does not reserve or guarantee pricing/availability. There is no contradiction with the annotation object.

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 dense but front-loaded with the trigger condition and key requirement. It is arguably a little long and contains a couple of repeated privacy-related caveats, but each sentence carries a meaningful operational or safety instruction for an agent.

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 schema covers all parameters, an output schema exists, and annotations cover the read-only behavior, the description supplies what is left: preconditions, fallback behavior, expiration handling, and the PII boundary. The tool is fully covered from the perspective of an agent deciding whether and how to invoke it.

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 applies. The description does reinforce that plan_id must be a saved non-PII plan reference from plan_staffing or save_staffing_plan, but it adds no new meaning for skill_id, skill_version, or source_platform beyond what the schema already documents.

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 names a specific verb and resource: after a buyer asks to proceed, return a TempGuru-owned pre-filled review form for a saved plan_id. It explicitly states the tool does not create a quote reference or CRM lead, which clearly distinguishes its purpose from quote-status or lead-creation tools.

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 gives an explicit trigger condition, required input source, and the buyer's required follow-up action. It also gives concrete when-not guidance by saying to give continuation.form_url directly when no plan_id exists, to never collect contact details, and to re-run an expired plan.

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

save_staffing_planSave Staffing PlanAInspect

Explicitly save a complete non-contact staffing plan for 30 days so it can be shared, resumed, or linked to a later quote request. Use only when plan_staffing returned plan_complete:true without a plan_id and the user needs persistence. Never call this tool when plan_staffing already returned a plan_id. Provide the same confirmed city, date, event type, attendees, roles, headcount, hours, and days; the server recomputes rates, totals, lead time, and compliance before saving and does not accept caller-supplied pricing or totals. This does not reserve staff, submit contact details, or request a quote. Branch on status: saved is the only outcome with a durable plan_id; plan_incomplete requires revising the inputs; for rate_limited or storage_unavailable, give the buyer continuation.form_url directly because request_quote requires a saved plan_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesEvent city, name or slug (e.g. Chicago).
rolesYesConfirmed roles, headcount, hours, and days to recompute and save.
attendeesNoExpected attendee count.
event_dateNoEvent date as YYYY-MM-DD; legacy recognizable dates are still accepted.
event_typeNotrade-show, conference, festival, concert, sporting-event, corporate, brand-activation, or other.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYesDiscriminator. Only status:saved means a resumable plan_id exists.
messageYes
plan_idNo12-character reference for the saved non-PII snapshot.
created_atNo
expires_atNoConservative 30-day expiry for the saved snapshot.
plan_statusNoPlanner branch that prevented persistence.
continuationNo
next_actionsYes
resource_uriNoPublic no-store REST URI that restores the saved artifact.
schema_versionNo
quote_readinessNoThe buyer must open the handoff form and personally submit their contact details.
retry_after_secondsNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond annotations by stating the server recomputes rates, totals, lead time, and compliance; does not accept client-supplied pricing; does not reserve staff, submit contact details, or request a quote; and saves for 30 days. The status hints also disclose how different outcomes behave without contradicting annotations.

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 front-loaded with purpose, then states when/not to call, then summarizes behavior, and ends with structured hint branching. Every major sentence earns its place, and the hints are organized in a readable conditional style despite their density.

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 an existing output schema, the description still covers the necessary context: prerequisite conditions, persistence, exclusion of alternatives, server-side behavior, and handling of all possible return statuses. Nothing essential is missing for an agent to decide when and how to call this 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?

With 100% schema description coverage, the schema already documents all parameters. The description adds useful integration context, such as submitting the same confirmed values and the server not accepting pricing or totals, but it does not materially deepen per-field semantics 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?

States a specific verb and resource: explicitly save a complete non-contact staffing plan for 30 days with persistence. It clearly distinguishes itself from plan_staffing by saying it is used only when plan_staffing returned plan_complete:true without a plan_id, and it also distinguishes from request_quote by noting it does not request a quote.

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 an explicit condition for use ('only when plan_staffing returned plan_complete:true without a plan_id and the user needs persistence') and an explicit exclusion ('Never call this tool when plan_staffing already returned a plan_id'). It also provides alternative routing information via status hints, including when request_quote is not appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_policies2 fields changed
      • changedInput schema / properties / topic / description
        Previous value: -"Optional policy topic or title. Omit to return all published topics."New value: +"Optional canonical policy topic. Choose an advertised enum value; omit for all policies or a broader question."
      • addedInput schema / properties / topic / enum
        Added value: +[
        +  "minimum-booking-hours",
        +  "cancellation-rescheduling",
        +  "no-show-backfill",
        +  "coi-additional-insured",
        +  "payment-terms",
        +  "background-checks",
        +  "order-confirmation",
        +  "quote-response",
        +  "offers"
        +]
  2. 3 tool updates
    • Changedget_plan1 field changed
      • addedOutput schema / properties / offer_note
        Added value: +{
        +  "description": "Published first-order offer note. Snapshot totals remain undiscounted.",
        +  "type": "string"
        +}
    • Changedget_policies5 fields changed
      • addedOutput schema / properties / policies / items / properties / cap_usd
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / policies / items / properties / code
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / policies / items / properties / discount_percent
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / policies / items / properties / expires
        Added value: +{
        +  "description": "Offer expiry date in YYYY-MM-DD format.",
        +  "format": "date",
        +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / policies / items / properties / scope
        Added value: +{
        +  "type": "string"
        +}
    • Changedplan_staffing1 field changed
      • addedOutput schema / properties / offer_note
        Added value: +{
        +  "description": "Published first-order offer note. Totals remain undiscounted planning estimates.",
        +  "type": "string"
        +}
  3. 3 tool updates
    • Changedcheck_availability3 fields changed
      • addedOutput schema / properties / catalog_match
        Added value: +{
        +  "const": true,
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / city_found / description
        Previous value: -"false = city not in the published footprint (see message); true = guidance below."New value: +"false = city did not match the configured catalog (see message); true = planning guidance below, not confirmed coverage."
      • addedOutput schema / properties / coverage_confirmation_required
        Added value: +{
        +  "const": true,
        +  "type": "boolean"
        +}
    • Changedget_cities8 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Optional single-city coverage check (nickname/borough aware). Returns covered yes/no + suggestion."New value: +"Optional single-city catalog match (nickname/borough aware). Returns catalog_match plus a suggestion; never a coverage promise."
      • addedOutput schema / properties / catalog_check
        Added value: +{
        +  "const": true,
        +  "description": "Present when a single-city catalog check was requested.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / catalog_match
        Added value: +{
        +  "description": "Whether the city resolved to a configured catalog entry; not an availability or coverage promise.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / catalog_qualification
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / city / description
        Previous value: -"The matched market (coverage check), or null if not covered."New value: +"The matched configured entry, or null when there was no catalog match."
      • removedOutput schema / properties / coverage_check
        Removed value: -{
        -  "const": true,
        -  "description": "Present when a single-city coverage check was requested.",
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / coverage_confirmation_required
        Added value: +{
        +  "const": true,
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / covered
        Removed value: -{
        -  "type": "boolean"
        -}
    • Changedplan_staffing3 fields changed
      • addedOutput schema / properties / event / properties / catalog_match
        Added value: +{
        +  "const": true,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / event / properties / coverage_confirmation_required
        Added value: +{
        +  "const": true,
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / event / required
        Previous value: -[
        -  "city",
        -  "state",
        -  "market_tier"
        -]New value: +[
        +  "city",
        +  "state",
        +  "market_tier",
        +  "catalog_match",
        +  "coverage_confirmation_required"
        +]
  4. 3 tool updates
    • Changedcheck_availability2 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Event date in ISO format (YYYY-MM-DD) or any date string parseable by Date()."New value: +"Event date as YYYY-MM-DD; legacy recognizable dates are still accepted."
      • addedInput schema / properties / date / format
        Added value: +"date"
    • Changedplan_staffing3 fields changed
      • changedInput schema / properties / event_date / description
        Previous value: -"Event date, ISO YYYY-MM-DD preferred."New value: +"Event date as YYYY-MM-DD; legacy recognizable dates are still accepted."
      • addedInput schema / properties / event_date / format
        Added value: +"date"
      • addedInput schema / properties / event_type / enum
        Added value: +[
        +  "trade-show",
        +  "conference",
        +  "festival",
        +  "concert",
        +  "sporting-event",
        +  "corporate",
        +  "brand-activation",
        +  "other"
        +]
    • Changedsave_staffing_plan3 fields changed
      • changedInput schema / properties / event_date / description
        Previous value: -"Event date, ISO YYYY-MM-DD preferred."New value: +"Event date as YYYY-MM-DD; legacy recognizable dates are still accepted."
      • addedInput schema / properties / event_date / format
        Added value: +"date"
      • addedInput schema / properties / event_type / enum
        Added value: +[
        +  "trade-show",
        +  "conference",
        +  "festival",
        +  "concert",
        +  "sporting-event",
        +  "corporate",
        +  "brand-activation",
        +  "other"
        +]
  5. 1 tool update
    • Changedrequest_quote1 field changed
      • changedInput schema / properties / source_platform / enum
        Previous value: -[
        -  "ai-agent",
        -  "ai-page",
        -  "ai-page-zh",
        -  "baidu-agent",
        -  "chatgpt-app",
        -  "chatgpt-gpt",
        -  "claude-ai",
        -  "claude-code",
        -  "claude-desktop",
        -  "cn-agent",
        -  "copilot-agent",
        -  "coze",
        -  "coze-bot",
        -  "custom-gpt",
        -  "gemini",
        -  "gemini-cli",
        -  "gemini-gem",
        -  "hermes",
        -  "kimi",
        -  "langchain",
        -  "lechat-agent",
        -  "llamaindex",
        -  "manual-test",
        -  "meta-ai",
        -  "mcp-handoff",
        -  "open-webui",
        -  "openai-codex",
        -  "openclaw",
        -  "perplexity-space",
        -  "pi",
        -  "poe-bot",
        -  "postman",
        -  "python-client",
        -  "skill",
        -  "team-demo",
        -  "website",
        -  "website-widget",
        -  "zhipu-agent",
        -  "openai-chatgpt",
        -  "openai-agents-sdk",
        -  "openai-mcp",
        -  "cursor",
        -  "cline",
        -  "windsurf",
        -  "perplexity",
        -  "qwen-ecosystem",
        -  "deepseek",
        -  "doubao",
        -  "mcp-client"
        -]New value: +[
        +  "ai-agent",
        +  "ai-page",
        +  "ai-page-zh",
        +  "baidu-agent",
        +  "chatgpt-app",
        +  "chatgpt-gpt",
        +  "claude-ai",
        +  "claude-code",
        +  "claude-desktop",
        +  "cn-agent",
        +  "copilot-agent",
        +  "coze",
        +  "coze-bot",
        +  "custom-gpt",
        +  "gemini",
        +  "gemini-cli",
        +  "gemini-gem",
        +  "hermes",
        +  "kimi",
        +  "langchain",
        +  "lechat-agent",
        +  "llamaindex",
        +  "manual-test",
        +  "meta-ai",
        +  "mcp-handoff",
        +  "open-webui",
        +  "openai-codex",
        +  "openclaw",
        +  "perplexity-space",
        +  "pi",
        +  "poe-bot",
        +  "postman",
        +  "prime-agent",
        +  "python-client",
        +  "skill",
        +  "team-demo",
        +  "website",
        +  "website-widget",
        +  "zhipu-agent",
        +  "openai-chatgpt",
        +  "openai-agents-sdk",
        +  "openai-mcp",
        +  "cursor",
        +  "cline",
        +  "windsurf",
        +  "perplexity",
        +  "qwen-ecosystem",
        +  "deepseek",
        +  "doubao",
        +  "mcp-client"
        +]
  6. 1 tool update
    • Changedrequest_quote3 fields changed
      • addedInput schema / properties / source_platform / enum
        Added value: +[
        +  "ai-agent",
        +  "ai-page",
        +  "ai-page-zh",
        +  "baidu-agent",
        +  "chatgpt-app",
        +  "chatgpt-gpt",
        +  "claude-ai",
        +  "claude-code",
        +  "claude-desktop",
        +  "cn-agent",
        +  "copilot-agent",
        +  "coze",
        +  "coze-bot",
        +  "custom-gpt",
        +  "gemini",
        +  "gemini-cli",
        +  "gemini-gem",
        +  "hermes",
        +  "kimi",
        +  "langchain",
        +  "lechat-agent",
        +  "llamaindex",
        +  "manual-test",
        +  "meta-ai",
        +  "mcp-handoff",
        +  "open-webui",
        +  "openai-codex",
        +  "openclaw",
        +  "perplexity-space",
        +  "pi",
        +  "poe-bot",
        +  "postman",
        +  "python-client",
        +  "skill",
        +  "team-demo",
        +  "website",
        +  "website-widget",
        +  "zhipu-agent",
        +  "openai-chatgpt",
        +  "openai-agents-sdk",
        +  "openai-mcp",
        +  "cursor",
        +  "cline",
        +  "windsurf",
        +  "perplexity",
        +  "qwen-ecosystem",
        +  "deepseek",
        +  "doubao",
        +  "mcp-client"
        +]
      • removedInput schema / properties / source_platform / maxLength
        Removed value: -80
      • removedInput schema / properties / source_platform / minLength
        Removed value: -1
  7. 3 tool updates
    • Changedget_quote_status1 field changed
      • changedInput schema / properties / reference / description
        Previous value: -"TG reference returned by request_quote, e.g. TG-ABC234."New value: +"TG reference returned after the buyer submits the TempGuru website form, e.g. TG-ABC234."
    • Changedrequest_quote36 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / attendees
        Removed value: -{
        -  "description": "Expected event attendance, if known (informs coverage ratios)",
        -  "exclusiveMinimum": 0,
        -  "maximum": 5000000,
        -  "type": "integer"
        -}
      • removedInput schema / properties / attire
        Removed value: -{
        -  "description": "Staff attire requirements",
        -  "maxLength": 500,
        -  "type": "string"
        -}
      • removedInput schema / properties / budget_range
        Removed value: -{
        -  "description": "Estimated total budget range if calculated, e.g. '$8,400–$12,600'",
        -  "maxLength": 120,
        -  "type": "string"
        -}
      • removedInput schema / properties / city
        Removed value: -{
        -  "description": "City where the event is held",
        -  "maxLength": 120,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / company
        Removed value: -{
        -  "description": "Company or organization name",
        -  "maxLength": 160,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / compliance_notes
        Removed value: -{
        -  "description": "Any compliance flags surfaced by get_compliance_by_state",
        -  "maxLength": 2000,
        -  "type": "string"
        -}
      • removedInput schema / properties / contact_email
        Removed value: -{
        -  "description": "Contact email address for the quote response",
        -  "format": "email",
        -  "maxLength": 254,
        -  "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
        -  "type": "string"
        -}
      • removedInput schema / properties / contact_name
        Removed value: -{
        -  "description": "Full name of the contact person",
        -  "maxLength": 120,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / contact_phone
        Removed value: -{
        -  "description": "Optional phone number for the coordinator to reach the buyer (event ops is phone-first; include when known)",
        -  "maxLength": 40,
        -  "type": "string"
        -}
      • removedInput schema / properties / event_dates
        Removed value: -{
        -  "description": "Event dates as a human-readable string, e.g. 'June 15–17, 2026'",
        -  "maxLength": 160,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / event_name
        Removed value: -{
        -  "description": "Name of the event (e.g. 'HIMSS 2026', 'Brand Fest Austin')",
        -  "maxLength": 200,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / event_type
        Removed value: -{
        -  "description": "Event type: trade-show, conference, festival, concert, sporting-event, corporate, brand-activation, or other",
        -  "maxLength": 80,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / locations
        Removed value: -{
        -  "description": "Additional cities for a multi-city / tour program. The top-level city, dates, and roles describe the primary or first location; each entry here adds another.",
        -  "items": {
        -    "properties": {
        -      "city": {
        -        "description": "City for this leg of a multi-city program",
        -        "maxLength": 120,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "event_dates": {
        -        "description": "Dates for this location, if they differ from the top-level dates",
        -        "maxLength": 160,
        -        "type": "string"
        -      },
        -      "roles": {
        -        "description": "Roles for this location if they differ from the top-level roles",
        -        "items": {
        -          "properties": {
        -            "headcount": {
        -              "description": "Number of staff needed at this location",
        -              "exclusiveMinimum": 0,
        -              "maximum": 10000,
        -              "type": "integer"
        -            },
        -            "role": {
        -              "description": "Staffing role name",
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "shifts": {
        -              "description": "Shift description for this location",
        -              "maxLength": 160,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "role",
        -            "headcount"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "venue": {
        -        "description": "Venue for this location, if known",
        -        "maxLength": 200,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "city"
        -    ],
        -    "type": "object"
        -  },
        -  "maxItems": 50,
        -  "type": "array"
        -}
      • changedInput schema / properties / plan_id / description
        Previous value: -"Optional plan_id returned by plan_staffing or save_staffing_plan; links the submitted quote to its saved non-PII plan"New value: +"Saved non-PII plan reference returned by plan_staffing or save_staffing_plan."
      • removedInput schema / properties / roles
        Removed value: -{
        -  "description": "Roles and headcount needed for the event",
        -  "items": {
        -    "properties": {
        -      "headcount": {
        -        "description": "Number of staff needed",
        -        "exclusiveMinimum": 0,
        -        "maximum": 10000,
        -        "type": "integer"
        -      },
        -      "role": {
        -        "description": "Staffing role name, e.g. brand-ambassadors, registration-staff",
        -        "maxLength": 80,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "shifts": {
        -        "description": "Shift description, e.g. '2 days × 8h'",
        -        "maxLength": 160,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "headcount"
        -    ],
        -    "type": "object"
        -  },
        -  "maxItems": 50,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • changedInput schema / properties / skill_id / description
        Previous value: -"Optional canonical TempGuru skill slug that assembled this request"New value: +"Optional canonical TempGuru skill that assembled the plan."
      • changedInput schema / properties / skill_version / description
        Previous value: -"Optional version of the TempGuru staffing skill used to assemble this request"New value: +"Optional version of the TempGuru staffing skill used."
      • addedInput schema / properties / skill_version / pattern
        Added value: +"^[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}(?:-[0-9A-Za-z.-]{1,24})?(?:\\+[0-9A-Za-z.-]{1,24})?$"
      • changedInput schema / properties / source_platform / description
        Previous value: -"Optional agent/platform attribution, e.g. chatgpt-gpt, claude-desktop, coze"New value: +"Optional agent/platform attribution, e.g. claude-ai, openclaw, or hermes."
      • removedInput schema / properties / special_requirements
        Removed value: -{
        -  "description": "Any special requirements: language skills, certifications, overnight shifts, etc.",
        -  "maxLength": 2000,
        -  "type": "string"
        -}
      • removedInput schema / properties / venue
        Removed value: -{
        -  "description": "Primary venue name and/or address, when known",
        -  "maxLength": 200,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "contact_name",
        -  "contact_email",
        -  "company",
        -  "event_name",
        -  "event_type",
        -  "city",
        -  "event_dates",
        -  "roles"
        -]New value: +[
        +  "plan_id"
        +]
      • addedOutput schema / properties / buyer_submission_required
        Added value: +{
        +  "const": true,
        +  "description": "Always true. The buyer, not the agent, must enter contact details and submit the form.",
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / deal_name
        Removed value: -{
        -  "description": "CRM deal name, present when submitted.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "description": "Present when submission failed.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / form_url
        Added value: +{
        +  "description": "Prefilled TempGuru-owned review form. Present only when handoff_ready is true.",
        +  "format": "uri",
        +  "type": "string"
        +}
      • addedOutput schema / properties / handoff_ready
        Added value: +{
        +  "description": "true when the saved plan resolved and a prefilled buyer form URL was created.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / message / description
        Previous value: -"Human-readable outcome to relay to the user."New value: +"Human-readable outcome to relay to the buyer."
      • changedOutput schema / properties / next_steps / description
        Previous value: -"Present when submitted."New value: +"Safe next actions; no agent-side contact collection."
      • addedOutput schema / properties / plan_found
        Added value: +{
        +  "description": "Whether the supplied non-PII plan_id resolved before expiry.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / plan_id
        Added value: +{
        +  "pattern": "^[A-HJ-NP-Z2-9]{12}$",
        +  "type": "string"
        +}
      • removedOutput schema / properties / plan_linked
        Removed value: -{
        -  "description": "true when the supplied plan_id resolved and its saved snapshot was attached to the lead.",
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / reference
        Removed value: -{
        -  "description": "Short reference code the buyer can quote when following up.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / submitted
        Removed value: -{
        -  "description": "true = lead created in TempGuru's CRM (or durably queued); false = submission failed (see error).",
        -  "type": "boolean"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "submitted",
        -  "message"
        -]New value: +[
        +  "handoff_ready",
        +  "buyer_submission_required",
        +  "plan_found",
        +  "plan_id",
        +  "message",
        +  "next_steps"
        +]
    • Changedsave_staffing_plan3 fields changed
      • changedOutput schema / properties / next_actions / items / enum
        Previous value: -[
        -  "share",
        -  "revise",
        -  "request_quote",
        -  "plan_again",
        -  "retry_save",
        -  "continue_on_website",
        -  "request_quote_without_plan_id"
        -]New value: +[
        +  "share",
        +  "revise",
        +  "request_quote",
        +  "plan_again",
        +  "retry_save",
        +  "continue_on_website"
        +]
      • changedOutput schema / properties / quote_readiness / const
        Previous value: -"needs_contact"New value: +"buyer_submission_required"
      • changedOutput schema / properties / quote_readiness / description
        Previous value: -"The plan is complete; contact details are still required before request_quote."New value: +"The buyer must open the handoff form and personally submit their contact details."
  8. 12 tool updates
    • Changedcheck_availability2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cities2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_compliance_by_state2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_plan3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / plan_id / description
        Previous value: -"12-character lookalike-free plan reference returned by plan_staffing."New value: +"12-character lookalike-free plan reference returned by plan_staffing or save_staffing_plan."
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_policies2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_quote_status2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_rate_benchmark2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_role_pricing2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_roles2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedplan_staffing2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrequest_quote3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / plan_id / description
        Previous value: -"Optional plan_id returned by plan_staffing; links the submitted quote to its saved non-PII plan"New value: +"Optional plan_id returned by plan_staffing or save_staffing_plan; links the submitted quote to its saved non-PII plan"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Addedsave_staffing_plan
  9. 3 tool updates
    • Changedget_compliance_by_state1 field changed
      • addedOutput schema / properties / data_version
        Added value: +{
        +  "description": "Version of the compliance dataset used for this result.",
        +  "type": "string"
        +}
    • Changedget_rate_benchmark3 fields changed
      • changedInput schema / properties / role / description
        Previous value: -"Optional role name or slug to filter to one role."New value: +"Optional non-empty role name or slug to filter to one role."
      • addedInput schema / properties / role / maxLength
        Added value: +100
      • addedInput schema / properties / role / minLength
        Added value: +1
    • Changedplan_staffing1 field changed
      • changedOutput schema / properties / compliance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "jurisdiction": {
        -        "description": "US state or Canadian province the rules below belong to.",
        -        "type": "string"
        -      },
        -      "min_wage_usd": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "US states only; null for Canadian provinces (coordinator confirms provincial wage floors)."
        -      },
        -      "note": {
        -        "type": "string"
        -      },
        -      "overtime_daily_hours": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "overtime_weekly_hours": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "unique_rules": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "jurisdiction",
        -      "min_wage_usd",
        -      "overtime_weekly_hours",
        -      "overtime_daily_hours",
        -      "unique_rules",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "citation_note": {
        +        "type": "string"
        +      },
        +      "currency_note": {
        +        "type": "string"
        +      },
        +      "data_current_as_of": {
        +        "description": "Date the jurisdiction dataset was last verified (YYYY-MM-DD).",
        +        "type": "string"
        +      },
        +      "data_version": {
        +        "description": "Version identifier for the jurisdiction dataset used by the plan.",
        +        "type": "string"
        +      },
        +      "jurisdiction": {
        +        "description": "US state or Canadian province the rules below belong to.",
        +        "type": "string"
        +      },
        +      "min_wage_as_of": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Effective date of the stored wage floor; null when no wage is stored."
        +      },
        +      "min_wage_source": {
        +        "anyOf": [
        +          {
        +            "format": "uri",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Authoritative wage source; null for Canadian plans where the coordinator confirms the floor."
        +      },
        +      "min_wage_usd": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "US states only; null for Canadian provinces (coordinator confirms provincial wage floors)."
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "overtime_daily_hours": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "overtime_weekly_hours": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "unique_rules": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "jurisdiction",
        +      "min_wage_usd",
        +      "overtime_weekly_hours",
        +      "overtime_daily_hours",
        +      "unique_rules",
        +      "data_version",
        +      "data_current_as_of",
        +      "min_wage_as_of",
        +      "min_wage_source",
        +      "currency_note",
        +      "citation_note",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  10. 1 tool update
    • Changedrequest_quote4 fields changed
      • addedInput schema / properties / attendees
        Added value: +{
        +  "description": "Expected event attendance, if known (informs coverage ratios)",
        +  "exclusiveMinimum": 0,
        +  "maximum": 5000000,
        +  "type": "integer"
        +}
      • addedInput schema / properties / locations
        Added value: +{
        +  "description": "Additional cities for a multi-city / tour program. The top-level city, dates, and roles describe the primary or first location; each entry here adds another.",
        +  "items": {
        +    "properties": {
        +      "city": {
        +        "description": "City for this leg of a multi-city program",
        +        "maxLength": 120,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "event_dates": {
        +        "description": "Dates for this location, if they differ from the top-level dates",
        +        "maxLength": 160,
        +        "type": "string"
        +      },
        +      "roles": {
        +        "description": "Roles for this location if they differ from the top-level roles",
        +        "items": {
        +          "properties": {
        +            "headcount": {
        +              "description": "Number of staff needed at this location",
        +              "exclusiveMinimum": 0,
        +              "maximum": 10000,
        +              "type": "integer"
        +            },
        +            "role": {
        +              "description": "Staffing role name",
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "shifts": {
        +              "description": "Shift description for this location",
        +              "maxLength": 160,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "role",
        +            "headcount"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "venue": {
        +        "description": "Venue for this location, if known",
        +        "maxLength": 200,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "city"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • changedInput schema / properties / skill_id / enum
        Previous value: -[
        -  "event-staffing-ordering",
        -  "event-staffing-compliance",
        -  "staffing-plan-from-event-brief",
        -  "urgent-event-backfill",
        -  "staffing-agency-partner-growth"
        -]New value: +[
        +  "event-staffing-ordering",
        +  "event-staffing-compliance",
        +  "staffing-plan-from-event-brief",
        +  "urgent-event-backfill",
        +  "staffing-agency-partner-growth",
        +  "multi-city-activation-planner",
        +  "event-staffing-procurement",
        +  "tempguru-pro-operations"
        +]
      • addedInput schema / properties / venue
        Added value: +{
        +  "description": "Primary venue name and/or address, when known",
        +  "maxLength": 200,
        +  "type": "string"
        +}
  11. 8 tool updates
    • Changedcheck_availability1 field changed
      • changedOutput schema / properties / city_tier / description
        Previous value: -"Market tier: hub = 25 major metros, mid = 129 secondary markets, small = 191 tertiary markets."New value: +"Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets."
    • Changedget_cities2 fields changed
      • changedOutput schema / properties / cities / items / properties / tier / description
        Previous value: -"Market tier: hub = 25 major metros, mid = 129 secondary markets, small = 191 tertiary markets."New value: +"Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets."
      • changedOutput schema / properties / city / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "country": {
        -        "description": "US or CA.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "slug": {
        -        "type": "string"
        -      },
        -      "state": {
        -        "type": "string"
        -      },
        -      "state_abbr": {
        -        "type": "string"
        -      },
        -      "tier": {
        -        "description": "Market tier: hub = 25 major metros, mid = 129 secondary markets, small = 191 tertiary markets.",
        -        "enum": [
        -          "hub",
        -          "mid",
        -          "small"
        -        ],
        -        "type": "string"
        -      },
        -      "url": {
        -        "description": "City detail page on tempguru.co.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "slug",
        -      "name",
        -      "state",
        -      "state_abbr",
        -      "country",
        -      "tier",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "country": {
        +        "description": "US or CA.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "slug": {
        +        "type": "string"
        +      },
        +      "state": {
        +        "type": "string"
        +      },
        +      "state_abbr": {
        +        "type": "string"
        +      },
        +      "tier": {
        +        "description": "Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.",
        +        "enum": [
        +          "hub",
        +          "mid",
        +          "small"
        +        ],
        +        "type": "string"
        +      },
        +      "url": {
        +        "description": "City detail page on tempguru.co.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "slug",
        +      "name",
        +      "state",
        +      "state_abbr",
        +      "country",
        +      "tier",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Addedget_plan
    • Addedget_policies
    • Addedget_quote_status
    • Changedget_role_pricing1 field changed
      • changedOutput schema / properties / city_tier / description
        Previous value: -"Market tier: hub = 25 major metros, mid = 129 secondary markets, small = 191 tertiary markets."New value: +"Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets."
    • Changedplan_staffing2 fields changed
      • addedOutput schema / properties / continuation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Complete plans only. Prefilled website handoff; may be present without plan_id when storage fails open.",
        +  "properties": {
        +    "form_url": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "form_url",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / plan_id
        Added value: +{
        +  "description": "Complete plans only. Non-PII plan reference retained for 30 days when Redis persistence succeeds.",
        +  "pattern": "^[A-HJ-NP-Z2-9]{12}$",
        +  "type": "string"
        +}
    • Changedrequest_quote5 fields changed
      • addedInput schema / properties / plan_id
        Added value: +{
        +  "description": "Optional plan_id returned by plan_staffing; links the submitted quote to its saved non-PII plan",
        +  "maxLength": 12,
        +  "pattern": "^[A-HJ-NP-Z2-9]{12}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / skill_id
        Added value: +{
        +  "description": "Optional canonical TempGuru skill slug that assembled this request",
        +  "enum": [
        +    "event-staffing-ordering",
        +    "event-staffing-compliance",
        +    "staffing-plan-from-event-brief",
        +    "urgent-event-backfill",
        +    "staffing-agency-partner-growth"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / skill_version
        Added value: +{
        +  "description": "Optional version of the TempGuru staffing skill used to assemble this request",
        +  "maxLength": 40,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / source_platform
        Added value: +{
        +  "description": "Optional agent/platform attribution, e.g. chatgpt-gpt, claude-desktop, coze",
        +  "maxLength": 80,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / plan_linked
        Added value: +{
        +  "description": "true when the supplied plan_id resolved and its saved snapshot was attached to the lead.",
        +  "type": "boolean"
        +}
  12. 6 tool updates
    • Changedcheck_availability4 fields changed
      • addedOutput schema / properties / in_past
        Added value: +{
        +  "description": "True when the requested date is already in the past — confirm the date before planning.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / role_found
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "null = no role requested; false = the requested role didn't match the catalog (see notes)."
        +}
      • addedOutput schema / properties / role_suggestion
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / suggestion / description
        Previous value: -"Closest known city/role for a miss; retry with this slug."New value: +"Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply."
    • Changedget_cities1 field changed
      • changedOutput schema / properties / suggestion / description
        Previous value: -"Closest known city/role for a miss; retry with this slug."New value: +"Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply."
    • Changedget_compliance_by_state2 fields changed
      • addedOutput schema / properties / overtime_daily_double_hours
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Start of the double-time band (hours/day) where the state has one (CA: 12); null otherwise."
        +}
      • addedOutput schema / properties / seventh_day_overtime
        Added value: +{
        +  "description": "True where a seventh-consecutive-day premium applies (CA).",
        +  "type": "boolean"
        +}
    • Changedget_role_pricing2 fields changed
      • addedOutput schema / properties / role_note
        Added value: +{
        +  "description": "Caveat about the resolved role (e.g. 'security' maps to unarmed Crowd Control, not licensed security).",
        +  "type": "string"
        +}
      • changedOutput schema / properties / suggestion / description
        Previous value: -"Closest known city/role for a miss; retry with this slug."New value: +"Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply."
    • Changedplan_staffing21 fields changed
      • changedInput schema / properties / attendees / maximum
        Previous value: -9007199254740991New value: +5000000
      • addedInput schema / properties / city / maxLength
        Added value: +120
      • addedInput schema / properties / description / maxLength
        Added value: +2000
      • addedInput schema / properties / event_date / maxLength
        Added value: +40
      • addedInput schema / properties / event_type / maxLength
        Added value: +80
      • changedInput schema / properties / roles / items / properties / days / maximum
        Previous value: -9007199254740991New value: +365
      • changedInput schema / properties / roles / items / properties / headcount / maximum
        Previous value: -9007199254740991New value: +10000
      • changedInput schema / properties / roles / items / properties / hours_per_shift / description
        Previous value: -"Hours per shift (default 8)."New value: +"Hours per shift (default 8, max 24)."
      • addedInput schema / properties / roles / items / properties / hours_per_shift / maximum
        Added value: +24
      • addedInput schema / properties / roles / items / properties / role / maxLength
        Added value: +80
      • addedInput schema / properties / roles / maxItems
        Added value: +50
      • changedOutput schema / properties / compliance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "min_wage_usd": {
        -        "type": "number"
        -      },
        -      "note": {
        -        "type": "string"
        -      },
        -      "overtime_daily_hours": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "overtime_weekly_hours": {
        -        "maximum": 9007199254740991,
        -        "minimum": -9007199254740991,
        -        "type": "integer"
        -      },
        -      "state": {
        -        "type": "string"
        -      },
        -      "unique_rules": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "state",
        -      "min_wage_usd",
        -      "overtime_weekly_hours",
        -      "overtime_daily_hours",
        -      "unique_rules",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "jurisdiction": {
        +        "description": "US state or Canadian province the rules below belong to.",
        +        "type": "string"
        +      },
        +      "min_wage_usd": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "US states only; null for Canadian provinces (coordinator confirms provincial wage floors)."
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "overtime_daily_hours": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "overtime_weekly_hours": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "unique_rules": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "jurisdiction",
        +      "min_wage_usd",
        +      "overtime_weekly_hours",
        +      "overtime_daily_hours",
        +      "unique_rules",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / overtime_adjusted_total_range / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "currency": {
        -        "enum": [
        -          "USD",
        -          "CAD"
        -        ],
        -        "type": "string"
        -      },
        -      "high": {
        -        "type": "number"
        -      },
        -      "low": {
        -        "type": "number"
        -      },
        -      "note": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "low",
        -      "high",
        -      "currency",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "currency": {
        +        "enum": [
        +          "USD",
        +          "CAD"
        +        ],
        +        "type": "string"
        +      },
        +      "high": {
        +        "type": "number"
        +      },
        +      "includes_double_time": {
        +        "description": "True when a 2x band (CA/BC >12h/day, CA 7th consecutive day) is included.",
        +        "type": "boolean"
        +      },
        +      "low": {
        +        "type": "number"
        +      },
        +      "note": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "low",
        +      "high",
        +      "currency",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / overtime_adjusted_total_range / description
        Previous value: -"Present (non-null) only when daily/weekly OT applies to the schedule."New value: +"Present (non-null) only when daily/weekly OT (or a double-time band) applies to the schedule."
      • addedOutput schema / properties / plan_complete
        Added value: +{
        +  "description": "status:plan only. false = one or more requested roles could not be priced and are EXCLUDED from all totals (see unpriced_roles) — resolve them and re-plan before presenting a budget or quoting.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / suggestion / description
        Previous value: -"Closest known city/role for a miss; retry with this slug."New value: +"Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply."
      • addedOutput schema / properties / unpriced_roles
        Added value: +{
        +  "description": "status:plan with plan_complete:false — the requested lines missing from every total.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "days": {
        +        "type": "number"
        +      },
        +      "headcount": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "hours_per_shift": {
        +        "type": "number"
        +      },
        +      "role": {
        +        "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"
        +      }
        +    },
        +    "required": [
        +      "role"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / unresolved_roles / items / properties / days
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / unresolved_roles / items / properties / headcount
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / unresolved_roles / items / properties / hours_per_shift
        Added value: +{
        +  "type": "number"
        +}
      • changedOutput schema / properties / unresolved_roles / items / properties / suggestion / description
        Previous value: -"Closest known city/role for a miss; retry with this slug."New value: +"Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply."
    • Changedrequest_quote16 fields changed
      • addedInput schema / properties / attire / maxLength
        Added value: +500
      • addedInput schema / properties / budget_range / maxLength
        Added value: +120
      • addedInput schema / properties / city / maxLength
        Added value: +120
      • addedInput schema / properties / company / maxLength
        Added value: +160
      • addedInput schema / properties / compliance_notes / maxLength
        Added value: +2000
      • addedInput schema / properties / contact_email / maxLength
        Added value: +254
      • addedInput schema / properties / contact_name / maxLength
        Added value: +120
      • addedInput schema / properties / contact_phone / maxLength
        Added value: +40
      • addedInput schema / properties / event_dates / maxLength
        Added value: +160
      • addedInput schema / properties / event_name / maxLength
        Added value: +200
      • addedInput schema / properties / event_type / maxLength
        Added value: +80
      • changedInput schema / properties / roles / items / properties / headcount / maximum
        Previous value: -9007199254740991New value: +10000
      • addedInput schema / properties / roles / items / properties / role / maxLength
        Added value: +80
      • addedInput schema / properties / roles / items / properties / shifts / maxLength
        Added value: +160
      • addedInput schema / properties / roles / maxItems
        Added value: +50
      • addedInput schema / properties / special_requirements / maxLength
        Added value: +2000
  13. 2 tool updates
    • Changedget_cities13 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Optional single-city coverage check (nickname/borough aware). Returns covered yes/no + suggestion.",
        +  "type": "string"
        +}
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Optional country filter: 'US' or 'CA'.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional cap on the number of cities returned (full counts still in total/tier_breakdown).",
        +  "exclusiveMinimum": 0,
        +  "maximum": 9007199254740991,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / city
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "country": {
        +          "description": "US or CA.",
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "state": {
        +          "type": "string"
        +        },
        +        "state_abbr": {
        +          "type": "string"
        +        },
        +        "tier": {
        +          "description": "Market tier: hub = 25 major metros, mid = 129 secondary markets, small = 191 tertiary markets.",
        +          "enum": [
        +            "hub",
        +            "mid",
        +            "small"
        +          ],
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "City detail page on tempguru.co.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "slug",
        +        "name",
        +        "state",
        +        "state_abbr",
        +        "country",
        +        "tier",
        +        "url"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "The matched market (coverage check), or null if not covered."
        +}
      • addedOutput schema / properties / coverage_check
        Added value: +{
        +  "const": true,
        +  "description": "Present when a single-city coverage check was requested.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / covered
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Present when the list was truncated by limit.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requested
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / returned
        Added value: +{
        +  "description": "Number of cities in the cities array (after limit).",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / suggestion
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Closest known city/role for a miss; retry with this slug.",
        +  "properties": {
        +    "kind": {
        +      "enum": [
        +        "city",
        +        "role"
        +      ],
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "slug": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "slug",
        +    "name"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / total / description
        Previous value: -"Number of cities matching the filter."New value: +"Total cities matching the filter (before limit)."
      • removedOutput schema / required
        Removed value: -[
        -  "total",
        -  "tier_breakdown",
        -  "cities"
        -]
    • Changedget_compliance_by_state4 fields changed
      • addedOutput schema / properties / currency_note
        Added value: +{
        +  "description": "Reminder that wages change annually; verify before relying.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / data_current_as_of
        Added value: +{
        +  "description": "Date the compliance dataset was last verified (YYYY-MM-DD).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / min_wage_as_of
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Effective date of this state's stored minimum wage."
        +}
      • addedOutput schema / properties / min_wage_source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Authoritative source URL for the minimum wage figure."
        +}
  14. 5 tool updates
    • Changedcheck_availability1 field changed
      • addedOutput schema / properties / suggestion
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Closest known city/role for a miss; retry with this slug.",
        +  "properties": {
        +    "kind": {
        +      "enum": [
        +        "city",
        +        "role"
        +      ],
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "slug": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "slug",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedget_rate_benchmark2 fields changed
      • changedInput schema / properties / tier / description
        Previous value: -"Optional market tier filter."New value: +"Optional market tier; adds each role's measured span within that tier (tier_usd)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "available_roles": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "basis": {
        +      "type": "string"
        +    },
        +    "citation": {
        +      "type": "string"
        +    },
        +    "data_version": {
        +      "type": "string"
        +    },
        +    "edition": {
        +      "type": "string"
        +    },
        +    "floors": {
        +      "type": "string"
        +    },
        +    "index": {
        +      "type": "string"
        +    },
        +    "markets_measured": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "hub": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "mid": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "small": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "small",
        +        "mid",
        +        "hub"
        +      ],
        +      "type": "object"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "methodology_url": {
        +      "type": "string"
        +    },
        +    "rates": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "by_tier_usd": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "hub": {
        +                "type": "string"
        +              },
        +              "mid": {
        +                "type": "string"
        +              },
        +              "small": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "small",
        +              "mid",
        +              "hub"
        +            ],
        +            "type": "object"
        +          },
        +          "national_range_usd": {
        +            "type": "string"
        +          },
        +          "role": {
        +            "type": "string"
        +          },
        +          "role_key": {
        +            "type": "string"
        +          },
        +          "tier": {
        +            "enum": [
        +              "hub",
        +              "mid",
        +              "small"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_usd": {
        +            "type": "string"
        +          },
        +          "typical_usd": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "role_key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reading_note": {
        +      "type": "string"
        +    },
        +    "requested": {
        +      "type": "string"
        +    },
        +    "requested_tier": {
        +      "enum": [
        +        "hub",
        +        "mid",
        +        "small"
        +      ],
        +      "type": "string"
        +    },
        +    "role_found": {
        +      "const": false,
        +      "type": "boolean"
        +    },
        +    "updated": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_role_pricing1 field changed
      • addedOutput schema / properties / suggestion
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Closest known city/role for a miss; retry with this slug.",
        +  "properties": {
        +    "kind": {
        +      "enum": [
        +        "city",
        +        "role"
        +      ],
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "slug": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "slug",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedplan_staffing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "available_roles": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "roles": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "description": {
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "type": "string"
        +                  },
        +                  "skill_tier": {
        +                    "type": "number"
        +                  },
        +                  "slug": {
        +                    "type": "string"
        +                  },
        +                  "typical_shift_length_hours": {
        +                    "type": "number"
        +                  },
        +                  "url": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "slug",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "total": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "total",
        +            "roles"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "compliance": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "min_wage_usd": {
        +              "type": "number"
        +            },
        +            "note": {
        +              "type": "string"
        +            },
        +            "overtime_daily_hours": {
        +              "anyOf": [
        +                {
        +                  "maximum": 9007199254740991,
        +                  "minimum": -9007199254740991,
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "overtime_weekly_hours": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "state": {
        +              "type": "string"
        +            },
        +            "unique_rules": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "state",
        +            "min_wage_usd",
        +            "overtime_weekly_hours",
        +            "overtime_daily_hours",
        +            "unique_rules",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "estimated_total_range": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "basis": {
        +          "type": "string"
        +        },
        +        "currency": {
        +          "enum": [
        +            "USD",
        +            "CAD"
        +          ],
        +          "type": "string"
        +        },
        +        "high": {
        +          "type": "number"
        +        },
        +        "low": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "low",
        +        "high",
        +        "currency",
        +        "basis"
        +      ],
        +      "type": "object"
        +    },
        +    "event": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "attendees": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "city": {
        +          "type": "string"
        +        },
        +        "description": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "event_date": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "event_type": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "market_tier": {
        +          "type": "string"
        +        },
        +        "state": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "city",
        +        "state",
        +        "market_tier"
        +      ],
        +      "type": "object"
        +    },
        +    "lead_time": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "days_until_event": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "event_date": {
        +              "type": "string"
        +            },
        +            "note": {
        +              "type": "string"
        +            },
        +            "recommendation": {
        +              "enum": [
        +                "yes",
        +                "tight",
        +                "rush",
        +                "very-rush"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "event_date",
        +            "days_until_event",
        +            "recommendation",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "next_steps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "overtime_adjusted_total_range": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "currency": {
        +              "enum": [
        +                "USD",
        +                "CAD"
        +              ],
        +              "type": "string"
        +            },
        +            "high": {
        +              "type": "number"
        +            },
        +            "low": {
        +              "type": "number"
        +            },
        +            "note": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "low",
        +            "high",
        +            "currency",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Present (non-null) only when daily/weekly OT applies to the schedule."
        +    },
        +    "plan_lines": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "days": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "estimated_total_range": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "high": {
        +                "type": "number"
        +              },
        +              "low": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "low",
        +              "high"
        +            ],
        +            "type": "object"
        +          },
        +          "headcount": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "hourly_range": {
        +            "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"
        +          },
        +          "hours_per_shift": {
        +            "type": "number"
        +          },
        +          "role": {
        +            "type": "string"
        +          },
        +          "role_slug": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "role_slug",
        +          "headcount",
        +          "hours_per_shift",
        +          "days",
        +          "hourly_range",
        +          "estimated_total_range"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "requested_city": {
        +      "type": "string"
        +    },
        +    "requested_roles": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "staffing_notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "description": "Discriminator. Branch on this before reading the rest.",
        +      "enum": [
        +        "plan",
        +        "needs_roles",
        +        "roles_not_found",
        +        "city_not_found"
        +      ],
        +      "type": "string"
        +    },
        +    "suggestion": {
        +      "additionalProperties": false,
        +      "description": "Closest known city/role for a miss; retry with this slug.",
        +      "properties": {
        +        "kind": {
        +          "enum": [
        +            "city",
        +            "role"
        +          ],
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "slug",
        +        "name"
        +      ],
        +      "type": "object"
        +    },
        +    "tip": {
        +      "type": "string"
        +    },
        +    "unresolved_roles": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "role": {
        +            "type": "string"
        +          },
        +          "suggestion": {
        +            "additionalProperties": false,
        +            "description": "Closest known city/role for a miss; retry with this slug.",
        +            "properties": {
        +              "kind": {
        +                "enum": [
        +                  "city",
        +                  "role"
        +                ],
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "slug": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "slug",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "role"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedrequest_quote3 fields changed
      • addedInput schema / properties / contact_phone
        Added value: +{
        +  "description": "Optional phone number for the coordinator to reach the buyer (event ops is phone-first; include when known)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / reference
        Added value: +{
        +  "description": "Short reference code the buyer can quote when following up.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / submitted / description
        Previous value: -"true = lead created in TempGuru's CRM; false = submission failed (see error)."New value: +"true = lead created in TempGuru's CRM (or durably queued); false = submission failed (see error)."
  15. 1 tool update
    • Addedget_rate_benchmark

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an agent client to build a single-day shop handover plan and check whether entered tasks have coverage, surfacing exact time overlaps and other blockers that prevent a workable handover. Supports version-checked assignment, simulated helper acceptance, cancellation, time correction, and scope confirmation, reopening affected duties when a helper drops out while leaving the rest intact.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables conversational CRUD management of a service catalog and service orders, including item manipulation, search, and business-rule validation through natural language.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables workplace self-service tasks such as directory lookup, time-off management, ticket creation, and policy search, with write operations governed and compensation changes structurally denied.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.