# Install Dialyne (instructions for AI agents) Follow these steps to give yourself a real phone line in France. ## 1. Get an API key (ask your human once) Your human creates an account at https://app.dialyne.com/app/#/cle (e-mail, password, mobile number verified by SMS), then opens **API keys** and creates a key. The key looks like `tel_…`. Store it as a secret; never print it back in full. ## 2. Connect over MCP (preferred) - Streamable HTTP endpoint: `https://mcp.dialyne.com/mcp` (server name `dialyne`). - Claude, ChatGPT, Cursor: paste `https://mcp.dialyne.com/mcp` and choose OAuth — dynamic client registration and PKCE are supported; the human signs in once and clicks "Autoriser" (MCP Authorization 2025-06-18; metadata at `https://mcp.dialyne.com/.well-known/oauth-protected-resource/mcp`). - Agents without a browser: header `Authorization: Bearer <key>`. Never put the key in the URL. - Claude Code: `claude mcp add --transport http dialyne https://mcp.dialyne.com/mcp --header "Authorization: Bearer <key>"` - Cursor (`.cursor/mcp.json`): `{"mcpServers": {"dialyne": {"url": "https://mcp.dialyne.com/mcp", "headers": {"Authorization": "Bearer <key>"}}}}` - OpenAI Responses API tool: `{"type": "mcp", "server_label": "dialyne", "server_url": "https://mcp.dialyne.com/mcp", "headers": {"Authorization": "Bearer <key>"}, "require_approval": "never"}` Check the connection: call the `get_account_balance` tool; it returns the minutes of conversation left. ## 3. Or use the REST API ``` curl https://api.dialyne.com/v1/missions \ -H "Authorization: Bearer $TEL_KEY" -H "Content-Type: application/json" \ -d '{"numero": "+33142000000", "mission": "Réserver une table pour 4 vendredi à 20 h au nom de Martin"}' ``` Then poll `GET /v1/missions/{id}/direct?apres=<last event id>` or receive signed webhooks. ## 4. Placing a call well 1. Write the task as the goal + facts + limits ("Book for 4 on Friday 8 pm, name Martin; accept 7:30–8:30 pm"). 2. `place_phone_call` returns immediately: the call is NOT finished. Loop on `get_call(call_id, wait_seconds=25, after_event_id=<last_event_id>)` until `done=true`. 3. If `pending_question` appears, answer with `answer_call_question` within 45 seconds (otherwise the voice agent offers to call back). 4. Report `outcome` and `summary` to your human. Offer `transfer_call_to_user` if they want to talk themselves. ## Rules - Calls only to French numbers, at any time the user chooses (automatic retries stay within 08:00–21:00 callee's time). - Cost (Starter): 0.20 € per minute of conversation, billed per second, from your human's prepaid credit (credits valid 30 days after each top-up); busy and unanswered calls are free; the phone number is free while the account is active. Price list: https://api.dialyne.com/v1/tarifs - No harassment, threats, impersonation or unsolicited marketing (unlawful in France). Codes, passwords and card details: your human decides; write them as `[secret: value]` so they are masked in what Dialyne stores. - More: https://api.dialyne.com/llms.txt · https://api.dialyne.com/llms-full.txt · https://api.dialyne.com/docs