Quickstart

From zero to a verified shift.

ZenSched is key-scoped: your zsc_ key identifies the organization. No tool accepts an organization ID.

1. Get your key (cold start)

Call zensched_guide first; it returns the current workflow and onboarding instructions. Then call account_create(org_name) with no email and no verification. The response includes a zsc_ key.

This is the cold-start path for new vendor agents. Claude Connect and OAuth remain available for humans who want that path; they are optional, not required to start.

2. Connect your MCP client

Cursor and Claude Desktop use this block:

{
  "mcpServers": {
    "zensched": {
      "url": "https://mcp.zensched.com/mcp",
      "headers": { "Authorization": "Bearer zsc_…" }
    }
  }
}

Put your zsc_ key in as Authorization: Bearer zsc_…. The MCP endpoint is https://mcp.zensched.com/mcp.

Muse Code

Meta's Muse Code does not have a directory or one-click install. Paste this into ~/.config/muse/settings.json (create the file if it is missing). If the file already exists, merge the zensched entry into mcp_servers and keep schema_version. Then start a new Muse session — it loads MCP servers at startup.

{
  "schema_version": 1,
  "mcp_servers": {
    "zensched": {
      "transport": "streamable_http",
      "url": "https://mcp.zensched.com/mcp",
      "headers": { "Authorization": "Bearer zsc_…" },
      "mode": "optional"
    }
  }
}

Same endpoint and zsc_ key. Muse uses mcp_servers and transport: streamable_http, not the Cursor mcpServers shape. mode: optional means a missing key will not abort the whole Muse run. See Muse Code extending docs.

Hermes Agent

Add to ~/.hermes/config.yaml (merge into existing mcp_servers), then restart or run /reload-mcp in chat:

mcp_servers:
  zensched:
    url: "https://mcp.zensched.com/mcp"
    headers:
      Authorization: "Bearer zsc_…"

Or via CLI after you have a zsc_ key:

hermes mcp add zensched --url https://mcp.zensched.com/mcp --header "Authorization=Bearer zsc_…"

No key yet? Start Hermes without ZenSched, call zensched_guide and account_create through another MCP client first, or add ZenSched after cold-start. See Hermes MCP docs.

OpenClaw

OpenClaw stores remote MCP servers under mcp.servers in ~/.openclaw/openclaw.json. Easiest path — CLI (Streamable HTTP + Bearer):

openclaw mcp add zensched \\
  --transport streamable-http \\
  --url https://mcp.zensched.com/mcp \\
  --header "Authorization=Bearer zsc_…"

Or paste this block into openclaw.json (merge with existing mcp.servers):

{
  "mcp": {
    "servers": {
      "zensched": {
        "enabled": true,
        "transport": "streamable-http",
        "url": "https://mcp.zensched.com/mcp",
        "headers": {
          "Authorization": "Bearer zsc_…"
        }
      }
    }
  }
}

Verify with openclaw mcp probe zensched and openclaw mcp tools zensched. Control UI: Settings → MCP → Add server. OpenClaw also discovers servers already configured in Cursor/Claude via mcporter. Docs: OpenClaw MCP.

3. Fund only when you need paid meters

Free tools work within the unfunded quota of 200 MCP calls/day. Paid actions return a payment_required response with the available payment path. The $5 activation deposit is credited to balance.

4. Create the workforce

  1. location_create with a street address (metered geocode) or lat and lng (also metered geocode). Use location_refine(location_id) to vision-refine the pin onto the building from map tiles (metered pin_refine at $0.10), or location_update(location_id, lat, lng) to manually reposition (free).
  2. worker_invite to send a single activation email. Workers complete work in the ZenSched mobile app (Android · iOS).
  3. Optionally create a brand and policy. Brand 0 and policy 0 already provide usable defaults.
  4. event_create, then shift_create. The worker receives a push notification.
  5. Attach a form to the event with form_assign(form_id, event_id). Brand 0 and policy 0 provide usable defaults if you skip custom policy work.
  6. For remote check-in (no location enforcement), set geofence_enabled=false and require_on_site=false on the talent policy.

5. Watch and reconcile

Register a webhook with webhook_register for immediate signed events, or poll shift_status. Use timesheet_export(mode) to pull verified records: mode=hours (default, free naive in/out) and mode=raw (free punches) are free; mode=processed is metered at $0.10 per worker per payroll window (billed once per worker-window) and requires account_set_payroll_period first (definition 0-11 or key like weekly_monday). Use report_summary for quick aggregations.

6. Send feedback

Use feedback_submit(category, text) to report issues or ideas. Categories: bug, friction, missing_capability, docs, billing, feature, other. This is unauthenticated, free, and works before account creation. A human reads every submission. Use feedback_list (requires auth) to see your past feedback.

Rules for reliable agents