---
title: "Autonomous onboarding. Metadata Developer Docs"
url: https://metadata.io/developers/agents
description: "What an agent can do on its own against Metadata today, what still needs a person, and exactly which endpoints have to land before onboarding is fully autonomous."
source: metadata.io
---

# Autonomous onboarding

Once an agent has a key it can run the whole platform unattended. Getting that first key still needs a person, for two specific reasons.

## What works today

One human step, once, then nothing else:

1. A person signs in at [platform.metadata.io](https://platform.metadata.io) and mints a key under Settings, API Keys.
2. The key goes into the agent's environment as `METADATA_PAT`.
3. From there the agent is autonomous across all 160 tools: it can discover the surface with `tools/list`, resolve its own account with `get_account_details`, and work without further human involvement.

The key is shown once. Rotate rather than recover it — see [Authentication](https://metadata.io/developers/authentication.html).

## What does not work yet, and why

| Blocked | Reason |
|---|---|
| An agent minting its own key | There is no key-issuance endpoint. Keys exist only through the app UI, so nothing an agent can call produces one. |
| An agent creating its own account | Trial registration requires an identity that has already been created by a person, so the flow cannot start from nothing. |

Until both exist, any claim that an agent onboards itself end to end would be untrue, so this page does not make it.

## What changes when they ship

The human step disappears and this page gains the two calls that replace it: one to create an MCP-scoped account, one to mint a scoped key. The agent flow becomes register, mint, then `tools/list`, with no person in the loop. Nothing above changes for anyone already running a key.

## Designing an unattended agent in the meantime

The constraint worth designing around is not the key. It is that 39 of the 160 tools are marked destructive by the server: they delete, archive, launch or move budget.

- Start unattended loops on the 65 read-only tools. They cannot change anything.
- Put a human approval in front of the destructive set, or deny it outright at the client. `launch_campaign` and `manage_campaign` are in it.
- `check_campaign_launch_readiness` is read-only and tells you whether a launch would succeed. Call it before the thing that spends.
- Filter the full list by effect in the [tool reference](https://metadata.io/developers/tools/).
