← Back to Patterns

Org MCP endpoint

Availablemcp•intermediate

Overview

Every HUMΛN org can expose a hosted MCP endpoint at https://{org_slug}.mcp.haio.run. The Worker merges two tool catalogs:

  • Platform tools — curated primitives from @human/mcp (human.ask, human.call, developer tools pack, …)
  • Org mesh tools — workflows, agents, and capability packs registered in your org graph via GET /v1/mcp/tools
  • Host routing enforces that the delegation's org matches the subdomain (apps/mcp-worker/src/host-routing.ts). A token for did:org:acme cannot call tools on https://other-co.mcp.haio.run.

    Why an org endpoint?

  • Capability mesh — installed bundles and workflows appear in tools/list without redeploying the Worker
  • Sovereignty — org-scoped delegations; host slug must match delegation org
  • Same transport — /mcp (Streamable HTTP), /sse + /messages, OAuth discovery on auth.md
  • Local dev parity — HUMAN_ORG_ENDPOINT=https://{slug}.mcp.haio.run for npx @human/mcp
  • Think of it like: Your org's API gateway for AI clients — one URL, governed tools, Passport delegation at the door.

    Shipped surfaces

    HostMCP baseDiscovery
    Personal / platformhttps://mcp.haio.runGET /auth.md
    Org workspacehttps://{org_slug}.mcp.haio.runGET /.well-known/oauth-authorization-server
    Staginghttps://{org_slug}.mcp-staging.haio.runSame shape as production
    APIPurpose
    GET /v1/mcp/toolsOrg capability graph → MCP tool definitions (Worker caches ~60s)
    POST /v1/mcp/proxyFallback when a tool is in @human/mcp but not in the Worker catalog
    POST /v1/mcp-sessions/registerWorker registers Streamable HTTP sessions (internal)
    Code: apps/mcp-worker/src/org-tools.ts, packages/mcp/src/server.ts (stdio bridge).

    Try it

    >
    SDK:

    Claude Code hosted config

    {
      "mcpServers": {
        "human-org": {
          "url": "https://YOUR_ORG_SLUG.mcp.haio.run/mcp",
          "headers": {
            "Authorization": "Bearer "
          }
        }
      }
    }

    Host mismatch (403)

    If you see Host org slug "foo" does not match delegation org, mint a delegation for the org that owns foo, or use the bare mcp.haio.run host for personal workspace tokens.

    Use cases

  • Org-specific workflows in Cursor — install a bundle; its tools appear on {slug}.mcp.haio.run for every developer with scope.
  • Claude Code without npx — Streamable HTTP URL + OAuth PKCE; no local stdio process.
  • Capability pack publishing — marketplace pack installs register tools into the org mesh automatically.
  • Multi-tenant SaaS — each customer org gets an isolated MCP surface; delegations cannot cross hosts.
  • Security considerations

    DO

    Use org-scoped delegations on org hosts

    Review tools/list output before granting broad agent autonomy

    Revoke delegations in Console when offboarding team members

    DON'T

    Do not reuse personal tokens against org subdomains

    Do not disable scope checks by calling api.haio.run directly from untrusted clients without delegation

    Do not assume org tools when platform host is used — mesh tools require org_id on token

    See also

  • MCP three-tier ladder
  • Delegate Access · Scope vocabulary (alias)
  • Hosted SSE & Streamable HTTP
  • Community: MCP org mesh and platform catalog
  • Worker: apps/mcp-worker/src/host-routing.ts · org-tools.ts
  • Same route in the other SDKs

    The TypeScript tab above is the contract. These calls hit that same route.

    >
    SDK: