Every account your clients have, one key, any AI.

You pay for what you connect. Nothing else.

$1 a month per connected account

A SwooshRank product — sign-up and your client's consent screen both carry that name.

Using an AI agent? Copy a setup prompt.

Wire it up
claude mcp add --transport http \
  swooshconnect \
  https://swooshrank.com/api/mcp \
  --header "Authorization: Bearer <your key>"
list_accounts200
{
  "accounts": [
    {
      "accountId": "9f2c41e8-5a7b-4c1d-9e03-6f81b2a4c7d5",
      "provider": "google_business",
      "label": "Nona's Bakery",
      "name": "Nona's Bakery — Camden",
      "status": "connected",
      "locked": false,
      "connectedAt": "2026-09-21T09:14:02.000Z"
    }
  ],
  "pendingInvites": [],
  "billing": {
    "connected": 1,
    "free": 2,
    "billable": 0,
    "needsPayment": false,
    "frozen": false,
    "complimentary": false
  }
}
  • 7 platforms live
  • 30 tools
  • one key
Reaches
  • Google Business Profile
  • Facebook Page
  • Instagram
  • TikTok
  • Google Analytics
  • Supabase
  • AI model key
Product tour

Three calls, and that is the whole surface

The same request and response shape every time — an account id, the field the tool needs, and the fields it hands back.

Publish

create_post

One call, any platform below that takes a post.

Live on Google Business Profile, Facebook Page, Instagram, TikTok

Request
{
  "accountId": "<uuid>",
  "text": "Doors open at seven."
}
Response200
{
  "postId": "3f9e2a7b-6c1d-4b8a-9e02-7d5f4c3b2a19",
  "permalink": "https://example.com/p/3f9e2a7b"
}

Reviews

list_reviews + reply_review

Read what came in, then reply to the ones worth answering.

Live on Google Business Profile, Facebook Page

Request
{
  "accountId": "<uuid>"
}
Response200
{
  "reviews": [
    {
      "reviewId": "6b1f9c2e-4a7d-4e11-9c8a-2f5e7d3b1a06",
      "author": "Priya S.",
      "rating": 5,
      "text": "Best bread in town.",
      "date": "2026-09-18T16:40:00.000Z"
    }
  ]
}

Insights

get_insights

The last four weeks, the same shape on every platform.

Live on Google Business Profile, Facebook Page, Instagram, TikTok, Google Analytics

Request
{
  "accountId": "<uuid>",
  "range": "28d"
}
Response200
{
  "range": {
    "startDate": "2026-08-24",
    "endDate": "2026-09-21"
  },
  "metrics": [
    {
      "key": "views",
      "label": "Profile views",
      "total": 1842,
      "points": [
        {
          "date": "2026-09-21",
          "value": 96
        }
      ]
    }
  ]
}
Clients

Works in any AI agent

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
  • Cursor
MCP-ready

Any client that speaks MCP over HTTP with a bearer header reaches the same endpoint today. Nothing to install.

  • Claude Desktop
  • VS Code (Copilot agent mode)
  • Windsurf
  • Cline
  • Zed
  • Continue
  • Goose
  • 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
  • Grok
  • OpenAI Agents SDK
  • LangChain
  • LlamaIndex
  • CrewAI
  • AutoGen
  • n8n
  • Make
  • Zapier
  • Dify
  • Flowise
  • Relevance AI
  • Lindy
  • Manus
  • Devin
  • Replit Agent
  • Lovable
  • Bolt
  • v0
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.

PlatformConnectPostReviewsRepliesInsightsDetail
Google Business ProfileYesYesYesYesYes
Facebook PageYesYesYesYesYes
InstagramYesYesNoNoYes
TikTokPosts need an image or video URL — text alone is refused.YesYesNoNoYes
Google AnalyticsYesNoNoNoYes
SupabaseConnect and list today; no posting, reviews or insights tools on this platform yet.YesNoNoNoNo
AI model keyConnect and list today; no posting, reviews or insights tools on this platform yet.YesNoNoNoNo
Everything one key is meant to reach

Local & reviews

Social

Ads

  • Google AdsSoon
  • Meta AdsSoon
  • TikTok AdsSoon
  • LinkedIn AdsSoon

Analytics & search

Telephony

  • Voice callsSoon
  • TwilioSoon
  • Zoom PhoneSoon
  • RingCentralSoon
  • VonageSoon
  • AircallSoon
  • DialpadSoon
  • WhatsApp BusinessSoon
  • TelegramSoon
  • SMSSoon

CRMs

  • HubSpotSoon
  • SalesforceSoon
  • PipedriveSoon
  • Zoho CRMSoon
  • GoHighLevelSoon
  • Monday.comSoon

Business tools

  • SupabaseLive
  • Google CalendarSoon
  • Google ContactsSoon
  • TelnyxSoon
  • MailchimpSoon
  • ShopifySoon
  • WordPressSoon

AI platforms

  • AI model keyLive
  • Anthropic (Claude)Via MCP
  • OpenAI (Codex)Via MCP
  • ChatGPTSoon
  • xAI (Grok)Soon
  • Google AISoon
  • Meta AISoon
  • MistralSoon
  • PerplexitySoon
  • CursorVia MCP
  • WindsurfVia MCP
  • CohereSoon
Tools

One set of tools across every platform

An agent learns this surface once. Adding a platform adds accounts, never a new tool and never a new shape to handle.

  • connect_account

    Create a connect link

    Create a single-use link for a customer's client to connect one of their social or Google Business accounts.

    Call: connect_account { provider: "google_business", label: "Nona's Bakery", maxAccounts: 4 }
  • list_accounts

    List connected accounts

    List every account connected so far, any pending connect invites, and the current billing position.

    Call: list_accounts { }
  • create_post

    Publish a post

    Publish a post (text, and optionally an image or a link) to a connected account.

    Call: create_post { accountId, text: "Doors open at seven." }
  • list_reviews

    List reviews

    List reviews left on a connected account, newest information first.

    Call: list_reviews { accountId }
  • reply_review

    Reply to a review

    Post a reply to one review on a connected account.

    Call: reply_review { accountId, reviewId, text: "Thanks — see you soon." }
  • get_insights

    Get insights

    Get performance metrics for a connected account over a recent date range.

    Call: get_insights { accountId, range: "28d" }
  • inbox_list

    List inbox items

    List everything that has come in on a connected account — reviews and comments — newest first.

    Call: inbox_list { accountId }
  • inbox_reply

    Reply to an inbox item

    Post a reply to one inbox item (a review or a comment) on a connected account.

    Call: inbox_reply { accountId, itemId, text: "Thanks — see you soon." }
  • calendar_upcoming

    List upcoming calendar events

    List the owner's next events on a connected calendar, soonest first.

    Call: calendar_upcoming { accountId }
  • calendar_slots

    Find open calendar slots

    Find open booking slots on a connected calendar over the next few days.

    Call: calendar_slots { accountId, days: 7 }
  • calendar_book

    Book a calendar appointment

    Book a new appointment on the owner's real calendar. This changes their calendar.

    Call: calendar_book { accountId, start: "2026-10-01T14:00:00Z", end: "2026-10-01T14:30:00Z", leadName: "Jordan Rivera" }
  • calendar_move

    Move a calendar appointment

    Reschedule an existing appointment on the owner's real calendar. This changes their calendar.

    Call: calendar_move { accountId, eventId, start: "2026-10-01T15:00:00Z", end: "2026-10-01T15:30:00Z" }
  • calendar_cancel

    Cancel a calendar appointment

    Cancel an existing appointment on the owner's real calendar. This changes their calendar.

    Call: calendar_cancel { accountId, eventId }
  • customers_list

    List customers

    List the owner's contacts on a connected customer list.

    Call: customers_list { accountId }
  • customers_find

    Find a customer

    Find one contact on a connected customer list by name, email, or phone.

    Call: customers_find { accountId, q: "Jordan Rivera" }
  • agents_catalog

    List agent templates

    List the agent templates available to deploy.

    Call: agents_catalog { }
  • agents_list

    List agent deployments

    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.

    Call: agents_deploy { templateId: "review-reply", runtimeAccountId, runtimeTarget, secrets: { AI_MODEL_PROVIDER: "anthropic", AI_MODEL_KEY: "…" } }
  • agents_status

    Get agent deployment status

    Get the current status of one agent deployment.

    Call: agents_status { deploymentId }
  • agents_remove

    Remove an agent deployment

    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.

    Call: dialer_save_campaign { name: "Spring list", accountId, fromNumber: "+15551234567", lines: 1, hoursStart: "09:00", hoursEnd: "20:00", … }
  • dialer_import_contacts

    Import dialer contacts

    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.

    Call: dialer_import_contacts { campaignId, csv: "name,phone\nJordan Rivera,+15551234567" }
  • dialer_add_dnc

    Add a number to do-not-call

    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.

    Call: dialer_set_consent { contactId, level: "written", source: "Signed intake form" }
  • calls_log

    List handled calls

    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.

    Call: voice_settings_save { accountId, enabled: true, inboundNumber: "+15551234567", hoursStart: "09:00", hoursEnd: "18:00", … }
Quickstart

30-second quickstart

Point an AI client at one endpoint and hand it one key. It can reach every account your clients have connected, on every platform below.

Or call the API directly. It returns a link: send it to your client, and they authorize their own account on the provider's own consent screen.

curl
curl -X POST "https://swooshrank.com/api/v1/connect/accounts" \
  -H "Authorization: Bearer <your key>" \
  -H "Content-Type: application/json" \
  -d '{"provider": "google_business", "label": "Nona's Bakery"}'
Two doors in

MCP or REST — same 30 tools, same account model

An AI agent reaches every tool over MCP. Anything else calls the identical operation over plain REST.

One HTTP transport, one bearer header, every tool in any MCP client.

MCP
https://swooshrank.com/api/mcp
Authorization: Bearer <your key>
curl
curl -X POST "https://swooshrank.com/api/v1/connect/accounts" \
  -H "Authorization: Bearer <your key>" \
  -H "Content-Type: application/json" \
  -d '{"provider": "google_business", "label": "Nona's Bakery"}'
Node
await fetch("https://swooshrank.com/api/v1/connect/accounts", {
  method: "POST",
  headers: {
    Authorization: "Bearer <your key>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ provider: "google_business", label: "Nona's Bakery" }),
});
Python
import requests

requests.post(
    "https://swooshrank.com/api/v1/connect/accounts",
    headers={"Authorization": "Bearer <your key>"},
    json={"provider": "google_business", "label": "Nona's Bakery"},
)

SDKs — Soon

How it works

Three steps, then it is just an API

  1. Get a key

    One key for your whole organization. No per-agent keys, no per-platform keys, nothing to rotate when you add a client.

  2. Send a connect link

    Ask the API for a connect link and send it to your client. They sign in with the platform they already use and pick which accounts to share.

  3. The agent works

    Publish a post, read the reviews, reply to one, pull the numbers. The same 30 tools on every platform, so an agent learns them once.

Agents

Six agents you could deploy

Each one names what it plugs into, which of the 30 tools it calls, and what the connected accounts cost.

  • Reputation Officer

    Reads every review that lands on the accounts a client connected, drafts a reply in their voice, and posts the ones they approve.

    Build today
  • Social Publisher

    Takes a content calendar and publishes it to every account the client connected, on the day it is due.

    Build today
  • Performance Reporter

    Pulls the last four weeks from every connected account on a Monday morning and writes one digest per client.

    Build today
  • Inbox Responder

    Answers inbound messages the moment they arrive and logs the thread against the right record.

    Soon
  • Appointment Setter

    Offers the slots a calendar actually has, confirms by message, and writes the booking back.

    Soon
  • Ad Optimizer

    Watches spend against result across every ad account a client runs and moves budget toward what is working.

    Soon
Every example, with its cost sheet
Connection methods

Ways in

Three exist today. The rest are named here so the shape of the product is visible, not so they can be counted on.

  • MCP endpoint

    One HTTP transport and one bearer header. Every tool, in any MCP client.

    Live
  • REST API

    The same 30 operations as plain HTTP, for anything that is not an MCP client.

    Live
  • OpenAPI document

    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.

$1 a 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.

  • Nothing per call
  • Nothing per seat
  • Nothing per feature
  • Nothing per agent
  • Nothing per post

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.
Which platforms are live?
7 platforms live today — see the full platform list.
About

Who builds SwooshConnect

A SwooshRank product.

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.

Wire it up
claude mcp add --transport http \
  swooshconnect \
  https://swooshrank.com/api/mcp \
  --header "Authorization: Bearer <your key>"

One endpoint: https://swooshrank.com/api/mcp