WorkerKit

For Claude Duet

AI workers for Claude Duet.

Claude Duet watches your accounts, briefs you each morning and comes to you when something needs a decision. A WorkerKit fleet adds the jobs that should run at a set time rather than at the next check-in: a morning briefing, an invoice chase, a store report, each with its own instructions, model, app access and budget. Duet works from the connectors you set up in Claude, so WorkerKit is added there once, and a worker can also report to the inbox Duet reads.

Start here

Add WorkerKit in Claude, then ask Duet.

Duet uses the connectors you set up in Claude. Each button opens Claude's Add custom connector dialog with WorkerKit filled in, and there is no key to copy.

  1. 01

    Add the catalog

    Press Add the catalog to Claude and confirm. It needs no sign-in, so the ready-made workers are searchable straight away.

  2. 02

    Add your fleet

    Press Add your fleet to Claude, confirm, then sign in to WorkerKit and approve. An account admin picks the key the connection holds.

  3. 03

    Ask Duet to check it

    Paste the prompt into Duet's main thread. Duet confirms it can use the WorkerKit connectors, then checks your fleet.

  • Paste into Duet Check whether you can use my WorkerKit Workers connector. If you cannot, say so and stop. Read https://workerkit.ai/claude-duet/SKILL.md and follow its operating rules whenever you work with my workers. Call key_info and tell me which account and scopes you have. List my workers and recent runs. If there are none, ask what job I want done and suggest a ready-made kit for it. Ask me before you run, install or change anything.

If Duet cannot see WorkerKit, the same connectors answer in any Claude chat, and a worker can email its report to the inbox Duet reads: the setup guide has that route.

Why WorkerKit

Control your AI workforce from Claude Duet.

Ready-made, self-learning AI workers with only the access each job needs, a budget you set, and a record of every job and action.

  • Ready-made AI workforce. Install a worker kit and a worker arrives with its instructions, app permissions and schedule already written and reviewed. Choose one from the catalog, or build your own.
  • You set the budget. Workers stay inside it. Each worker has a per-run and a daily spending limit, under a limit for the whole account. When one is reached, new runs stop before any money moves, and the receipt says why.
  • Only the access each job needs. Nothing more. Each worker holds its own grant for each app, read-only by default, and nothing it reads can widen it. An assistant's key carries only the scopes you choose and never an app credential.
  • Self-learning, self-improving AI workers. A language worker can check every run against its job's quality criteria. A change that makes it better waits for your approval or, in Apply proven changes mode, applies on its own once it passes a comparison on your own examples. Its runs also propose what it should remember, and you approve what it keeps.
  • Every job and every action, on the record. Every run leaves a receipt with its result and its cost, and every tool call is logged with its outcome, so you can see what each worker did, when, and at what price.

What Claude Duet is

A proactive agent that checks in.

Claude Duet is a research preview from Anthropic, opened on 2026-10-21 to US Claude Pro and Max subscribers by waitlist, as an iOS and Android app and on the web at claude.ai. You message it the way you would message a person. It sends a morning brief from your email and calendar, checks your connected accounts at set intervals, works on its own cloud computer when you step away, returns larger work as files in its Make tab, and asks before it sends a message, makes a payment, signs a document or deletes anything. It runs on Claude Opus 5.5.

What a fleet addsWhy it helps
Work at the time you setDuet checks your accounts at intervals, and Anthropic says something urgent can arrive between checks. A worker runs on its own schedule in its own time zone, or the moment a signed webhook arrives.
A model per jobDuet runs on Opus 5.5 and decides its own effort. Each worker runs the model its one job needs, from any supported provider or on your own provider key.
A budget outside your plan limitsDuet's background checks draw on your Pro or Max limits, which is why Anthropic has it check every few hours rather than nonstop. A worker's runs are priced to the token against a ceiling you set, and each one leaves a receipt.

Duet does not keep a connector list of its own: Anthropic says it uses the memory, skills and connectors you have already set up in Claude. That is the door that matters here. WorkerKit is a pair of custom connectors on claude.ai, and the setup ends by asking Duet to confirm it sees them.

Hired specialists

What a worker adds beside Claude Duet.

A worker is a background agent with one job: its own instruction, memory, triggers, budget, model, app permissions and key. WorkerKit hosts the runs, and Duet reads what comes back and decides the next step with you.

AspectClaude DuetA WorkerKit worker
What it is forWhatever needs you, from one thread that carries your Claude memoryOne job, done the same way every time, with its method written down
When it runsWhen you ask, and at the check-ins it keeps on your accountsOn demand, on its own schedule in its own time zone, or on a signed webhook
Where it actsIts own cloud computer and browser, with the connectors set up in ClaudeInside the apps granted to that worker alone, under a firewall that checks and redacts every call
ModelClaude Opus 5.5, with the effort chosen by DuetChosen per worker from any supported provider, or your own provider key
What comes backA message in the thread, or a file in the Make tabA closing report of at most 8,000 characters, a typed digest beside it, and the settled cost
Who can use itUS Pro and Max accounts admitted from the waitlistAny WorkerKit account, Free plan included, with teammates invited to the same fleet

The operator pattern

Duet operates. Workers work.

Ask Duet in its thread. It reads the fleet through Claude, and every run is its own sealed job.

StepWhoWhat happens
1YouAsk in the thread or a channel: "Did the invoice chase run?", "Run the store briefing now", "Pause the follow-up tracker until Monday."
2DuetReads its key with key_info, picks the matching tool, and shows you any run that sends, writes or spends before it starts, the way it shows its own actions.
3The workerRuns hosted, in its own context, under its own grant, on its own model, and settles its own cost.
4DuetReads the receipt with run_get or the fleet feed with runs_feed, tells you what changed, and names the run it came from.

Duet's own launch examples are standing jobs, and most already exist as kits in the kit directory: the executive daily briefing, the invoice follow-up assistant, the follow-up tracker for threads that went quiet, and the daily store briefing for a Shopify store.

Why Claude Duet and WorkerKit

Each one covers what the other is not for.

Duet is the agent that knows what needs you. The fleet is the scheduled, scoped and costed half.

Claude Duet strengthWhat WorkerKit adds beside it
A morning brief and check-ins that surface what needs youStanding jobs that run at the time you choose, or when a signed webhook fires, and report only what changed
Memory, skills and connectors carried over from ClaudeMemory scoped to one job, where a fact a run proposes waits for your approval before the next run may use it
An approval before it sends, pays, signs or deletesA separate grant per job, read-only by default, with contact rules and redaction on every call a worker makes
Gmail, Google Calendar and thousands of connectorsOutlook and Microsoft calendars too, which Duet does not reach yet, through a Microsoft account a worker signs in as
Messages to you in its own threadRun notifications by email, Slack, Teams, Telegram, Discord, Notion, SMS or WhatsApp, where Duet sends no texts
Larger work returned as files in the Make tabRecurring output with a receipt per run, so ten standing jobs stay ten line items with a settled cost each

What it unlocks

Background work that stays out of the chat.

Each run executes sealed inside its own context, settles its exact cost and returns a digest. The worker remembers its own state. Your conversation stays clean.

  • Sealed jobs, small returns Every job runs in its own context and only the digest comes back. A long crawl becomes the few paragraphs that matter, so many workers fit in one conversation.
  • The right model per job Inexpensive models scan, frontier models judge. Every run is priced to the token, with reserved-versus-settled tracking, so background work is never a black box on your bill.
  • Money you can trust A run that never started costs nothing. A run that went silent mid-flight is absorbed by WorkerKit and labelled as an unbilled estimate. A failed run settles at actual usage with no minimum charge.
  • Standing monitors and briefings Workers watch on a schedule and report only what is new, so you stop relying on remembering to ask.
  • Two-way work A run that needs input does not guess or stall. It asks on every delivery channel and resumes as a linked follow-on run when you answer.
  • Memory that compounds Rules and facts persist across runs, so the tenth run is smarter than the first. Anything a run proposes for memory waits for your approval before a future run may use it.
  • Kits: install one or make your own Browse the catalog, install a ready-made worker, or author your own through the authoring guide, the validator and the publisher. Every path runs the same validators.
  • Fleet operations Clone a tuned worker for the next client, set budgets, route deliveries, and start and stop workers, all from the assistant you already talk to.
  • Delivery where people live Results land in email, Slack, Teams, Telegram, Discord, Notion, or SMS and WhatsApp, where their readers already are, instead of waiting in a chat nobody opens.
  • Auditable trails Every run leaves a typed event stream, liveness heartbeats, owner and self scores, and the allow or redact outcome of each tool call underneath it.

What the two mounts expose

A public catalog, and your fleet.

WorkerKit publishes two mounts over streamable HTTP. The catalog is public, so it is never walled behind a sign-in; the fleet is yours, so it is never anonymous.

MountAddressWhat it carries
Directoryhttps://mcp.workerkit.ai/directoryThe public kits catalog: 8 read-only tools, including what WorkerKit is and when to use it, written for an agent, plus the guide, the vocabulary and the app-by-app tool explorer a kit is written from. No key at all, so the catalog can be browsed before anyone signs in.
Workershttps://mcp.workerkit.ai/workersYour fleet and authoring on one connection: 122 tools in the full profile (115 manager tools plus 7 public discovery reads), or 24 tools in the decision profile. Discover sources, create classifiers, run and configure workers; the full profile also includes activity and spend, quality settings, worker access and bindings, API apps, Action workers, fleet administration, publishing and connection management. Connect through OAuth or a protected bearer header; the approved scopes control fleet operations and result access.
AreaToolsWhat it covers
Continuous Learningworker_quality_get, worker_quality_set, worker_quality_previewRead criteria, three gates and availability reasons; save reviewed settings with expectedRevision; preview samples without a run. The worker dashboard offers owner-reviewed activation and a quoted AI draft when criteria are missing. Paid comparisons, diagnosis, monitoring, apply/rollback and company/shadow learning stay owner-only. Manager keys can disable any gate, but cannot enable automatic/shared learning. Kit install leaves all gates off.
Keykey_infoWhat your key is and exactly which scopes the other tools will honour. Call it first.
Fleetworkers_list, worker_get, worker_set_enabledEvery worker with live run state, one worker in full, and start or stop.
Apps and workersworker_permissions_get, worker_permissions_set, worker_bindings_get, worker_bindings_setWhat a worker may touch, in the same vocabulary a kit is written in, and its grants to call other workers: read both, replace its app set (account Admin) and fill, re-point or clear its worker grants. The writes need manageAppsAndWorkers; rules, identities and MCP tool bindings stay in the dashboard.
Runsworker_run, run_bulk, worker_runs, run_get, run_events, run_transcript, run_cancel, run_score, run_clear_digestTrigger a run with a prompt for that run, or one prompt across up to 20 workers; watch it step by step, read the receipt and the stored process log, cancel or grade it. On a decision worker it decides instead and acts on what it routes: sourceArgs and maxItems narrow and cap what is judged, and waitSeconds waits for the settled receipt, which carries the per-item decisions.
Fleet activityruns_feed, fleet_pulse, fleet_health, account_usage, activity_feed, activity_summary, account_spendWorker runs, app calls and configuration changes, activity counts, everything running now, fleet health, account headroom and spend by worker, day and model.
Two-way runsrun_question, run_answerA run that needs an answer ends by asking; the answer starts a linked follow-on run.
Memorymemory_get, memory_add, memory_update, memory_deleteThe rules and facts a worker carries into every run.
Schedulesschedules_list, schedule_create, schedule_update, schedule_delete, worker_timezone_setWhen a worker starts on its own, and the time zone it works in: its local dates, its report times and the clock its daily schedules follow.
Instructioninstruction_get, instruction_set, instruction_versions, instruction_version_get, instruction_restoreThe standing instruction, versioned on every change, with the history to compare against and roll back to. On a decision worker it reads the routing table and the install questions instead, and writes their answers.
Deliveriesdelivery_list, delivery_channels, delivery_create, delivery_update, delivery_secret_rotate, delivery_deleteWhere a run report goes when the worker finishes: email, Slack, Teams, Telegram, Notion, Discord, SMS or a signed webhook.
Deploymentmodels_list, deployments_list, deployment_get, worker_deploy, deployment_update, worker_undeployWhat makes an installed worker actually run: pick its model from the priced catalog, cap its spend, pause or resume it, take it off again. A worker with no deployment fires no schedule and refuses a run with not_deployed.
Budgetsbudget_get, budget_set, fleet_budget_get, fleet_budget_setA worker’s spend and run ceilings, and the account-wide fleet ceiling. Their own scope, because raising a dollar cap is the one management action that can cost money.
Creationworker_clone_preview, worker_clone, worker_clone_bulkClone a worker into new ones, singly or in bulk, with a dry run first. A clone carries only permissions a person already approved on the source.
Deletionworker_deleteRemove a worker for good, with its sub-workers. Permanent, where stopping one is not — which is why it is a scope of its own.
Kitskit_install_preview, kit_installPreview a directory kit against your account, then install it as a new worker — with deploy set, in the same call, which is what makes it run.
Kit authoringkit_validate, kit_publish, kit_update, kit_replace, kit_unpublish, kit_relist, kit_make_private, kit_delete, kit_scan_get, my_kits_list, publisher_get_mine, publisher_setValidate a kit in one dry run that reports every gate at once, publish it from content or from a worker you own, keep it private or list it, and keep your publisher profile. A private kit installed with kit_install is how an agent builds a worker from scratch.
Connected appsapps_list, app_connect, app_disconnect, app_github_accounts, app_github_repos, app_github_branches, app_slack_workspaces, app_slack_conversationsWhich apps an operator can use right now, in the kit vocabulary, and connecting the rest by credential: validated live, stored encrypted, never returned. Browser sign-ins stay on the Apps page. The GitHub and Slack lookups find repository and channel IDs for an install (discoverAppResources).
Model keysmodel_keys_list, model_key_set, model_key_deleteYour own model-provider API keys, so runs bill your provider account instead of the wallet.
Onboarding and walletonboarding_get, wallet_get, wallet_checkout_create, wallet_checkout_getCheck model funding, hand off BYOK setup, inspect wallet balance, and request a human-confirmed Stripe checkout. A purchase is complete only when its status is credited.
Custom MCP serversmcp_servers_list, mcp_server_get, mcp_server_create, mcp_server_discover, mcp_server_set_tools, mcp_server_deleteAn app the platform does not offer, reached through its MCP server: register it as your own custom MCP app with its credential in the same call, enable the tools a job needs, and bind it in a kit.
API appsapi_apps_list, api_app_get, api_app_create, api_app_update, api_app_validate, api_app_preview, api_app_publish, api_app_version_get, api_app_version_revokeAccount-private API apps: validate and preview a definition offline, create and update drafts, publish immutable versions and revoke them. Authoring needs a live account Admin and managePrivateApiApps; connections and worker bindings are configured in the dashboard.
Decision authoringdecision_worker_create, worker_decision_setCompile typed questions and a supported source recipe into a private kit and installed decision worker. Optional deploy; never starts a run. Requires createWorkers, plus manageDeployments when deploying. Retry the same requestId and body to recover the receipt. worker_decision_set attaches, replaces or removes a hybrid worker's classifier.
Action workersaction_worker_options, action_worker_create, worker_tools, worker_tool_call, worker_tool_invocationSelected app tools with no model, called one at a time with exact inputs. Create with createWorkers; call and read receipts with invokeActions. A write needs an idempotencyKey; never resend an outcome_unknown call.
Supportsupport_request_createContact support about an error you cannot fix, a bug, an app request or a question. Returns a PE-XXXXXX reference.
Discovery and authoring readsworkerkit_about, directory_overview, kits_search, kit_get, kit_app_tools, kit_authoring_guide, kit_vocabularyPublic reads also available on the workers connection. Discover classification sources with kit_app_tools(purpose:"decision") and read kit_authoring_guide(section:"decision"). These reads never forward the manager bearer upstream.

The manager key holds no app credentials: workers reach apps under their own grants and firewall, and no prompt can widen that. With readRuns or invokeActions the key can read what those workers return, including an Action worker's tool results.

The same two mounts answer every other MCP client, and the same fleet answers the REST API for hosts that speak plain HTTPS instead.

Classification on demand

Create a decision worker from your questions.

Categorize, score or triage connected data, then reuse and adjust the worker.

Reuse an existing worker or decision kit when its questions fit. For a custom classification task, creation compiles a supported source recipe and typed questions into a private kit and an installed decision worker. Optional deploy:true adds deployment; creation never starts a run or adds a schedule. The kit can be edited and published later through the normal kit lifecycle.

On the workers connection, call kit_app_tools(purpose:"decision") for recipes, argument schemas, permissions and examples, then kit_authoring_guide(section:"decision"). Check account connections with apps_list; public discovery does not check them. Send the request to decision_worker_create, follow nextCall, then use worker_run and run_get. Running needs runWorkers; results need readRuns. Use instruction_get / instruction_set for saved category or level answers, or answers on one run. Structural question/source changes need a revised kit and a replacement install. Check receipt status, coverage, omissions, warnings and cost before claiming completion.

Start with email-previews, calendar-events or sheets-rows. These recipes return judgments without app writes. Email previews do not include full threads; calendar events are invitation data, not transcripts; Sheets needs a Google file ID, a finite tab-qualified range and a columns map. A connected app alone does not make every tool a supported source. Source filters select evidence, not permissions: the Sheets recipe grants spreadsheet reads across the linked Drive account.

Supply 1–8 questions: choice with named options, score with ordered levels, or noul for the probability of a statement. Choice adds unclear automatically. Set an explicit confidenceFloor between 0 and 1; it routes uncertainty and does not promise accuracy. maxItems is 1–50, default 20. Creation requires createWorkers; optional deployment also needs manageDeployments.

Use a fresh requestId for each new worker. Retry with the same ID and identical body to recover the original receipt; a changed body returns 409. The response includes tokenId for MCP/CLI worker commands, stable workerId, kitSlug, readiness and nextCall. A deploymentError means the worker already exists: fix deployment on that worker. The receipt is a snapshot; check current worker readiness before running. No worker API secret is returned.

The workers connection includes discovery and authoring, so classification needs one MCP connection. Its full profile includes fleet management, app resource discovery, kit authoring and public directory reads. For a smaller list, a client that supports custom headers can send X-WorkerKit-Profile: decision on every request, including initialization, listing and calls, to select 24 workflow tools. A server operator can instead set MCP_WORKERS_PROFILE=decision. The endpoint and existing sign-in stay the same; a profile grants no additional permissions. Reconnect and relist after changing profiles. Use the advertised tool list: fleet administration, publishing, Action worker and event-stream tools require the full profile. Successful responses include structured content and a text fallback; creation declares an output schema.

Read the request example and full contract.

App tools, no model

Call app tools through an Action worker.

One exact app operation per call, with the inputs you supply.

An Action worker (modelType: "none") exposes 1 to 64 selected app tools and has no model, instruction, schedule or deployment. Each call invokes one tool with the arguments the caller sends, under the worker's own app access, and readiness.canInvoke on worker_get says whether its tools can be called now. Run and deploy requests answer 400 action_worker_requires_invoke.

On the workers connection's full profile: action_worker_options lists apps, tool schemas and defaults (readWorkers); action_worker_create copies an app's default tools, or takes an actionSpec of 1 to 64, plus a slackConnectionId for Slack tools when the account has more than one Slack bot (createWorkers); worker_tools lists the saved tools (readWorkers); worker_tool_call calls one with arguments, plus an idempotencyKey on a write (invokeActions); worker_tool_invocation reads a write's receipt (invokeActions). Pass the returned tokenId. kits_search(modelType:"none") finds Action kits; install one with kit_install and no deploy.

A write tool (readOnly: false) needs an idempotency key. Repeating the key with the same arguments returns the stored receipt (a confirmation, not the app's response) without calling the app again; with other arguments it is a 409. A call answers with status succeeded, denied, failed, in_progress or outcome_unknown; branch on it, not on the HTTP code. On outcome_unknown the write may have happened: never resend it automatically, under any key; read the receipt and check the app. Each call counts toward the worker's daily request limit; a refusal marked retryable, such as usage_limit, is retried later under a new key. Only the owner changes the selected tools, in the dashboard.

Read the call examples.

Access and control

Scoped per worker, and scoped for Claude Duet too.

LayerWhat it holds
Per-worker grantYou connect each account yourself and choose what the worker may do there: per-app operations, read-only by default, narrowed by rules such as contact blocks, label and folder rules, customer-domain limits, time windows and IP allowlists. An account-level ceiling caps what any worker can be granted.
The app firewallEvery tool call is checked against the grant and the rules, field-masked, scanned for sensitive data, redacted, rate-limited and logged with its outcome. The worker's model never sees what the rules removed.
Prompt injectionA worker steered by content it reads still cannot exceed its grant. Proposed memory waits for a human. Publishing a kit to the directory runs a supply-chain and prompt-safety scan that fails closed.
The assistant's own accessA manager key carries explicit scopes, is shown once and stored hashed. No scope gives it app credentials, but invokeActions returns an Action worker's tool results, so grant it only where an agent should call those tools. An agent reads its scopes before planning, and an admin can revoke the key at any time without touching a worker.

A worker is only as trustworthy as the access behind it, so the access is yours to give, to narrow and to take back, one worker at a time. You delegate without handing over the kingdom.

How it connects

How Claude Duet connects.

Through Claude. WorkerKit is added on claude.ai as two custom connectors over remote MCP: the public catalog with no sign-in, and your fleet behind a WorkerKit sign-in that an account admin approves. Duet uses the connectors set up in Claude, so nothing is pasted into a chat and there is no setting to find inside Duet.

The last step happens in Duet itself: ask it which connectors it can use and confirm WorkerKit is among them. The fleet also answers in any Claude chat, and a worker can send its report to the email account Duet reads every morning.

The setup guide is written for the agent doing it and for you to approve, in order: the catalog, the fleet, a scope check, the skill, the check in Duet, a smoke test, a first worker and reports by email.

The connectors are per Claude account, so the same two serve claude.ai, Claude Desktop and Cowork as well. The Claude guide covers those surfaces and Claude Code.

Cost: WorkerKit has a Free plan with no card required. Runs bill model tokens at the provider list price with no markup, from a prepaid wallet or your own provider key, inside the budgets you set. Connecting Claude Duet is not a paid feature, and the plans are on the pricing page.

Questions

Claude Duet and WorkerKit, answered.

  • Can Claude Duet use WorkerKit? Through Claude. Anthropic says Duet uses the connectors you have already set up in Claude, and WorkerKit is added on claude.ai as two custom connectors. Add both, then ask Duet which connectors it can use to confirm WorkerKit is there. A worker can also send its report to the inbox Duet reads every morning.
  • Do I have to paste a key into Claude Duet? No. The fleet connector is added on claude.ai and approved on the WorkerKit consent page, where an account admin picks the manager key the connection will hold. The key never travels through a message to Duet, and revoking it later is one action at Fleet access.
  • Why add workers if Duet already works in the background? Because Duet checks in at intervals, its background work draws on your Pro or Max limits, and it runs one model. Anthropic says an urgent item can arrive between checks. A worker does one job at a set time or on a signed webhook, on the model that job needs, against its own budget, and leaves a receipt Duet can read back to you.
  • Can Duet see my email or my books through WorkerKit? Only what your workers return. The fleet connection holds no app credentials, but run results (with readRuns) and an Action worker's tool results (with invokeActions) can carry data from the apps a worker was granted, so choose each worker's app access and the key's scopes together. Duet's own Gmail, QuickBooks or Stripe connectors are separate and are granted in Claude.
  • Will Duet run a worker without asking me? It should not, and the key is the hard limit. Anthropic built Duet to show you an action and wait before it sends, pays, signs or deletes, and the WorkerKit skill tells it to confirm any run that sends, writes or spends. A key carrying only readWorkers and readRuns cannot start a run at all.
  • Is Claude Duet on Team or Enterprise plans? Not yet. The research preview is for Claude Pro and Max subscribers with a US account, admitted from a waitlist, and Anthropic says Team and Enterprise come later. A WorkerKit fleet is already shared by the people on its account, and connecting it to Claude works on every Claude plan meanwhile.
  • What does it cost? Duet is included in Pro and Max during the preview and draws on the plan's five-hour and weekly limits, background checks included. WorkerKit's Free plan needs no card and carries 5 workers; model tokens bill at the provider list price with no markup, from a prepaid wallet or your own provider key, inside the budgets you set. A run a worker does is billed on that worker's receipt, not against your Claude limits.

The setup guide is written for the agent doing the work, the MCP server page holds the surface behind it, and the wk CLI reaches the same fleet from a terminal.

To build a kit of your own, how to build a kit walks the procedure, and the kit-authoring skill is the file an agent keeps for it.