# What your agent sees: a recorded Agentline NZ session

> Recorded session from a test account, 20 October 2026. Every request and response below is real output from Agentline NZ running locally with test providers: no real phone network, mailbox or payment was used. API keys, link tokens and the code email's message ID are replaced with placeholders such as `al_live_REDACTED`. The owner and code sender are example.com addresses, and the agent's inbox, demo-agent-0000@agentline.nz, is a reserved demo address that no account can be given. Local URLs are shown as https://agentline.nz.

Agentline NZ gives an AI agent its own New Zealand 028 number and @agentline.nz email inbox, over MCP and a REST API. This page shows one session from start to finish, so you can see what your agent sends and gets back before you sign up.

For the steps in plain words, see [How it works](/how-it-works). This page is the raw view.

## 1. The agent connects and signs up {#connect}

The agent uses the keyless MCP server at `https://agentline.nz/public/mcp`. It needs no account or key. It can read pricing and docs and call `signup`, but nothing on it can send a text or email.

### Connect {#keyless-initialize}

The agent's MCP client opens the connection. The server says what it's for.

**Request**

```
POST https://agentline.nz/public/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": {
      "name": "demo-agent",
      "version": "1.0.0"
    }
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {
        "listChanged": true
      }
    },
    "serverInfo": {
      "name": "agentline-public",
      "title": "Agentline (keyless)",
      "version": "1.0.0",
      "websiteUrl": "https://agentline.nz"
    },
    "instructions": "Keyless Agentline MCP server: read-only information plus self-signup. Nothing here can send SMS, email or calls for you. Use get_pricing, check_number_availability, get_docs and get_install_instructions. To get your own inbox, call signup with your human's email, then connect to the authenticated server at /mcp with the returned API key. Until your human verifies, you can message only them."
  },
  "jsonrpc": "2.0",
  "id": 1
}
```

### List the tools {#keyless-tools-list}

Five tools: four read-only ones and `signup`.

**Request**

```
POST https://agentline.nz/public/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "tools": [
      {
        "name": "get_pricing",
        "title": "Get Agentline plans and pricing",
        "description": "Plans, monthly prices in NZD, allowances and free-trial terms, plus pitchForHuman: a plain summary to pass to the person who'd pay. Information only.",
        "inputSchema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {}
        },
        "annotations": {
          "readOnlyHint": true,
          "destructiveHint": false,
          "openWorldHint": false,
          "idempotentHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        },
        "_meta": {
          "securitySchemes": [
            {
              "type": "noauth"
            }
          ]
        },
        "securitySchemes": [
          {
            "type": "noauth"
          }
        ]
      },
      {
        "name": "check_number_availability",
        "title": "Check NZ 028 number availability",
        "description": "Whether NZ 028 numbers can be issued now and how long setup takes. Doesn't reserve anything.",
        "inputSchema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {}
        },
        "annotations": {
          "readOnlyHint": true,
          "destructiveHint": false,
          "openWorldHint": false,
          "idempotentHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        },
        "_meta": {
          "securitySchemes": [
            {
              "type": "noauth"
            }
          ]
        },
        "securitySchemes": [
          {
            "type": "noauth"
          }
        ]
      },
      {
        "name": "get_docs",
        "title": "Read Agentline docs",
        "description": "Agentline documentation as Markdown. Topics: quickstart, auth, tools, rest, codes, sms-rules, signup, pricing, human, errors. Omit topic for all of it.",
        "inputSchema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "topic": {
              "type": "string",
              "enum": [
                "quickstart",
                "auth",
                "tools",
                "rest",
                "codes",
                "sms-rules",
                "signup",
                "pricing",
                "human",
                "errors"
              ]
            }
          }
        },
        "annotations": {
          "readOnlyHint": true,
          "destructiveHint": false,
          "openWorldHint": false,
          "idempotentHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        },
        "_meta": {
          "securitySchemes": [
            {
              "type": "noauth"
            }
          ]
        },
        "securitySchemes": [
          {
            "type": "noauth"
          }
        ]
      },
      {
        "name": "get_install_instructions",
        "title": "Get install instructions for an MCP client",
        "description": "How to add Agentline to a specific client. Clients: claude, chatgpt, claude-code, cursor, vscode, windsurf, cline, goose, zed, codex, gemini, n8n, generic.",
        "inputSchema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "client": {
              "type": "string",
              "enum": [
                "claude",
                "chatgpt",
                "claude-code",
                "cursor",
                "vscode",
                "windsurf",
                "cline",
                "goose",
                "zed",
                "codex",
                "gemini",
                "n8n",
                "generic"
              ]
            }
          },
          "required": [
            "client"
          ]
        },
        "annotations": {
          "readOnlyHint": true,
          "destructiveHint": false,
          "openWorldHint": false,
          "idempotentHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        },
        "_meta": {
          "securitySchemes": [
            {
              "type": "noauth"
            }
          ]
        },
        "securitySchemes": [
          {
            "type": "noauth"
          }
        ]
      },
      {
        "name": "signup",
        "title": "Sign up for Agentline (no human step)",
        "description": "Create your own Agentline account in one call. Give your human's email (and NZ mobile, optional). Returns an API key (shown once) and an MCP config to connect to /mcp straight away; your @agentline.nz inbox is live from day one. We email your human a verification link (and text a code if you gave a mobile). Opening that link gives your key full use of the account. Until then you can only check your account and can't message anyone. Limits: 3 signups per IP per hour, 3 per owner email per day.",
        "inputSchema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "owner_email": {
              "type": "string",
              "maxLength": 200,
              "description": "Your human's own email address. We email them a verification link."
            },
            "owner_mobile": {
              "description": "Your human's NZ mobile, e.g. 021 123 4567 (optional). We text them a code.",
              "type": "string",
              "maxLength": 30
            },
            "agent_name": {
              "description": "A name for you, e.g. \"Aroha's booking assistant\"",
              "type": "string",
              "maxLength": 60
            }
          },
          "required": [
            "owner_email"
          ]
        },
        "annotations": {
          "readOnlyHint": false,
          "destructiveHint": false,
          "openWorldHint": true,
          "idempotentHint": false
        },
        "execution": {
          "taskSupport": "forbidden"
        },
        "_meta": {
          "securitySchemes": [
            {
              "type": "noauth"
            }
          ]
        },
        "securitySchemes": [
          {
            "type": "noauth"
          }
        ]
      }
    ]
  },
  "jsonrpc": "2.0",
  "id": 2
}
```

### Read the plans {#keyless-get-pricing}

`get_pricing` returns the plans and `pitchForHuman`, a plain summary the agent can pass to the person who'd pay. Prices are as recorded; [Pricing](/pricing) is always current.

**Request**

```
POST https://agentline.nz/public/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_pricing",
    "arguments": {}
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "- **Free**: free forever, no card; 0 × NZ 028 numbers; 1 email inbox; 0 outbound SMS segments/month; 100 outbound emails/month; no voice; 1 connected agent.\n- **Starter**: NZ$29/month (no GST: Agentline isn't GST-registered); 1 × NZ 028 number; 1 email inbox; 50 outbound SMS segments/month; 500 outbound emails/month; no voice; 10 connected agents.\n- **Pro**: NZ$79/month (no GST: Agentline isn't GST-registered); 2 × NZ 028 numbers; 5 email inboxes; 200 outbound SMS segments/month; 2000 outbound emails/month; voice (200 min/month); 10 connected agents.\n- **Free trial**: 7 days on Starter and Pro. Card required; converts automatically unless cancelled; reminder email 2 days before. During the trial: 1 NZ 028 number, 1 email inbox, 10 outbound SMS segments, 50 outbound emails and no voice minutes.\n- **Free plan and trials** send only to the account owner's verified email and mobile.\n- Inbound SMS and email are unlimited on every plan. Inboxes are live from day one; NZ 028 numbers are set up within a few days of signup, with a full refund if a number hasn't arrived within 30 days of your first payment."
      }
    ],
    "structuredContent": {
      "freePlanEnabled": true,
      "plans": [
        {
          "id": "free",
          "name": "Free",
          "priceNzdPerMonth": 0,
          "gst": "not charged (Agentline isn't GST-registered)",
          "numbers": 0,
          "inboxes": 1,
          "smsSegmentsPerMonth": 0,
          "emailsPerMonth": 100,
          "voice": false,
          "voiceMinutesPerMonth": 0,
          "agents": 1,
          "cardRequired": false
        },
        {
          "id": "starter",
          "name": "Starter",
          "priceNzdPerMonth": 29,
          "gst": "not charged (Agentline isn't GST-registered)",
          "numbers": 1,
          "inboxes": 1,
          "smsSegmentsPerMonth": 50,
          "emailsPerMonth": 500,
          "voice": false,
          "voiceMinutesPerMonth": 0,
          "agents": 10,
          "cardRequired": true
        },
        {
          "id": "pro",
          "name": "Pro",
          "priceNzdPerMonth": 79,
          "gst": "not charged (Agentline isn't GST-registered)",
          "numbers": 2,
          "inboxes": 5,
          "smsSegmentsPerMonth": 200,
          "emailsPerMonth": 2000,
          "voice": true,
          "voiceMinutesPerMonth": 200,
          "agents": 10,
          "cardRequired": true
        }
      ],
      "trial": {
        "days": 7,
        "appliesTo": [
          "starter",
          "pro"
        ],
        "cardRequired": true,
        "numbers": 1,
        "inboxes": 1,
        "smsSegments": 10,
        "emails": 50,
        "voice": false,
        "reminderDaysBefore": 2
      },
      "pricingPage": "https://agentline.nz/pricing",
      "pitchForHuman": "I'd like my own New Zealand phone number and email inbox through Agentline, so I can text people for you, read their replies, and receive the one-time codes services send when I sign up for things on your behalf.\n\n- Free: an @agentline.nz email inbox, 100 emails a month, no card.\n- Starter, NZ$29/month: a NZ 028 number with two-way SMS (50 texts a month) plus the inbox.\n- Pro, NZ$79/month: 2 numbers, 5 inboxes, 200 texts a month and voice calls.\n\nStarter and Pro start with a 7-day free trial. It needs a card, but cancelling before it ends costs nothing, and Agentline emails you 2 days before it converts. The inbox works from day one; the number is set up within a few days of signup, and if it hasn't arrived within 30 days of your first payment you can ask for a full refund. Prices are in NZD with no GST.\n\nUntil you're on a paid plan I can only message your own verified email and mobile, and I'll check with you before texting or emailing anyone else.\n\nSign up: https://agentline.nz/signup?plan=starter (pricing: https://agentline.nz/pricing)"
    }
  },
  "jsonrpc": "2.0",
  "id": 3
}
```

### Check number timing {#keyless-check-number-availability}

Before it promises anything, the agent checks when a number would be ready.

**Request**

```
POST https://agentline.nz/public/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "check_number_availability",
    "arguments": {}
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Your NZ 028 number is set up within a few days of signup. Your @agentline.nz email inbox is live from day one."
      }
    ],
    "structuredContent": {
      "country": "NZ",
      "numberType": "028 business messaging (two-way SMS; voice on Pro)",
      "availableNow": true,
      "setup": "Your NZ 028 number is set up within a few days of signup.",
      "refundPolicy": "Full refund if your number hasn't arrived within 30 days of your first payment.",
      "emailInbox": "Your @agentline.nz email inbox is live from day one.",
      "recipients": "SMS goes to standard NZ mobile numbers only (020/021/022/027/028/029)."
    }
  },
  "jsonrpc": "2.0",
  "id": 4
}
```

### Sign up with the owner's email {#keyless-signup}

One call with the human's email. The agent gets an API key (shown once), an inbox and an MCP config. Until the owner confirms, the key can only check its own account. More in [How an AI agent can sign itself up](/guides/agent-self-signup).

**Request**

```
POST https://agentline.nz/public/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "signup",
    "arguments": {
      "owner_email": "owner@example.com",
      "agent_name": "Demo assistant"
    }
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Account created. API key (shown once): al_live_REDACTED\nInbox: demo-agent-0000@agentline.nz\nMCP: https://agentline.nz/mcp with Authorization: Bearer <apiKey>\nUntil your owner opens the link we emailed to owner@example.com, this key can only check its own account (GET /me, get_profile, get_my_number). Opening it confirms them as the owner and gives this key full use of the account. After that, Free and trial accounts send only to the owner's verified email and mobile."
      }
    ],
    "structuredContent": {
      "accountId": "acct_nyfrheu3hc2htpff",
      "apiKey": "al_live_REDACTED",
      "inbox": "demo-agent-0000@agentline.nz",
      "plan": "free",
      "agentName": "Demo assistant",
      "owner": {
        "email": "owner@example.com",
        "mobile": null,
        "verified": false
      },
      "verification": {
        "email": "sent",
        "sms": "not_requested",
        "expiresAt": "2026-10-26T13:35:08.465Z"
      },
      "restrictions": "Until your owner opens the link we emailed to owner@example.com, this key can only check its own account (GET /me, get_profile, get_my_number). Opening it confirms them as the owner and gives this key full use of the account. After that, Free and trial accounts send only to the owner's verified email and mobile.",
      "mcp": {
        "url": "https://agentline.nz/mcp",
        "headers": {
          "Authorization": "Bearer al_live_REDACTED"
        },
        "config": {
          "mcpServers": {
            "agentline": {
              "url": "https://agentline.nz/mcp",
              "headers": {
                "Authorization": "Bearer al_live_REDACTED"
              }
            }
          }
        }
      },
      "upgrade": "Once your owner has opened the link we emailed them, call POST /api/v1/billing/checkout (or the get_checkout_link tool) to upgrade. The Stripe Checkout link is emailed to owner@example.com. Starter and Pro start with a 7-day free trial; a card is required.",
      "timingsMs": {
        "validate": 0,
        "rate_limit": 7,
        "create_account": 3,
        "verify_email": 12,
        "total": 22
      },
      "mcpUrl": "https://agentline.nz/mcp",
      "next": "Connect to mcp.url with mcp.headers, call get_my_number, then email your owner to say hello."
    }
  },
  "jsonrpc": "2.0",
  "id": 5
}
```

## 2. The owner confirms by email {#owner}

### The verification email {#owner-verification-email}

The owner gets this email. It names the agent, its inbox and its key, and says what clicking allows.

```
From: login@agentline.nz
To: owner@example.com
Subject: Your AI agent set up an Agentline account for you

Kia ora,

An AI agent called "Demo assistant" created an Agentline account and named you (owner@example.com) as its owner. Agentline gives AI agents a New Zealand phone number and email inbox.

Its inbox: demo-agent-0000@agentline.nz

Clicking the link below confirms you're the owner and gives this agent full use of your account. Its API key "Demo assistant", created 20 Oct 2026, 2:35 am (New Zealand time), can then read the inbox and texts, receive one-time codes, send email and texts, and ask you to choose a paid plan. Until you click, the agent can't message anyone or read anything that arrives.

Confirm and give this agent access:
https://agentline.nz/auth/verify?token=REDACTED_TOKEN

This link works once and expires in 7 days. You can revoke the agent's key any time under API keys at https://agentline.nz/app/keys. If the link expires, sign in at https://agentline.nz/login, ask for a new one, and keep or revoke the key there.

Not you, or didn't expect this? Don't click. Ignore this email and the agent can't message anyone. To report it: https://agentline.nz/report

— Agentline, Aotearoa New Zealand
```

### Open the link {#owner-opens-link}

Opening the link only shows a confirm button (an HTML page; the heading and form are shown here). Mail scanners that open every link can't confirm the account.

**Request**

```
GET https://agentline.nz/auth/verify?token=REDACTED_TOKEN
```

**Response**

```
HTTP/1.1 200 OK
content-type: text/html; charset=UTF-8

<h1>Confirm your Agentline account</h1>
…
<form method="post" action="/auth/verify" class="form"><input type="hidden" name="token" value="REDACTED_TOKEN"/><button class="btn btn-primary">Confirm and sign in</button></form>
```

### Confirm {#owner-confirms}

The owner presses the button. The account is verified, the agent's key gets full use, and the owner is signed in to the dashboard.

**Request**

```
POST https://agentline.nz/auth/verify
Content-Type: application/x-www-form-urlencoded

token=REDACTED_TOKEN
```

**Response**

```
HTTP/1.1 302 Found
location: /app
```

## 3. The agent uses its inbox {#inbox}

Now the agent connects to the authenticated MCP server at `https://agentline.nz/mcp` with its API key.

### Check the account {#mcp-get-my-number}

`get_my_number` returns the inbox, plan and allowance. This is a Free account, so it has an inbox and no 028 number. Sending is limited to the owner.

**Request**

```
POST https://agentline.nz/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18
Authorization: Bearer al_live_REDACTED

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "get_my_number",
    "arguments": {}
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Plan: free (active)\nEmail: demo-agent-0000@agentline.nz (active)\nSMS sent this month: 0/0\nSending is limited to the account owner's verified contacts (owner@example.com)."
      }
    ],
    "structuredContent": {
      "accountId": "acct_nyfrheu3hc2htpff",
      "plan": "free",
      "status": "active",
      "trial": null,
      "createdBy": "agent",
      "ownerVerified": true,
      "sendingRestriction": "Sending is limited to the account owner's verified contacts (owner@example.com).",
      "numbers": [],
      "numbersPending": 0,
      "numberPendingSince": null,
      "inboxes": [
        {
          "id": "ibx_84gk2k912553dj3p",
          "address": "demo-agent-0000@agentline.nz",
          "status": "active",
          "graceUntil": null
        }
      ],
      "usageThisMonth": {
        "smsSent": 0,
        "smsIncluded": 0,
        "emailsSent": 0,
        "emailsIncluded": 100,
        "voiceMinutes": 0,
        "voiceMinutesIncluded": 0
      }
    }
  },
  "jsonrpc": "2.0",
  "id": 6
}
```

### Read the inbox {#mcp-list-emails}

`list_emails` shows the inbox. It's a new account, so it's empty.

**Request**

```
POST https://agentline.nz/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18
Authorization: Bearer al_live_REDACTED

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "list_emails",
    "arguments": {
      "direction": "in"
    }
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Inbox is empty."
      }
    ],
    "structuredContent": {
      "emails": []
    }
  },
  "jsonrpc": "2.0",
  "id": 7
}
```

### A code arrives {#code-email-arrives}

The agent enters its inbox address on a sign-up form at Example Service, a stand-in sender for this demo, and starts waiting. A few seconds later Example Service emails a code. Locally it's delivered through Agentline NZ's email handler, the same entry point Cloudflare Email Routing uses in production.

```
From: Example Service <no-reply@example.com>
To: demo-agent-0000@agentline.nz
Subject: Your Example Service sign-in code
Message-ID: <REDACTED_MESSAGE_ID>
Date: Mon, 19 Oct 2026 13:35:13 GMT
Content-Type: text/plain; charset=utf-8

Your Example Service code is 731904. It expires in 10 minutes.

If you didn't ask for this, you can ignore this email.
```

### Wait for the code {#mcp-wait-for-code}

`wait_for_code` was called before the email arrived. It returns as soon as the code lands, and each code is returned once. How it matches codes: [How wait_for_code works](/help/how-wait-for-code-works).

**Request**

```
POST https://agentline.nz/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18
Authorization: Bearer al_live_REDACTED

{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "tools/call",
  "params": {
    "name": "wait_for_code",
    "arguments": {
      "channel": "email",
      "from_contains": "Example Service",
      "timeout_seconds": 30
    }
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Code 731904 (email from no-reply@example.com at 2026-10-19T13:35:13.182Z)."
      }
    ],
    "structuredContent": {
      "found": true,
      "code": "731904",
      "channel": "email",
      "messageId": "eml_svxn8252c9r2zf68",
      "from": "no-reply@example.com",
      "receivedAt": "2026-10-19T13:35:13.182Z",
      "preview": "Your Example Service sign-in code"
    }
  },
  "jsonrpc": "2.0",
  "id": 8
}
```

Codes sent by SMS work the same way with `channel: "sms"` once the agent has an 028 number. That needs Starter or Pro, and the number is set up within a few days of signup. This demo doesn't show an SMS, because the test account has no number.

### Tell the owner {#mcp-send-email}

The agent emails its owner from its own address.

**Request**

```
POST https://agentline.nz/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-06-18
Authorization: Bearer al_live_REDACTED

{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "tools/call",
  "params": {
    "name": "send_email",
    "arguments": {
      "to": "owner@example.com",
      "subject": "Signed in to Example Service",
      "text": "Kia ora,\n\nI've signed in to Example Service with my inbox demo-agent-0000@agentline.nz. The code arrived in my inbox and I used it to finish signing in.\n\nDemo assistant"
    }
  }
}
```

**Response**

```
HTTP/1.1 200 OK
content-type: application/json

{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Email sent to owner@example.com (id eml_84qnfefgkag4megv)."
      }
    ],
    "structuredContent": {
      "email": {
        "id": "eml_84qnfefgkag4megv",
        "direction": "out",
        "from": "demo-agent-0000@agentline.nz",
        "to": "owner@example.com",
        "subject": "Signed in to Example Service",
        "snippet": "Kia ora,\n\nI've signed in to Example Service with my inbox demo-agent-0000@agentline.nz. The code arrived in my inbox and I used it to finish signing in.\n\nDemo assistant",
        "code": null,
        "status": "sent",
        "read": false,
        "hasAttachments": false,
        "createdAt": "2026-10-19T13:35:14.223Z"
      }
    }
  },
  "jsonrpc": "2.0",
  "id": 9
}
```

### What the owner gets {#owner-receives-email}

The owner's copy, with the footer Agentline NZ adds to every email an agent sends.

```
From: demo-agent-0000@agentline.nz
To: owner@example.com
Subject: Signed in to Example Service

Kia ora,

I've signed in to Example Service with my inbox demo-agent-0000@agentline.nz. The code arrived in my inbox and I used it to finish signing in.

Demo assistant

--
Sent by an AI agent using Agentline (https://agentline.nz). Report abuse: https://agentline.nz/report
```

## What this account can and can't do {#limits}

- Until you're on a paid plan, your agent can only email or text your own verified email address and mobile number. Paid plans can message anyone, within the [SMS rules](/help/who-can-my-agent-text).
- Messages are transactional and assistant messages only: replies, bookings, confirmations, reminders and codes. No marketing or bulk.
- The inbox is live from day one. The NZ 028 number is set up within a few days of signup, with a full refund if it hasn't arrived within 30 days of your first payment.

## Try it yourself {#try-it}

Add the keyless server to any MCP client that supports Streamable HTTP, then ask your agent to sign up with your email:

```
{
  "mcpServers": {
    "agentline-public": {
      "type": "http",
      "url": "https://agentline.nz/public/mcp"
    }
  }
}
```

- Per-client setup: [Install](/install)
- Plans and the free trial: [Pricing](/pricing)
- Sign up yourself instead: [Create an account](/signup)
- Everything an agent needs, in one place: [For agents](/agents)
