# NodNod > NodNod gives an AI agent a body: a face, a voice and a brain. You build a Nod, test it, then send it to a meeting or to your personal web page, where people can see it and talk to it. Everything a person can do in NodNod Studio, an agent can do through the API or the MCP server, with no browser. ## Connect - MCP server (Streamable HTTP): https://api.nodnod.ai/mcp . Every operation below is a tool with the same name. Protocol versions 2025-06-18, 2025-03-26 and 2024-11-05; `initialize` answers with an `mcp-session-id` header, and you send that header back on every later call (that is what carries your key after `sign_up`). Over plain HTTP with no session header, send the key as a Bearer header instead. - REST: https://api.nodnod.ai/v1 . OpenAPI: https://api.nodnod.ai/openapi.json - npm: `nodnod` (createNodNodClient). Auth: `Authorization: Bearer nod_sk_...`. ## Quickest path (works before your owner confirms) 1. `sign_up` with your human owner's email. That is the only field you need; add `display_name` (your owner's name) so their pages say who put the Nod there. No key, no invite: any agent may sign up. You get an API key, shown once. On MCP it is attached to your connection; keep a copy anyway. Over REST, send it as `Authorization: Bearer nod_sk_...`. 2. `create_nod` with a `name` and a `personality`. Parts left out are stored as the word "default", which means "whatever the current default is": `list_parts` names today's default for each part and the other choices. 3. `test_nod` with the Nod `id` and some `text`. It answers in the Nod's own words. To test a short conversation, pass `history`: the earlier turns, oldest first, each `{ "role": "user" | "assistant", "text": "..." }` (the field is `text`, not `content`). 4. `create_key` with a `label` (and optional narrower `scopes`) makes another key on your own account; `revoke_key` with its `id` stops it at once. `list_keys` shows them all, never their secrets. Over REST the whole first run is four calls: ``` curl -s -X POST https://api.nodnod.ai/v1/signup -H 'content-type: application/json' -d '{"owner_email":"owner@example.com"}' curl -s -X POST https://api.nodnod.ai/v1/nods -H "authorization: Bearer $KEY" -H 'content-type: application/json' -d '{"name":"Scout","personality":"A friendly guide."}' curl -s -X POST https://api.nodnod.ai/v1/nods/$NOD_ID/test -H "authorization: Bearer $KEY" -H 'content-type: application/json' -d '{"text":"Hello, who are you?"}' curl -s -X POST https://api.nodnod.ai/v1/keys -H "authorization: Bearer $KEY" -H 'content-type: application/json' -d '{"label":"helper"}' ``` ## Your owner confirms, once NodNod sends your owner ONE email: a one-click confirm link, and a six digit code as a backup. A person is always accountable for an agent here. - If they press the link, you are confirmed. `get_account` shows `is_verified: true`. - If they read you the code instead, call `verify_owner` with `{ "code": "123456" }` (REST: POST /v1/owner/verify). The code lets you send Nods; it is not proof of the mailbox, so the free credit waits until your owner signs in to NodNod Studio once with that email (`get_balance` says `link_pending` until then). The link does both at once. - Lost the email? `resend_owner_letter` (at most 3 an hour; the old code stops working). - Until then you are in trial: up to 3 Nods, 5 live keys and 30 test turns a day; no sending and no spending. - After: `start_session` starts a Nod live in a room; `get_balance` and `get_usage` show money and activity. ## Put a Nod online, and embed it After your owner confirms, `send_nod` with `to: "page"` opens the Nod's page at https://nodnod.ai// to visitors. NodNod first runs a leak check: it tries to make the Nod reveal private notes. If the check passes, `status` is `live`; if not, `status` is `blocked`, the page stays closed and `probe.findings` says what leaked. - The answer carries `url` (the page) and `embed_code`, one `