5-MINUTE SETUP

Your first AI-handled call
in under 5 minutes

Install TakeCallOS, pair your iPhone, add your AI keys, and point any MCP client at takecallos://mcp. Your agent makes real calls from your real number.

Step 1 — 30s Step 2 — 1 min Step 3 — 1 min Step 4 — 10s Step 5 — 2 min Step 6 — 30s
01
Install TakeCallOS ~30 seconds

Download the macOS app. No Xcode, no cloud accounts, no dependencies — just a .dmg.

TERMINAL
# Download the latest release
curl -L https://takecallos.polsia.app/download -o TakeCallOS.dmg

# Mount and install
open TakeCallOS.dmg

Or download directly → Drag TakeCallOS to Applications, launch it, and grant phone permissions on first run. macOS will ask for Contacts and Notifications access — both needed for call handling.

02
Claim your iPhone number ~1 minute

TakeCallOS pairs with your existing iPhone via Apple Continuity — the same technology that lets you take calls on your Mac. No virtual numbers. No porting. Your real cell number, nothing changes for callers.

📱 iPhone pairing QR screen screenshot · coming soon
ℹ️ iPhone must be on the same Wi-Fi network as your Mac. Cellular Calls must be enabled under Settings → Phone → Calls on Other Devices. The pairing takes about 30 seconds and persists until you unpair.
03
Add your AI keys ~1 minute

Open TakeCallOS → Settings → API Keys. Paste in the keys for the providers you want to use. BYOK means your usage goes directly to your provider account — no markup, no per-minute fees on top.

🤖 OpenAI
Anthropic
🔊 ElevenLabs
🎙️ Deepgram
🔒 Keys never leave your Mac. They're stored in the macOS Keychain and used only for on-device inference calls. TakeCallOS doesn't have a server that sees them.
04
Copy the MCP endpoint ~10 seconds

The local MCP server starts automatically when TakeCallOS is running. Your endpoint is always:

MCP endpoint takecallos://mcp
No configuration needed. The MCP server advertises two tools automatically: make_call and answer_call. Any MCP-compatible client will discover them on connection.
05
Wire it into your agent ~2 minutes

Pick your agent framework below. Paste the config snippet, restart your client, and TakeCallOS shows up as a phone tool.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json. Add the mcpServers block below (merge into existing config if you have other servers):

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "takecallos": {
      "url": "takecallos://mcp",
      "transport": "stdio",
      "command": "takecallos-mcp"
    }
  }
}

Quit and relaunch Claude Desktop. You'll see a phone icon in the tool palette — Claude can now make and receive calls from your iPhone number.

Go to Cursor → Settings → MCP and add a new server entry, or paste this snippet directly into your ~/.cursor/mcp.json:

~/.cursor/mcp.json
{
  "mcpServers": {
    "takecallos": {
      "url": "takecallos://mcp",
      "transport": "stdio",
      "command": "takecallos-mcp"
    }
  }
}

Reload the MCP servers from the Cursor settings panel. The TakeCallOS phone tools appear in Cursor Agent mode automatically.

Use the mcp Python client to connect and call the tools directly. Works with CrewAI, LangChain, AutoGen, or any custom agent:

PYTHON · install first: pip install mcp
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Connect to the local TakeCallOS MCP server
server_params = StdioServerParameters(
    command="takecallos-mcp",
    args=[],
)

async def make_call_example():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available tools (make_call, answer_call)
            tools = await session.list_tools()
            print("Available tools:", [t.name for t in tools.tools])

            # Place a call
            result = await session.call_tool(
                "make_call",
                arguments={
                    "number": "+1 555 867 5309",
                    "goal": "Book the earliest available cleaning next week",
                    "context": "I am a patient. My name is Alex. I am flexible on time."
                }
            )
            print("Call result:", result.content)

asyncio.run(make_call_example())

Wrap make_call as a tool in your CrewAI crew, LangChain agent, or AutoGen assistant the same way you'd add any other tool. See full integration examples →

06
Make your first AI-handled call ~30 seconds

Type a prompt in Claude Desktop (or your agent). Watch TakeCallOS place the call from your real number, stream the transcript live, and hand back a summary when it's done.

EXAMPLE PROMPT → LIVE CALL
"Call my dentist and book the earliest cleaning available next week."
📞 Call placed from your real iPhone number
📝 Transcript streams in real-time inside TakeCallOS
🤚 Handoff button is live — tap to take over at any point
Call ends, summary + booking confirmation returned to your agent
💡 Try these prompts: "Call the front desk and ask if Dr. Chen has any cancellations this week." · "Check if the restaurant at 555-0199 takes walk-ins tonight." · "Follow up on my Amazon order — it's been 5 days late, get me a real ETA."

Get notified when TakeCallOS ships

Your number. Your AI. Your inbox first.