A SwooshRank product — sign-up and your client's consent screen both carry that name.
Using an AI agent? Copy a setup prompt.
Connect to the SwooshConnect MCP server at https://swooshrank.com/api/mcp using this config:
claude mcp add --transport http swooshconnect https://swooshrank.com/api/mcp --header "Authorization: Bearer <your key>"
Replace <your key> with my real API key, then call list_accounts and tell me what you find.
Connect to the SwooshConnect MCP server at https://swooshrank.com/api/mcp using this config:
[mcp_servers.swooshconnect]
url = "https://swooshrank.com/api/mcp"
bearer_token_env_var = "SWOOSHCONNECT_API_KEY"
Replace <your key> with my real API key, then call list_accounts and tell me what you find.
Connect to the SwooshConnect MCP server at https://swooshrank.com/api/mcp using this config:
{
"mcpServers": {
"swooshconnect": {
"url": "https://swooshrank.com/api/mcp",
"headers": {
"Authorization": "Bearer <your key>"
}
}
}
}
Replace <your key> with my real API key, then call list_accounts and tell me what you find.
One HTTP endpoint and one bearer header. Three clients have a written quickstart; every other MCP client reaches the same server today with no connector to install.
Guide
Set up from a written page: copy one line, paste your key, done.
Claude Code
Codex
CUCursor
MCP-ready
Any client that speaks MCP over HTTP with a bearer header reaches the same endpoint today. Nothing to install.
Claude Desktop
VSVS Code (Copilot agent mode)
WIWindsurf
CLCline
ZEZed
COContinue
GOGoose
JetBrains AI Assistant
Warp
Soon
No native connector from us yet. Each of these can already call the REST API like any other HTTP service.
ChatGPT
GRGrok
OpenAI Agents SDK
LALangChain
LLLlamaIndex
CRCrewAI
AUAutoGen
n8n
Make
ZAZapier
DIDify
FLFlowise
RERelevance AI
LILindy
MAManus
DEDevin
Replit Agent
LOLovable
BOBolt
V0v0
Platforms
Every account your clients have
Each platform below is connected by the account's own owner, and the agent works inside exactly the access that owner granted.
List the agents already deployed for this organization.
Call: agents_list { }
agents_targets
List agent deploy targets
List the projects an agent can be deployed onto for a connected runtime account.
Call: agents_targets { runtimeAccountId }
agents_deploy
Deploy an agent
Deploy an agent template onto a connected runtime project. Deploying creates an API key for this agent; that key lets it reply and post on your connected accounts.
Tear down an agent deployment and revoke its API key.
Call: agents_remove { deploymentId }
calls_numbers
List phone numbers
List the active phone numbers on a connected phone account — the caller ids a dialer campaign can use.
Call: calls_numbers { accountId }
dialer_campaigns
List dialer campaigns
List this organization's dialer campaigns with their settings and how many contacts are pending, done, or on the do-not-call list.
Call: dialer_campaigns { }
dialer_save_campaign
Save a dialer campaign
Create a dialer campaign, or update one by id: caller id, lines per agent (1, 2, 3 or 5), ring timeout, wrap-up pause, calling hours and time zone, and retry rules. mode "human" (the default) is dialed only by a person on the dialer screen. mode "ai" is dialed only by our automated caller, only to contacts with recorded consent, within calling hours and the required daily limit (maxCallsPerDay, 1 to 500); it needs aiSettings with the business name and the reason for the call. A field left out keeps its saved value.
Add contacts to a dialer campaign, either as CSV text (name, phone, optional timezone, ai_consent, consent_source, consent_text, consent_at columns) or as rows. A row's consent to automated calls (aiConsent express or written) needs a consentSource and, when given, a past consentAt; a row that claims consent without them is imported with no consent and counted in consentRejected. Numbers on the do-not-call list, duplicates and invalid numbers are skipped and counted.
Add a phone number to this organization's do-not-call list. It is never dialed again from any campaign.
Call: dialer_add_dnc { phone: "+15551234567" }
dialer_set_consent
Record a contact's consent
Record whether a dialer contact agreed to automated calls (none, express or written), with where that consent came from and, optionally, its wording. Only a contact with express or written consent can be called by an AI campaign.
List the calls our assistant handled on this organization's phone accounts: inbound calls it answered and outbound AI campaign calls, with the other party's number, the contact, the outcome (outbound only), consent, transfer, opt-out and summary. To poll: Start with an ISO `since` (e.g. now) and pass back `nextCursor`; each call then arrives exactly once, oldest end first, only after it ENDED and has been over for five minutes, so its outcome is final. nextCursor is the position of the last call returned ("<endedAt ISO>|<id>"), or null when nothing new arrived: keep your previous cursor then. At most limit calls per page (default 50, max 200). For a one-off look, without `since` you get a newest-first snapshot and calls may repeat between snapshots; it includes calls still in progress. The summary may arrive a few minutes after the call ends; poll again, with a snapshot or a since before that call's end, to pick it up.
Call: calls_log { since: nextCursor, limit: 50 }
voice_settings_get
Get receptionist settings
Get the AI receptionist settings for a connected phone account: whether it answers, the number it answers, the transfer number, business hours, greeting and instructions. settings is null when it was never set up.
Call: voice_settings_get { accountId }
voice_settings_save
Save receptionist settings
Save the AI receptionist settings for a connected phone account. Enabling it routes the chosen number to the receptionist; disabling it routes the number back to where it rang before. routingWarning is set when a number could not be routed back and needs fixing on the phone account.
Generated from the same schemas the tools validate against, so a client can be generated from it.
Live
Webhooks
A callback when a client finishes connecting, or when a new review arrives.
Soon
SDKs
A typed client per language, published from the same document.
Soon
Telephony / voice
Numbers, SMS and calls as accounts an agent can work the same way.
Soon
CRM sync
Write what the agent did back into the system of record.
Soon
Model usage
An agent writing with a hosted model, billed per use. Not built, and not priced.
Soon
Coming next
What one key does not reach yet
Named here so the shape of the product is visible, not so it can be counted on. Nothing below has a price, because nothing below is built.
Advertising
Meta Ads, Google Ads, TikTok Ads
Soon
Messaging & voice
WhatsApp Business, SMS, Voice calls
Soon
Phone numbersSoon
SDKsSoon
Built for
Two jobs, one account model
Agencies
You already hold the relationships. Carry every client's accounts under one key, and send one link per client instead of chasing a password.
Your client authorizes on the platform they already use and keeps control of it. Revoking the grant on the platform revokes it here, without asking you.
Agent builders
Ship the agent, not five OAuth integrations. Your code holds one key and never a customer's credential, so the accounts stay with whoever owns them.
The tool surface stops growing when the platform list does. 30 tools, one shape, one error vocabulary — and the account id is the only thing you pass around.
Pricing
What it costs
You pay for what you connect. Nothing else.
$1a month per connected account
billed yearly ($12 a year)
First two free. No card up front, and nothing to cancel while you stay inside the free tier.
One account is one platform, authorized by the one person who owns it. Disconnect it and it stops being billed from the next cycle.
Questions
The ones worth asking first
What happens at the 3rd account?
Nothing stops working. From the 3rd account on, $1 a month per connected account, billed yearly. Every account below that stays free, and it stays free after you start paying.
Can I cancel?
Cancel any time from the billing portal. The count reconciles daily, so disconnecting an account stops it being billed from the next cycle — removing an account partway through a year is not a refund for that year.
What does an agency with 20 clients pay?
One account each, two of them free: 20 clients = 18 × $1 a month = $18 a month, billed yearly.
What does my client see when I send them a connect link?
The provider's own consent screen, inside their own account. They choose which accounts to share, and they can revoke the grant on the platform at any time — revoking it there revokes it here.
Why does that screen name SwooshRank?
SwooshConnect is A SwooshRank product: SwooshRank is the company that holds the platform access it runs on, so the grant your client gives is to SwooshRank. Same company, same grant, one key.
Is it white-label?
The page your client opens from a connect link names your organization, not SwooshConnect. What comes after — the platform's own consent screen — names SwooshRank. That part is not white-label, and nothing on this site claims otherwise.
Can any AI agent use it?
Yes, over MCP or REST. Three MCP-ready clients have a written setup guide; any other client that speaks MCP over HTTP with a bearer header reaches the same server today, with no connector to install.
Does posting through the API change my reach?
No claim beyond this: a post publishes through each platform's official publishing path, under that account's own authorization — nothing about the API changes what a platform shows or to whom.
SwooshConnect is the API. SwooshRank is the company that holds the platform access behind it, which is why the consent screen your client sees names SwooshRank and not the product they were sent to.
Same company, same grant, one key. Your client's accounts stay their own, and revoking the grant on the platform revokes it here.
More platforms are coming.
Connect the first account
Get a key, send one link, and watch an agent read the account back. Nothing to install, and nothing to cancel while you stay inside the free tier.