Prerequisites
- Access to Grok Bot with Stripe Link connected and the Link CLI available to it, to let it set itself up. The payment is a shared payment token from the CLI, not a virtual card.
- Or: a Bland API key from the dashboard and a custom MCP connection that accepts a URL and headers, to configure the connection yourself
- Either way, an active Agent Phone Plan gets you a dedicated number and texting; headless self-setup pays for the first month as part of signup
Option 1: Let Grok Bot set itself up
Tell Grok Bot:What Grok Bot does
The paid path is four requests and one Link approval. Headless agent onboarding has the full request and response shapes, and Paying with an agent wallet is the detailed payment reference.1
Start the session
POST /v1/agent/onboarding/headless/start with your phone, your email, client_name: "grok", and payment_intent: "shared_payment_token". A 6-digit code is texted to your phone.2
Get the code
Grok Bot asks you for the code.
3
Request the payment challenge
POST /v1/agent/onboarding/headless/complete with the session, the code, and payment: { "request_challenge": true }. This verifies the code, keeps the session alive, and answers 402 PLAN_REQUIRED with a WWW-Authenticate: Payment header. The header carries the amount, the currency, and the Stripe network profile id of the seller.Grok Bot reads those values from the challenge, not from a doc: the price comes from the plan catalog and can change. At the time of writing the challenge names profile_61VOTHaCdbmfq6PD5A6VOTHa3XSQ3zOF0yDybvQ6S1k8 and 1499 usd. The amount comes from the payment challenge and changes when the offer does.4
Pay, one of two ways
Both need Manual: decode the challenge with
link-cli auth login once, which you approve in the Link app.Preferred: npx @stripe/link-cli mpp pay with the same /complete request. The CLI reads the challenge, asks you to approve the amount in Link, and retries /complete with the credential. The 200 carries the API key.link-cli mpp decode, mint a shared payment token with link-cli spend-request create using the network_id and amount it prints (see Mint the token with Stripe Link), then repeat /complete with payment: { "shared_payment_token": "spt_..." } in place of request_challenge.5
Confirm
GET /v1/me with the returned api_key, then add the key as a custom MCP connection (the values are under Option 2)./start, and the code check in step 3 restarts that window once. A re-issued challenge doesn’t restart it again, so your Link approval has to land inside it. If the session expires, Grok Bot starts over with a new code.
Option 2: Configure the connection yourself
The documented Plugins flow does not establish how to add an arbitrary MCP URL with an Authorization header. Confirm that your version supports both before following the configuration below.
Replace
YOUR_BLAND_API_KEY with your key in the connection’s credential field. Attach the connection to your task, then ask Grok Bot to list your Bland pathways to check authentication before placing a call.
If the required custom-server or header controls are unavailable, use a client with documented setup, such as Poke or OpenClaw.
You can create the account yourself in the dashboard rather than through Option 1, and add the Agent Phone Plan at Billing & Plans if you want a dedicated number and texting; without it, your agent calls from a shared Bland number on the org’s free credits.
On the Agent Phone Plan, calls and texts are limited to US and Canadian numbers, one call at a time, up to 60 minutes per outbound call, and up to 100 texts a day. See Limits.
Next steps
Headless agent onboarding
The full request and response shapes behind Option 1, including error handling and buying credits.
Personal AI Agents
Two-way texting, troubleshooting, and connection requirements.