Business & Operations
Overview
Connect Claude to Assembled, the workforce management platform for modern support teams. Inspect schedules, forecasts, and real-time performance across queues, agents, and sites. Diagnose SLA misses, run what-if scenarios, and analyze trends without exporting a single report. Take action directly from chat: adjust forecasts ahead of peak events, publish overtime when you're trending hot, or open VTO when you're overstaffed. Combine Assembled data with your HRIS, BI tools, or Slack to answer cross-system questions no single tool can. Built for WFM teams and support leaders who need answers in seconds, not hours.
Tools
Create one or more forecast adjustments layered on the master forecast. Each adjustment applies an 'add' or 'multiply' operation to the forecasted contact volume over a time range, optionally scoped to a single queue. Use this when the user wants to manually raise or lower the forecast (e.g. anticipating a marketing campaign, a holiday bump, or correcting a known under-forecast).
create_overtime_and_voluntary_time_off
ChatGPTPublish one overtime ('OT') or voluntary-time-off ('VTO') slot.
get_agent_states
ChatGPTGet agent state rows (what state each agent was in on connected platforms, e.g. online/away/on-ticket) over a time window. Two modes: - Company-wide export (agent_id omitted): rows for all agents matching the optional filters. With priority_order set, the condensed timeline is used: one row per agent per time segment, deduped across platforms by your priority order and with adjacent same-state rows merged. Without it, raw per-platform rows that may overlap in time. Prefer the condensed timeline when summing time in state (e.g. online / occupied / productive hours for a custom formula), since raw rows can double-count overlapping platforms. - Per-agent (agent_id set): cursor-paginated rows for one agent. Responses are bounded: at most 500 rows per call (default 100), a 1-day window company-wide, and a 31-day window per agent. Raw state data is dense (one row per state change per platform), so narrow with filters or platforms and paginate rather than widening the window.
get_agent_time_summaries
ChatGPTPer-agent totals (in seconds, clipped to the requested window) of: - approved overtime (
overtime_seconds), - approved paid time off (pto_seconds), - accepted voluntary time off (vto_seconds). Use this when the user asks "how much OT / PTO / VTO is each agent scheduled for next week" or similar workforce-management questions. Each row is one agent in the resolved filter scope, including agents with zero activity (their buckets are 0).get_bpo_heatmap
ChatGPTGet BPO staffing per time bucket: required, committed, scheduled and actuals. Same numbers as the BPO requirements heatmap in the app. Buckets use the company's smallest configured vendor requirement interval (returned as
interval, in seconds) and are in UTC. Values are heads: the average number of agents working during the bucket. Heads add up across queues, sites and channels within a bucket, but not across buckets; average them over time (or multiply by the bucket length in hours to get agent-hours). - required / committed: uploaded by the BPO; null when nothing was uploaded for that bucket. - scheduled: productive time on the schedule (schedule_id, or the master schedule when omitted). - actuals: in-adherence time from cached metrics; null for future buckets and partial for today. Compare scheduled or actuals against required to find under- or over-staffed intervals.get_current_time
ChatGPTGet the current date and time, in both UTC and the company's timezone. Call this before constructing any date range from a relative phrase ("today", "yesterday", "last week", "last 30 days"). Use the company-local date so a "day" matches the Assembled UI. Do not guess the current date from memory — it is likely about a year out of date.
get_forecast_adjustments
ChatGPTList existing forecast adjustments for the company. Forecast adjustments are manual overrides layered on top of the master forecast. Each adjustment has an operation ('add' or 'multiply') and a value applied over a time range for a given channel (and optionally queue).
get_forecasted_vs_actual
ChatGPTGet forecasted vs actual comparison metrics from Assembled. Returns bucketed comparisons of forecasted vs actual values for a given channel (and optional queue) over the requested time range. This covers volume (contacts/cases), handle time, service level, staffing (required/scheduled/net) and related metrics. Use this tool when the user wants to understand how actuals compared to the forecast, rather than raw forecasts alone. Volume is reported under different fields depending on the company's metrics configuration:
contacts_received (and cases_opened) for legacy companies, or case_volume and units_of_work for companies on the newer metrics configuration. When both case_volume and units_of_work are present, the channel's configured contact input (case volume or units of work) determines which one the forecast is built on, and that setting is not included in this response. Report both and name the field you are quoting rather than presenting either as the single "volume" number. The bucket interval and schedule are chosen automatically: bucket size is picked from the window length (15m for <1 day, 1h for 1 day to 1 week, 1 day for >1 week) and the company's master schedule is always used. These are intentionally not exposed as tool arguments. Windows longer than ~6 months (184 days) are rejected: forecasted vs actual is intended for operational analysis. For year-plus historical trend analysis, use the analytics/metrics tool instead, or split the question into several shorter windows and call this tool per window.get_metrics_catalog_and_query_usage
ChatGPTGet the catalog of available metrics and instructions for using the query_metrics() tool. Use this to determine available namespaces, metrics, and dimensions.
get_overtime_and_voluntary_time_off
ChatGPTList existing overtime ('OT') and voluntary-time-off ('VTO') slots. Use this before posting a new OT/VTO offer to avoid duplicates, or to verify uptake on a slot you previously posted (capacity vs. how many agents have opted in). Each row includes 'remaining_capacity = max(0, abs(capacity) - num_approved_requests)' as a derived convenience — the number of additional agent opt-ins the slot can still accept. Works for both OT (positive capacity) and VTO (negative capacity); remaining_capacity is None for uncapped slots.
get_schedule
ChatGPTGet scheduled activities for agents matching a filter over a small time window. Use this when the user asks who is scheduled, what coverage looks like for a queue, or what an agent's day looks like. Required scoping ---------------- At least one of
queue, site, team, or skill MUST be set; channel alone is rejected. To resolve a user-facing name to an external ID, call get_workforce_config() first and match on the appropriate *[].name. If nothing matches, ask the user to clarify rather than guessing. If the server rejects the request with 400, the rejection details from the upstream JSON body — agent_count, filters_applied, tier_caps, and a suggested_action string — arrive as keys on error itself; a non-JSON rejection arrives as text in error["error"] instead. Read `suggested_action` and follow it verbatim on retry rather than guessing permutations.get_staffing_parameters
ChatGPTGet the staffing assumptions configured for every channel and queue. Returns the effective staffing parameters (shrinkage, agent productivity, average handle time, concurrency, service level target, minimum staffing, forecast/reopens multipliers, and related flags) for each (channel, queue) pair in one paginated list, instead of opening queues one at a time in Settings. Use this tool to audit staffing assumptions in bulk, spot queues whose saved values differ from the channel-default row, or compare shrinkage / productivity across queues. Each channel contributes one channel-default row (queue_id None) plus one row per active queue.
is_default is True when nothing is saved for that channel/queue: the row then shows Assembled's built-in defaults (shrinkage 0, agent_productivity 8, average_handle_time 10, ...), not the values of the saved channel-default row, with any SLA-group service level applied on top. updated_at is only set on explicitly saved rows. shrinkage_source is 'flat' when the shrinkage value is used directly and 'forecast' when the effective shrinkage comes from the shrinkage forecast; the forecast-derived value itself is not included. Units match the queue Settings UI: shrinkage and service_level_percent are percentages in [0, 100] (30.0 means 30%), average_handle_time is minutes per contact, agent_productivity is work items handled per agent per hour, service_level_seconds is seconds, and concurrency is simultaneous contacts per agent. Pages are limit / offset with total (rows matching the filters) in the response; keep requesting with offset += len(staffing_parameters) until offset >= total.get_workforce_config
ChatGPTQueues, sites, skills, teams, channels, and schedules for the company (bounded responses). Always returns
summary (total counts per dimension) and the full channels list (usually small). Entity rows are either a browse page for one dimension, search hits, or empty when summary_only is true. Browse (no `query`) — paginate one dimension at a time: - Omit filter_type to default to queues (page through queue names). - Use filter_type = sites, skills, teams, or schedules to list those instead. The schedules dimension returns the company's active schedules sorted master-first; each entry has a live flag (true for the master) and an id that can be passed as schedule_id to get_schedule to read a non-master schedule. - Use page (1-based) and page_size (max 500; default 100). - Check has_more for additional pages. Search (`query` set) — substring match on names (case-insensitive): - Omit filter_type to search all of queues, sites, skills, teams, and schedules (each type capped at 50 matches to keep payloads small). - Set filter_type to a single type to search only that list (up to page_size matches, capped at 500). - Use this to resolve a user phrase (e.g. "support", "draft") to an external id before calling tools that require UUIDs. Summary only — set summary_only=true to get counts plus channels only (no queue/site/skill/team/schedule rows). Use for "how many queues do we have?" Note: query_metrics uses names directly; use this tool when another tool needs external IDs or you need to confirm an entity exists. Returns GetWorkforceConfigResult with summary, channels, pagination metadata (page, page_size, filter_type, has_more, summary_only), optional echoed query, and typed lists (queues, sites, skills, teams, schedules).query_metrics
ChatGPTExecute a metrics query against the Assembled metrics API. Call get_metrics_catalog_and_query_usage() first to retrieve the available namespaces, metrics, and dimensions, and the query format this tool expects.
create_forecast_adjustments
Claudecreate_overtime_and_voluntary_time_off
Claudeget_agent_time_summaries
Claudeget_current_time
Claudeget_forecast_adjustments
Claudeget_forecasted_vs_actual
Claudeget_metrics_catalog_and_query_usage
Claudeget_overtime_and_voluntary_time_off
Claudeget_schedule
Claudeget_workforce_config
Claudequery_metrics
ClaudeCapabilities
Writes
Example Prompts
Click any prompt to copy it.
Links
App Stats
25
Tools
3
Prompts
ChatGPT, Claude
Platforms
Category
Work ManagementWorks with
ChatGPT
Claude
Data refreshed daily






