---
title: "Agent Signup"
url: "https://docs.unified.to/mcp/agent-signup"
description: "An AI agent can create its own Unified.to workspace with one API call, without a human signing up first. The agent gets a workspace API key and Sandbox integrations with mock data straight away. A human claims the workspace later to own it and upgrade it."
updated: "2026-10-14T14:30:26.000Z"
---
# Agent Signup

Updated: October 14, 2026

An AI agent can create its own Unified.to workspace with one API call, without a human signing up first. The agent gets a workspace API key and Sandbox integrations with mock data straight away. A human claims the workspace later to own it and upgrade it.

> **For agents:** this page is also available as Markdown at <https://docs.unified.to/mcp/agent-signup.md>.

## [How it works](https://docs.unified.to/mcp/agent-signup.md#how-it-works)

1. The agent calls `POST /agent/signup`. No body and no credentials are needed.
2. The response contains a workspace API key, the MCP URL and a claim link. Save the key immediately; it is shown only once.
3. The agent connects to the Core MCP server with the key and starts building against Sandbox integrations.
4. When a human should take over, the agent shows them the claim link. The human signs in with a work email and becomes the workspace owner.

The workspace is on the Test plan. It runs for 30 days from signup, whether or not anyone claims it. To keep it running after that, a human must claim it and upgrade it.

## [1\. Sign up](https://docs.unified.to/mcp/agent-signup.md#%5F1-sign-up)

```
curl -X POST https://api.unified.to/agent/signup

```

Each region is separate. Sign up on the host for the region where the data should live, and use that region's hosts afterwards:

| Region | Signup URL                             |
| ------ | -------------------------------------- |
| US     | https://api.unified.to/agent/signup    |
| EU     | https://api-eu.unified.to/agent/signup |
| AU     | https://api-au.unified.to/agent/signup |

A successful call returns `201 Created`:

```
{
    "api_key": "eyJhbGciOi...",
    "workspace_id": "66f1c2...",
    "region": "us",
    "api_url": "https://api.unified.to",
    "mcp_url": "https://api.unified.to/mcp",
    "sandbox_integrations": ["hubspot", "greenhouse", "bamboohr", "quickbooks", "slack"],
    "claim_url": "https://app.unified.to/claim?token=...",
    "claim_expires_at": "2026-11-13T18:04:11.000Z",
    "trial_ends_at": "2026-11-13T18:04:11.000Z",
    "next_step": "Save api_key now; it is shown once. ..."
}

```

| Field                 | Description                                                                                                             |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| api\_key              | Workspace API key. Send it as Authorization: Bearer <api\_key>. **Shown only once**: store it in a secret or .env file. |
| workspace\_id         | The new workspace's ID.                                                                                                 |
| region                | The region that holds the workspace (us, eu or au).                                                                     |
| api\_url              | Base URL for the REST API in that region.                                                                               |
| mcp\_url              | The Core MCP server URL for that region.                                                                                |
| sandbox\_integrations | Integrations already active in the Sandbox environment, with mock data.                                                 |
| claim\_url            | Link a human opens to take ownership of the workspace.                                                                  |
| claim\_expires\_at    | When the claim link stops working. This is the same as trial\_ends\_at.                                                 |
| trial\_ends\_at       | When the 30-day Test plan ends.                                                                                         |
| next\_step            | A one-line instruction for the agent.                                                                                   |

The API key has the same access as any workspace API key: it can manage every connection, webhook and setting in the workspace. Never commit it or put it in a shareable URL.

## [2\. Connect to the MCP server](https://docs.unified.to/mcp/agent-signup.md#%5F2-connect-to-the-mcp-server)

Add the Core MCP server with the key in the `Authorization` header:

```
{
    "mcpServers": {
        "unified-core": {
            "type": "http",
            "url": "https://api.unified.to/mcp",
            "headers": { "Authorization": "Bearer ${UNIFIED_API_KEY}" }
        }
    }
}

```

Use the `mcp_url` from the signup response; it already points at the right region. See [Core MCP Server](https://docs.unified.to/mcp/core) for the tools it provides, and [Client configuration](https://docs.unified.to/mcp/core#client-configuration) for other clients.

## [Signing up from an MCP client](https://docs.unified.to/mcp/agent-signup.md#signing-up-from-an-mcp-client)

An agent that only speaks MCP can sign up without leaving its MCP client. Connect to the MCP server with no credential and `?signup=true`:

```
{
    "mcpServers": {
        "unified-signup": {
            "type": "http",
            "url": "https://api.unified.to/mcp?signup=true"
        }
    }
}

```

The server lists the Core tools plus `signup_unified_workspace`, the one tool that can be called without a credential. Calling it returns the same fields as `POST /agent/signup` above, and has the same per-IP limit. The server's instructions tell the model to call it, then reconnect to the returned `mcp_url` with `Authorization: Bearer <api_key>`. Until it reconnects, the other tools return an error asking it to authenticate.

Over the [REST tool API](https://docs.unified.to/mcp/additional-api-endpoints), `POST /tools/signup_unified_workspace/call` does the same without a credential.

`signup_unified_workspace` is never offered once the client presents a credential.

## [3\. Build against the Sandbox](https://docs.unified.to/mcp/agent-signup.md#%5F3-build-against-the-sandbox)

The Sandbox returns mock data and accepts any credentials (see [Sandbox](https://docs.unified.to/concepts/sandbox)). To create a connection, call the `create_unified_connection` tool, or the REST API:

```
curl -X POST https://api.unified.to/unified/connection \
  -H "Authorization: Bearer $UNIFIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"integration_type": "hubspot", "environment": "Sandbox", "categories": ["crm"], "permissions": ["crm_contact_read"], "auth": {}}'

```

Then read data with the returned connection ID, for example `GET https://api.unified.to/crm/{connection_id}/contact`.

## [4\. Hand the workspace to a human](https://docs.unified.to/mcp/agent-signup.md#%5F4-hand-the-workspace-to-a-human)

Show `claim_url` to a human when they should own the workspace. Opening the link, they:

1. Sign in to app.unified.to with a work email. Personal email domains such as Gmail are not accepted.
2. Become an admin and the billing owner of the workspace.
3. Can upgrade the plan, activate Production integrations, and copy the workspace secret (used to verify webhook signatures) from **Settings → API Keys**.

The agent's API key keeps working after the workspace is claimed.

## [Expiry](https://docs.unified.to/mcp/agent-signup.md#expiry)

The workspace follows the Test plan's 30-day trial, counted from signup. Claiming it does not restart the 30 days. If the workspace has not been upgraded when the trial ends, its connections and webhooks are paused. A workspace that nobody claimed cannot be upgraded.

## [Limits](https://docs.unified.to/mcp/agent-signup.md#limits)

* Signup is rate-limited per IP address. Too many calls return `429 Too Many Requests`.
* Each call creates a new workspace with its own key. Before signing up again, check whether you already saved a key.
