Contact
Rezwan Mahmud
Give your agent a person to make the call.
Your agent names the business, the number, and the questions. A real person dials, talks to whoever picks up, and the answers come back to the agent as plain text. Every account gets 10 calls a month; a call that does not get through does not count.
What your agent can do
request_callHave a person call a number and report back | one of your 10 a month |
get_call_resultPick up a call's result later | unlimited |
check_allowanceCheck how many calls your account has left this month | unlimited |
Calls per month
10calls a month, every account
A call counts when the report comes back with the questions answered in full or in part. No answer, voicemail, a wrong number, or a refusal does not count. Calls in progress hold a slot until they are reported. The allowance resets on the first of each month.
Need more? Write to rmtonmoy232@gmail.com about an enterprise setup.
Connect your agent
Point any MCP client at this address. Clients that can sign in open a browser for an email code; the rest take a key.
https://phoneafriendforagents.com/mcp
Claude Codeone command
Sign in from the terminal
Add the server, then type /mcp inside Claude Code, pick phoneafriendforagents, and choose Authenticate. A browser window opens for the email code.
claude mcp add --transport http phoneafriendforagents https://phoneafriendforagents.com/mcp
Or paste a key
claude mcp add --transport http phoneafriendforagents https://phoneafriendforagents.com/mcp \
--header "Authorization: Bearer <your key>"
Add --scope user to have it in every project. Replies take minutes to hours; raise MCP_TOOL_TIMEOUT (milliseconds) if you want calls to wait longer than Claude Code's default.
Claude Desktop and claude.aicustom connector
Add a custom connector
Open Settings → Connectors (Customize → Connectors on Pro and Max, Organization settings → Connectors on Team and Enterprise), choose Add custom connector, and paste this address. Leave the OAuth client fields under Advanced settings empty; phoneAFriendForAgents registers clients automatically.
https://phoneafriendforagents.com/mcp
Claude opens the sign-in page. Enter your email and the six-digit code, and the tools are available in your next conversation. Connectors have no field for a pasted key, so signing in is the only route here.
CodexCLI, IDE extension, ChatGPT desktop app
Sign in
Add the server, then log in. Codex finds the sign-in page by itself and opens your browser for the email code.
codex mcp add phoneafriendforagents --url https://phoneafriendforagents.com/mcp
codex mcp login phoneafriendforagents
Or use a key
Keep the key in an environment variable and point Codex at it:
export PHONE_A_FRIEND_API_KEY="<your key>"
codex mcp add phoneafriendforagents --url https://phoneafriendforagents.com/mcp \
--bearer-token-env-var PHONE_A_FRIEND_API_KEY
Or edit ~/.codex/config.toml directly:
[mcp_servers.phoneafriendforagents]
url = "https://phoneafriendforagents.com/mcp"
bearer_token_env_var = "PHONE_A_FRIEND_API_KEY"
That one file is shared by Codex CLI, the Codex IDE extension, and the ChatGPT desktop app, so the server shows up in all three.
ChatGPTconnector in Developer mode
Add a connector
Turn on Developer mode (Settings → Security and login; on older builds Settings → Connectors → Advanced). Then under Settings → Connectors choose Create, give it a name, paste this address, and pick OAuth for authentication.
https://phoneafriendforagents.com/mcp
ChatGPT discovers the sign-in page and registers itself. Enter your email and the code, then enable the connector in a chat from the plus menu.
Custom connectors are available on the ChatGPT plans that include Developer mode, and they sign in with OAuth only; there is no field for a key.
Cursormcp.json
Sign in
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json inside one project. Cursor lists the server under Settings → Tools & MCP with a login button; click it and the sign-in page opens.
{
"mcpServers": {
"phoneafriendforagents": {
"url": "https://phoneafriendforagents.com/mcp"
}
}
}
Or paste a key
{
"mcpServers": {
"phoneafriendforagents": {
"url": "https://phoneafriendforagents.com/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
VS CodeGitHub Copilot, .vscode/mcp.json
Sign in
Run MCP: Add Server from the command palette and choose HTTP, or add this to .vscode/mcp.json. VS Code asks you to sign in the first time it connects.
{
"servers": {
"phoneafriendforagents": {
"type": "http",
"url": "https://phoneafriendforagents.com/mcp"
}
}
}
Or paste a key
{
"servers": {
"phoneafriendforagents": {
"type": "http",
"url": "https://phoneafriendforagents.com/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
Gemini CLIone command
Sign in
Add the server, then run /mcp auth phoneafriendforagents inside Gemini CLI to open the sign-in page.
gemini mcp add --transport http phoneafriendforagents https://phoneafriendforagents.com/mcp
Or paste a key
gemini mcp add --transport http phoneafriendforagents https://phoneafriendforagents.com/mcp \
--header "Authorization: Bearer <your key>"
The same thing in ~/.gemini/settings.json:
{
"mcpServers": {
"phoneafriendforagents": {
"httpUrl": "https://phoneafriendforagents.com/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
Windsurfmcp_config.json
Edit mcp_config.json
Open the MCP configuration from Cascade's MCP panel and add a server. Windsurf uses serverUrl rather than url.
{
"mcpServers": {
"phoneafriendforagents": {
"serverUrl": "https://phoneafriendforagents.com/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
Builds that support signing in to remote servers prompt you when you leave the headers out.
Claude Agent SDKTypeScript and Python
Pass the server in code
The SDK does not run a browser sign-in, so give it a key.
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "...",
options: {
mcpServers: {
phoneafriendforagents: {
type: "http",
url: "https://phoneafriendforagents.com/mcp",
headers: { Authorization: "Bearer <your key>" }
}
},
allowedTools: ["mcp__phoneafriendforagents__*"]
}
})) { /* ... */ }
from claude_agent_sdk import query, ClaudeAgentOptions
options = ClaudeAgentOptions(
mcp_servers={
"phoneafriendforagents": {
"type": "http",
"url": "https://phoneafriendforagents.com/mcp",
"headers": {"Authorization": "Bearer <your key>"},
}
},
allowed_tools=["mcp__phoneafriendforagents__*"],
)
Claude APIMessages API, MCP connector
Let Anthropic call the server for you
The MCP connector reaches the server from Anthropic’s side. Pass the key as authorization_token and send the beta header.
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-client-2025-11-20" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "..."}],
"mcp_servers": [{
"type": "url",
"url": "https://phoneafriendforagents.com/mcp",
"name": "phoneafriendforagents",
"authorization_token": "<your key>"
}],
"tools": [{"type": "mcp_toolset", "mcp_server_name": "phoneafriendforagents"}]
}'
OpenAI APIResponses API and Agents SDK
Hosted MCP tool
Works the same from the Agents SDK through its hosted MCP tool. OpenAI does not store the key, so it goes in every request.
response = client.responses.create(
model="...",
tools=[{
"type": "mcp",
"server_label": "phoneafriendforagents",
"server_url": "https://phoneafriendforagents.com/mcp",
"authorization": "<your key>",
"require_approval": "never",
}],
input="...",
)
Drop require_approval: "never" if you would rather approve each call yourself.
Anything elseany remote MCP client
Any client that speaks remote MCP
Give it the address. If it can sign in, it opens the sign-in page; if it only takes headers, add the key.
{
"mcpServers": {
"phoneafriendforagents": {
"url": "https://phoneafriendforagents.com/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
Need a key instead?
For scripts, SDKs, and clients that only take a header.
Arrives within a minute, with the setup lines above filled in.