{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "commerce",
    "endpoint": "https://mcp.tempguru.co/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/tempguru-event-staffing.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/tempguru-event-staffing.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/tempguru-event-staffing.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 12665,
        "counts": {
          "error": 0,
          "note": 0,
          "warn": 1
        },
        "findings": [
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "plan_staffing",
            "message": "the definition is about 2,648 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:21:48Z",
      "count": 12,
      "schemaTokens": 12665,
      "status": "ok",
      "tools": [
        {
          "name": "plan_staffing",
          "title": "Plan Staffing",
          "description": "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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "attendees": {
                "description": "Expected attendee count.",
                "exclusiveMinimum": 0,
                "maximum": 5000000,
                "type": "integer"
              },
              "city": {
                "description": "Event city, name or slug (e.g., 'Chicago').",
                "maxLength": 120,
                "type": "string"
              },
              "description": {
                "description": "Optional free-text event description, echoed into the plan.",
                "maxLength": 2000,
                "type": "string"
              },
              "event_date": {
                "description": "Event date as YYYY-MM-DD; legacy recognizable dates are still accepted.",
                "format": "date",
                "maxLength": 40,
                "type": "string"
              },
              "event_type": {
                "description": "trade-show, conference, festival, concert, sporting-event, corporate, brand-activation, or other.",
                "enum": [
                  "trade-show",
                  "conference",
                  "festival",
                  "concert",
                  "sporting-event",
                  "corporate",
                  "brand-activation",
                  "other"
                ],
                "maxLength": 80,
                "type": "string"
              },
              "roles": {
                "description": "Roles and headcount. Omit to receive the role catalog and a suggested mix.",
                "items": {
                  "properties": {
                    "days": {
                      "description": "Number of event days (default 1).",
                      "exclusiveMinimum": 0,
                      "maximum": 365,
                      "type": "integer"
                    },
                    "headcount": {
                      "description": "Staff needed for this role.",
                      "exclusiveMinimum": 0,
                      "maximum": 10000,
                      "type": "integer"
                    },
                    "hours_per_shift": {
                      "description": "Hours per shift (default 8, max 24).",
                      "exclusiveMinimum": 0,
                      "maximum": 24,
                      "type": "number"
                    },
                    "role": {
                      "description": "Role name or slug.",
                      "maxLength": 80,
                      "type": "string"
                    }
                  },
                  "required": [
                    "role",
                    "headcount"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "city"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/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": {
                      "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"
                  }
                ]
              },
              "continuation": {
                "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"
              },
              "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"
                      }
                    ]
                  },
                  "catalog_match": {
                    "const": true,
                    "type": "boolean"
                  },
                  "city": {
                    "type": "string"
                  },
                  "coverage_confirmation_required": {
                    "const": true,
                    "type": "boolean"
                  },
                  "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",
                  "catalog_match",
                  "coverage_confirmation_required"
                ],
                "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"
              },
              "offer_note": {
                "description": "Published first-order offer note. Totals remain undiscounted planning estimates.",
                "type": "string"
              },
              "overtime_adjusted_total_range": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "currency": {
                        "enum": [
                          "USD",
                          "CAD"
                        ],
                        "type": "string"
                      },
                      "high": {
                        "type": "number"
                      },
                      "includes_double_time": {
                        "description": "True when a 2x band (CA/BC \u003e12h/day, CA 7th consecutive day) is included.",
                        "type": "boolean"
                      },
                      "low": {
                        "type": "number"
                      },
                      "note": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "low",
                      "high",
                      "currency",
                      "note"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Present (non-null) only when daily/weekly OT (or a double-time band) applies to the schedule."
              },
              "plan_complete": {
                "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"
              },
              "plan_id": {
                "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"
              },
              "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. 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"
              },
              "tip": {
                "type": "string"
              },
              "unpriced_roles": {
                "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"
              },
              "unresolved_roles": {
                "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"
              }
            },
            "required": [
              "status"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Plan Staffing"
          }
        },
        {
          "name": "save_staffing_plan",
          "title": "Save Staffing Plan",
          "description": "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. \u003chints\u003eBranch 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "attendees": {
                "description": "Expected attendee count.",
                "exclusiveMinimum": 0,
                "maximum": 5000000,
                "type": "integer"
              },
              "city": {
                "description": "Event city, name or slug (e.g. Chicago).",
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "event_date": {
                "description": "Event date as YYYY-MM-DD; legacy recognizable dates are still accepted.",
                "format": "date",
                "maxLength": 40,
                "minLength": 1,
                "type": "string"
              },
              "event_type": {
                "description": "trade-show, conference, festival, concert, sporting-event, corporate, brand-activation, or other.",
                "enum": [
                  "trade-show",
                  "conference",
                  "festival",
                  "concert",
                  "sporting-event",
                  "corporate",
                  "brand-activation",
                  "other"
                ],
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              "roles": {
                "description": "Confirmed roles, headcount, hours, and days to recompute and save.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "days": {
                      "description": "Number of event days (default 1).",
                      "exclusiveMinimum": 0,
                      "maximum": 365,
                      "type": "integer"
                    },
                    "headcount": {
                      "description": "Staff needed for this role.",
                      "exclusiveMinimum": 0,
                      "maximum": 10000,
                      "type": "integer"
                    },
                    "hours_per_shift": {
                      "description": "Hours per shift (default 8, max 24).",
                      "exclusiveMinimum": 0,
                      "maximum": 24,
                      "type": "number"
                    },
                    "role": {
                      "description": "Role name or slug.",
                      "maxLength": 80,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "role",
                    "headcount"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "minItems": 1,
                "type": "array"
              }
            },
            "required": [
              "city",
              "roles"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "continuation": {
                "additionalProperties": false,
                "properties": {
                  "form_url": {
                    "format": "uri",
                    "type": "string"
                  },
                  "note": {
                    "type": "string"
                  }
                },
                "required": [
                  "form_url",
                  "note"
                ],
                "type": "object"
              },
              "created_at": {
                "format": "date-time",
                "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])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                "type": "string"
              },
              "expires_at": {
                "description": "Conservative 30-day expiry for the saved snapshot.",
                "format": "date-time",
                "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])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "next_actions": {
                "items": {
                  "enum": [
                    "share",
                    "revise",
                    "request_quote",
                    "plan_again",
                    "retry_save",
                    "continue_on_website"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "plan_id": {
                "description": "12-character reference for the saved non-PII snapshot.",
                "pattern": "^[A-HJ-NP-Z2-9]{12}$",
                "type": "string"
              },
              "plan_status": {
                "description": "Planner branch that prevented persistence.",
                "enum": [
                  "plan",
                  "needs_roles",
                  "roles_not_found",
                  "city_not_found"
                ],
                "type": "string"
              },
              "quote_readiness": {
                "const": "buyer_submission_required",
                "description": "The buyer must open the handoff form and personally submit their contact details.",
                "type": "string"
              },
              "resource_uri": {
                "description": "Public no-store REST URI that restores the saved artifact.",
                "format": "uri",
                "type": "string"
              },
              "retry_after_seconds": {
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              "schema_version": {
                "const": "1.0",
                "type": "string"
              },
              "status": {
                "description": "Discriminator. Only status:saved means a resumable plan_id exists.",
                "enum": [
                  "saved",
                  "plan_incomplete",
                  "rate_limited",
                  "storage_unavailable"
                ],
                "type": "string"
              }
            },
            "required": [
              "status",
              "message",
              "next_actions"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": false,
            "title": "Save Staffing Plan"
          }
        },
        {
          "name": "get_plan",
          "title": "Get Saved Staffing Plan",
          "description": "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. \u003cexamples\u003eget_plan(plan_id='ABCDEFGH2345')\u003c/examples\u003e \u003chints\u003eA 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "plan_id": {
                "description": "12-character lookalike-free plan reference returned by plan_staffing or save_staffing_plan.",
                "maxLength": 12,
                "pattern": "^[A-HJ-NP-Z2-9]{12}$",
                "type": "string"
              }
            },
            "required": [
              "plan_id"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "continuation": {
                "additionalProperties": false,
                "properties": {
                  "form_url": {
                    "format": "uri",
                    "type": "string"
                  },
                  "note": {
                    "type": "string"
                  }
                },
                "required": [
                  "form_url",
                  "note"
                ],
                "type": "object"
              },
              "message": {
                "type": "string"
              },
              "next_steps": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "offer_note": {
                "description": "Published first-order offer note. Snapshot totals remain undiscounted.",
                "type": "string"
              },
              "plan_found": {
                "description": "Discriminator. false means the reference was absent or expired.",
                "type": "boolean"
              },
              "plan_id": {
                "type": "string"
              },
              "snapshot": {
                "additionalProperties": false,
                "properties": {
                  "channel": {
                    "enum": [
                      "mcp",
                      "rest"
                    ],
                    "type": "string"
                  },
                  "city": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug",
                      "name",
                      "state"
                    ],
                    "type": "object"
                  },
                  "compliance_jurisdiction": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string"
                  },
                  "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": [
                          {
                            "maximum": 9007199254740991,
                            "minimum": -9007199254740991,
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "event_date": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "event_type": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "event_date",
                      "event_type",
                      "attendees"
                    ],
                    "type": "object"
                  },
                  "overtime_adjusted_total_range": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "currency": {
                            "enum": [
                              "USD",
                              "CAD"
                            ],
                            "type": "string"
                          },
                          "high": {
                            "type": "number"
                          },
                          "includes_double_time": {
                            "type": "boolean"
                          },
                          "low": {
                            "type": "number"
                          },
                          "note": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "low",
                          "high",
                          "currency",
                          "note"
                        ],
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "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"
                  },
                  "source": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "city",
                  "event",
                  "plan_lines",
                  "estimated_total_range",
                  "overtime_adjusted_total_range",
                  "compliance_jurisdiction",
                  "created_at",
                  "channel",
                  "source"
                ],
                "type": "object"
              }
            },
            "required": [
              "plan_found",
              "plan_id",
              "message",
              "next_steps"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Saved Staffing Plan"
          }
        },
        {
          "name": "get_cities",
          "title": "Get Cities",
          "description": "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. \u003cexamples\u003eget_cities(city='Brooklyn') ; get_cities(state='TX') ; get_cities(tier='hub', country='CA') ; get_cities(limit=25)\u003c/examples\u003e \u003chints\u003eState 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "city": {
                "description": "Optional single-city catalog match (nickname/borough aware). Returns catalog_match plus a suggestion; never a coverage promise.",
                "type": "string"
              },
              "country": {
                "description": "Optional country filter: 'US' or 'CA'.",
                "type": "string"
              },
              "limit": {
                "description": "Optional cap on the number of cities returned (full counts still in total/tier_breakdown).",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              "state": {
                "description": "Optional 2-letter state code (e.g., 'CA') or full state name.",
                "type": "string"
              },
              "tier": {
                "description": "Optional filter to one tier only.",
                "enum": [
                  "hub",
                  "mid",
                  "small"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "catalog_check": {
                "const": true,
                "description": "Present when a single-city catalog check was requested.",
                "type": "boolean"
              },
              "catalog_match": {
                "description": "Whether the city resolved to a configured catalog entry; not an availability or coverage promise.",
                "type": "boolean"
              },
              "catalog_qualification": {
                "type": "string"
              },
              "cities": {
                "items": {
                  "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": "array"
              },
              "city": {
                "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 = 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"
                  }
                ],
                "description": "The matched configured entry, or null when there was no catalog match."
              },
              "coverage_confirmation_required": {
                "const": true,
                "type": "boolean"
              },
              "message": {
                "type": "string"
              },
              "note": {
                "description": "Present when the list was truncated by limit.",
                "type": "string"
              },
              "requested": {
                "type": "string"
              },
              "returned": {
                "description": "Number of cities in the cities array (after limit).",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              },
              "suggestion": {
                "additionalProperties": false,
                "description": "Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply.",
                "properties": {
                  "kind": {
                    "enum": [
                      "city",
                      "role"
                    ],
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "slug",
                  "name"
                ],
                "type": "object"
              },
              "tier_breakdown": {
                "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": [
                  "hub",
                  "mid",
                  "small"
                ],
                "type": "object"
              },
              "total": {
                "description": "Total cities matching the filter (before limit).",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Cities"
          }
        },
        {
          "name": "get_roles",
          "title": "Get Roles",
          "description": "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. \u003cexamples\u003eget_roles()\u003c/examples\u003e \u003chints\u003eReturned slugs (brand-ambassadors, registration-staff, team-leads) are the exact values the other tools accept.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {},
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "roles": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "description": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "skill_tier": {
                      "description": "1 (entry) to 5 (lead).",
                      "maximum": 9007199254740991,
                      "minimum": -9007199254740991,
                      "type": "integer"
                    },
                    "slug": {
                      "description": "Use this slug in pricing/availability lookups.",
                      "type": "string"
                    },
                    "typical_shift_length_hours": {
                      "maximum": 9007199254740991,
                      "minimum": -9007199254740991,
                      "type": "integer"
                    },
                    "url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "slug",
                    "name",
                    "description",
                    "skill_tier",
                    "typical_shift_length_hours",
                    "url"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "total": {
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              }
            },
            "required": [
              "total",
              "roles"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Roles"
          }
        },
        {
          "name": "check_availability",
          "title": "Check Availability",
          "description": "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. \u003cexamples\u003echeck_availability(date='2026-08-14', city='Dallas') ; check_availability(date='2026-07-01', city='Boston', role='brand-ambassadors', count=6)\u003c/examples\u003e \u003chints\u003eEven a 'rush' window is worth submitting, same-week backfills exist in select markets.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "city": {
                "description": "City name (e.g., 'Boston') or slug (e.g., 'boston-event-staffing').",
                "type": "string"
              },
              "count": {
                "description": "Optional headcount for the event.",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              "date": {
                "description": "Event date as YYYY-MM-DD; legacy recognizable dates are still accepted.",
                "format": "date",
                "type": "string"
              },
              "role": {
                "description": "Optional role name or slug to include rate context.",
                "type": "string"
              }
            },
            "required": [
              "date",
              "city"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "catalog_match": {
                "const": true,
                "type": "boolean"
              },
              "city": {
                "type": "string"
              },
              "city_found": {
                "description": "false = city did not match the configured catalog (see message); true = planning guidance below, not confirmed coverage.",
                "type": "boolean"
              },
              "city_tier": {
                "description": "Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.",
                "enum": [
                  "hub",
                  "mid",
                  "small"
                ],
                "type": "string"
              },
              "count": {
                "anyOf": [
                  {
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Echo of the requested headcount."
              },
              "coverage_confirmation_required": {
                "const": true,
                "type": "boolean"
              },
              "days_until_event": {
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              },
              "error": {
                "description": "Present when the date could not be parsed.",
                "type": "string"
              },
              "event_date": {
                "description": "Normalized ISO date (YYYY-MM-DD).",
                "type": "string"
              },
              "in_past": {
                "description": "True when the requested date is already in the past — confirm the date before planning.",
                "type": "boolean"
              },
              "message": {
                "description": "Present when city_found is false.",
                "type": "string"
              },
              "notes": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "recommendation": {
                "description": "Lead-time guidance, NOT a reservation. Even rush is worth submitting.",
                "enum": [
                  "yes",
                  "tight",
                  "rush",
                  "very-rush"
                ],
                "type": "string"
              },
              "requested": {
                "description": "Echo of the unmatched city input.",
                "type": "string"
              },
              "role": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "all_inclusive": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "rate_range_usd": {
                        "additionalProperties": false,
                        "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                        "properties": {
                          "high": {
                            "description": "Upper end of the hourly rate range.",
                            "type": "number"
                          },
                          "low": {
                            "description": "Lower end of the hourly rate range.",
                            "type": "number"
                          }
                        },
                        "required": [
                          "low",
                          "high"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "name",
                      "rate_range_usd",
                      "all_inclusive"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Rate context when a role was provided; null otherwise."
              },
              "role_found": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "null = no role requested; false = the requested role didn't match the catalog (see notes)."
              },
              "role_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"
              },
              "state": {
                "type": "string"
              },
              "suggestion": {
                "additionalProperties": false,
                "description": "Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply.",
                "properties": {
                  "kind": {
                    "enum": [
                      "city",
                      "role"
                    ],
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "slug",
                  "name"
                ],
                "type": "object"
              },
              "typical_lead_time_hours": {
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              }
            },
            "required": [
              "city_found"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Check Availability"
          }
        },
        {
          "name": "get_role_pricing",
          "title": "Get Role Pricing",
          "description": "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. \u003cexamples\u003eget_role_pricing(role='Brand Ambassadors', city='Boston') ; get_role_pricing(role='registration-staff', city='nashville-event-staffing')\u003c/examples\u003e \u003chints\u003eRole and city accept names or slugs. Brand Ambassadors floor at $40/hour in every market.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "city": {
                "description": "City name (e.g., 'Boston') or slug (e.g., 'boston-event-staffing').",
                "type": "string"
              },
              "role": {
                "description": "Role name (e.g., 'Brand Ambassadors') or slug (e.g., 'brand-ambassadors').",
                "type": "string"
              }
            },
            "required": [
              "role",
              "city"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "all_inclusive": {
                "type": "string"
              },
              "all_tiers_for_context": {
                "additionalProperties": false,
                "description": "Rate bands across all three market tiers for context.",
                "properties": {
                  "hub": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  },
                  "mid": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  },
                  "small": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "small",
                  "mid",
                  "hub"
                ],
                "type": "object"
              },
              "available_roles": {
                "description": "The valid role catalog, returned when the role didn't match.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "slug": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "slug",
                    "name"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "city": {
                "type": "string"
              },
              "city_found": {
                "const": false,
                "description": "Present (false) only when the city didn't match.",
                "type": "boolean"
              },
              "city_tier": {
                "description": "Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.",
                "enum": [
                  "hub",
                  "mid",
                  "small"
                ],
                "type": "string"
              },
              "currency": {
                "enum": [
                  "USD",
                  "CAD"
                ],
                "type": "string"
              },
              "error": {
                "type": "string"
              },
              "fallback_pricing": {
                "additionalProperties": false,
                "description": "All-tier pricing shown when the city didn't match.",
                "properties": {
                  "hub": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  },
                  "mid": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  },
                  "small": {
                    "additionalProperties": false,
                    "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
                    "properties": {
                      "high": {
                        "description": "Upper end of the hourly rate range.",
                        "type": "number"
                      },
                      "low": {
                        "description": "Lower end of the hourly rate range.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "low",
                      "high"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "small",
                  "mid",
                  "hub"
                ],
                "type": "object"
              },
              "hourly_range_high": {
                "type": "number"
              },
              "hourly_range_low": {
                "type": "number"
              },
              "note": {
                "type": "string"
              },
              "pricing_notes": {
                "type": "string"
              },
              "requested": {
                "description": "Echo of the unmatched input.",
                "type": "string"
              },
              "role": {
                "type": "string"
              },
              "role_found": {
                "const": false,
                "description": "Present (false) only when the role didn't match.",
                "type": "boolean"
              },
              "role_note": {
                "description": "Caveat about the resolved role (e.g. 'security' maps to unarmed Crowd Control, not licensed security).",
                "type": "string"
              },
              "role_slug": {
                "type": "string"
              },
              "state": {
                "type": "string"
              },
              "suggestion": {
                "additionalProperties": false,
                "description": "Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply.",
                "properties": {
                  "kind": {
                    "enum": [
                      "city",
                      "role"
                    ],
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "slug",
                  "name"
                ],
                "type": "object"
              },
              "tier_definition": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Role Pricing"
          }
        },
        {
          "name": "get_compliance_by_state",
          "title": "Get Compliance By State",
          "description": "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). \u003cexamples\u003eget_compliance_by_state(state='CA') ; get_compliance_by_state(state='Tennessee')\u003c/examples\u003e \u003chints\u003eDaily-overtime states (CA, AK, NV, CO) change shift budgeting, flag them in any plan.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "state": {
                "description": "Two-letter state code (e.g., 'CA') or full state name (e.g., 'California').",
                "type": "string"
              }
            },
            "required": [
              "state"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "available_states": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "abbr": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "abbr",
                    "name"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "citation_note": {
                "description": "Operational guidance, not legal advice.",
                "type": "string"
              },
              "currency_note": {
                "description": "Reminder that wages change annually; verify before relying.",
                "type": "string"
              },
              "data_current_as_of": {
                "description": "Date the compliance dataset was last verified (YYYY-MM-DD).",
                "type": "string"
              },
              "data_version": {
                "description": "Version of the compliance dataset used for this result.",
                "type": "string"
              },
              "liability_coverage_included": {
                "type": "boolean"
              },
              "min_wage_as_of": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Effective date of this state's stored minimum wage."
              },
              "min_wage_source": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Authoritative source URL for the minimum wage figure."
              },
              "min_wage_usd": {
                "description": "2026 state minimum wage.",
                "type": "number"
              },
              "overtime_daily_double_hours": {
                "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."
              },
              "overtime_threshold_daily_hours": {
                "anyOf": [
                  {
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Daily overtime threshold where the state has one (CA, AK, NV, CO); null otherwise."
              },
              "overtime_threshold_weekly_hours": {
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "type": "integer"
              },
              "requested": {
                "type": "string"
              },
              "seventh_day_overtime": {
                "description": "True where a seventh-consecutive-day premium applies (CA).",
                "type": "boolean"
              },
              "state": {
                "type": "string"
              },
              "state_abbr": {
                "type": "string"
              },
              "state_found": {
                "const": false,
                "description": "Present (false) only when the state didn't match.",
                "type": "boolean"
              },
              "unique_rules": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "w2_note": {
                "type": "string"
              },
              "w2_required": {
                "type": "boolean"
              },
              "workers_comp_included": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Compliance By State"
          }
        },
        {
          "name": "get_policies",
          "title": "Get Booking and Procurement Policies",
          "description": "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. \u003cexamples\u003eget_policies() ; get_policies(topic='payment-terms') ; get_policies(topic='coi-additional-insured')\u003c/examples\u003e \u003chints\u003eChoose 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "topic": {
                "description": "Optional canonical policy topic. Choose an advertised enum value; omit for all policies or a broader question.",
                "enum": [
                  "minimum-booking-hours",
                  "cancellation-rescheduling",
                  "no-show-backfill",
                  "coi-additional-insured",
                  "payment-terms",
                  "background-checks",
                  "order-confirmation",
                  "quote-response",
                  "offers"
                ],
                "maxLength": 80,
                "type": "string"
              }
            },
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "available_topics": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "data_version": {
                "type": "string"
              },
              "disclaimer": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "policies": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cap_usd": {
                      "type": "number"
                    },
                    "code": {
                      "type": "string"
                    },
                    "confirm_with_coordinator": {
                      "type": "boolean"
                    },
                    "confirmed_claims": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "discount_percent": {
                      "type": "number"
                    },
                    "expires": {
                      "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"
                    },
                    "scope": {
                      "type": "string"
                    },
                    "sources": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    },
                    "todo_for_megan": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "topic": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "topic",
                    "title",
                    "confirmed_claims",
                    "confirm_with_coordinator",
                    "todo_for_megan",
                    "sources"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "policy_found": {
                "description": "Discriminator. false means the requested topic is not published.",
                "type": "boolean"
              },
              "requested": {
                "type": "string"
              },
              "scope": {
                "type": "string"
              },
              "status": {
                "enum": [
                  "policies",
                  "policy_not_found"
                ],
                "type": "string"
              },
              "todo_for_megan": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "updated": {
                "type": "string"
              }
            },
            "required": [
              "status",
              "policy_found"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Booking and Procurement Policies"
          }
        },
        {
          "name": "get_rate_benchmark",
          "title": "Get Rate Benchmark (Rate Index)",
          "description": "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). \u003cexamples\u003eget_rate_benchmark() ; get_rate_benchmark(role='brand-ambassadors') ; get_rate_benchmark(tier='hub')\u003c/examples\u003e \u003chints\u003eReturns 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "role": {
                "description": "Optional non-empty role name or slug to filter to one role.",
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "tier": {
                "description": "Optional market tier; adds each role's measured span within that tier (tier_usd).",
                "enum": [
                  "hub",
                  "mid",
                  "small"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/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"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Rate Benchmark"
          }
        },
        {
          "name": "request_quote",
          "title": "Request Quote",
          "description": "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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "plan_id": {
                "description": "Saved non-PII plan reference returned by plan_staffing or save_staffing_plan.",
                "maxLength": 12,
                "pattern": "^[A-HJ-NP-Z2-9]{12}$",
                "type": "string"
              },
              "skill_id": {
                "description": "Optional canonical TempGuru skill that assembled the plan.",
                "enum": [
                  "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"
                ],
                "type": "string"
              },
              "skill_version": {
                "description": "Optional version of the TempGuru staffing skill used.",
                "maxLength": 40,
                "minLength": 1,
                "pattern": "^[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}(?:-[0-9A-Za-z.-]{1,24})?(?:\\+[0-9A-Za-z.-]{1,24})?$",
                "type": "string"
              },
              "source_platform": {
                "description": "Optional agent/platform attribution, e.g. claude-ai, openclaw, or hermes.",
                "enum": [
                  "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"
                ],
                "type": "string"
              }
            },
            "required": [
              "plan_id"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "buyer_submission_required": {
                "const": true,
                "description": "Always true. The buyer, not the agent, must enter contact details and submit the form.",
                "type": "boolean"
              },
              "form_url": {
                "description": "Prefilled TempGuru-owned review form. Present only when handoff_ready is true.",
                "format": "uri",
                "type": "string"
              },
              "handoff_ready": {
                "description": "true when the saved plan resolved and a prefilled buyer form URL was created.",
                "type": "boolean"
              },
              "message": {
                "description": "Human-readable outcome to relay to the buyer.",
                "type": "string"
              },
              "next_steps": {
                "description": "Safe next actions; no agent-side contact collection.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "plan_found": {
                "description": "Whether the supplied non-PII plan_id resolved before expiry.",
                "type": "boolean"
              },
              "plan_id": {
                "pattern": "^[A-HJ-NP-Z2-9]{12}$",
                "type": "string"
              }
            },
            "required": [
              "handoff_ready",
              "buyer_submission_required",
              "plan_found",
              "plan_id",
              "message",
              "next_steps"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Prepare Quote Form"
          }
        },
        {
          "name": "get_quote_status",
          "title": "Get Quote Request Status",
          "description": "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. \u003cexamples\u003eget_quote_status(reference='TG-ABC234')\u003c/examples\u003e \u003chints\u003eStatus 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.\u003c/hints\u003e",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "properties": {
              "reference": {
                "description": "TG reference returned after the buyer submits the TempGuru website form, e.g. TG-ABC234.",
                "maxLength": 9,
                "pattern": "^TG-[A-HJ-NP-Z2-9]{6}$",
                "type": "string"
              }
            },
            "required": [
              "reference"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "channel": {
                "enum": [
                  "mcp",
                  "rest"
                ],
                "type": "string"
              },
              "created_at": {
                "type": "string"
              },
              "deal_name": {
                "type": "string"
              },
              "follow_up": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "quote_found": {
                "description": "Discriminator. false means the status stub is absent or expired.",
                "type": "boolean"
              },
              "reference": {
                "type": "string"
              },
              "status": {
                "enum": [
                  "received",
                  "queued"
                ],
                "type": "string"
              }
            },
            "required": [
              "quote_found",
              "reference",
              "message",
              "follow_up"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Get Quote Request Status"
          }
        }
      ]
    },
    "name": "TempGuru Event Staffing",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "tempguru-mcp",
        "version": "1.7.2",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/tempguru-event-staffing.json",
    "popularity": {
      "githubStars": 2,
      "npmWeekly": 105
    },
    "registryName": "co.tempguru/event-staffing",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.tempguru.co/mcp"
      }
    ],
    "repository": "https://github.com/tempguru-co/tempguru-mcp",
    "reviewed": false,
    "slug": "tempguru-event-staffing",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=co.tempguru/event-staffing",
    "summary": "Plan W-2 event staffing from 345 catalog entries; a coordinator confirms each order.",
    "updatedAt": "2026-08-14T20:31:22Z",
    "url": "https://www.anchorterminal.com/tools/tempguru-event-staffing",
    "vendor": "tempguru.co",
    "vendorUrl": "https://tempguru.co/ai-agents",
    "version": "1.7.2",
    "websiteUrl": "https://tempguru.co/ai-agents",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
