Your credential, your bill.
A connection is a vendor you already pay for, reached through your agntdata API key. You connect the account once in the dashboard, and every call after that rides the same auth, the same logs and the same tools as everything else on the platform. The vendor bills you directly, so the platform charges no data credits for it.
How this differs from a curated data source
There are two ways data reaches an agent here, and the difference is who holds the upstream relationship.
| Curated data source | Connection | |
|---|---|---|
| url | /v1/data/:source/* | /v1/connections/:vendor/* |
| account | Ours. We hold the upstream relationship. | Yours. You connected it. |
| billing | Priced per call in data credits. | No data credits. Calls are logged at zero cost. |
| 402 / 429 | Your credit balance, or our upstream capacity. | Your vendor plan. Nothing to do with your credit balance. |
consequence
Curated sources are documented in the API reference, which carries the per-call pricing for each one.
One pass-through route per vendor
Every HTTP method is accepted on /v1/connections/:vendor/*. Everything after the vendor segment is appended to the vendor's own base URL, so you address the vendor's API with the vendor's own paths. The method, the query string, the JSON body and its Content-Type all ride along, and we attach the credential for you.
curl -s "https://api.superagnt.com/v1/connections/hubspot/crm/v3/objects/contacts?limit=10" \
-H "Authorization: Bearer $AGNTDATA_API_KEY"Authentication is Authorization: Bearer <your agntdata API key>. Keys are minted and rotated in the dashboard at app.superagnt.com.
envelope
{ success, data, meta }, where meta carries vendor, cached and latencyMs. There is no costCents here, because there is no cost.Where the vendor ships a bundled OpenAPI spec, the request is validated against it before it leaves us. A bad parameter comes back as a 400 naming the field and where it was found, instead of as a confusing vendor error.
Two credential kinds, one catalog
Connections live on the Integrations page in the dashboard, split into Enabled (what this workspace has connected) and Available (everything else).
- 01
Pick the vendor
Open Integrations in the dashboard and choose the vendor from the Available list.
- 02
Authorize, or paste a key
An OAuth vendor opens a popup and you approve the install there. An API-key vendor shows a field you paste into once. Per-vendor setup notes render inline and tell you exactly where in the vendor's own settings to generate that key.
- 03
Done
The vendor moves to Enabled, its REST route starts answering, and its tools appear on the workspace MCP server.
keys are write-only
A few vendors accept either kind. When a vendor supports both and the workspace has an active OAuth install, the OAuth install wins and the pasted key is ignored.
You never handle an access token
OAuth access tokens are refreshed for you, just in time, before each call. If the vendor still answers 401, we force one refresh and retry the call exactly once. That covers the ordinary case of a token that expired mid-flight.
If the retry fails too, or the install has no refresh token, the install is marked revoked. Calls then return a 401 telling you to reconnect from the dashboard, and opening that connection in the dashboard shows a reconnect prompt naming the state it is in (revoked, expired, or needs attention). Nothing silently half-works.
What the proxy does with an upstream failure
Upstream statuses are translated into something a caller can act on, rather than passed through raw.
| Upstream | You get | Meaning |
|---|---|---|
| no credential | 400 | This workspace has not connected the vendor. Connect it in the dashboard first. |
401 | 401 | Reconnect the OAuth install, or update the API key. The message says which, because the fix differs. |
403 | 403 | The connected credential lacks permission for that operation. Widen the scopes on the vendor side. |
429 | 429 RATE_LIMITED | Names the vendor that rate limited you. It is their limit, on your plan. |
other 4xx | same status | Passed through, so your own error handling still works. |
5xx | 502 | The vendor is down or erroring. Retry. |
Failed calls are logged at zero cost, same as successful ones. A broken connection never costs you credits.
Connecting a vendor is the opt-in
Each vendor operation is also an MCP tool named connection_<vendor>_<operationId>. Curated data sources have to be switched on family by family, but a connection does not: the moment the account is connected, its family (connection:<vendor>) joins the default server's always-on base and its tools show up. Disconnect it and they go away again.
A deployed agent that calls a connection tool for a vendor the workspace has not connected gets a structured tool result rather than a protocol error, carrying a dashboard link it can hand to a human:
{
"error": "INTEGRATION_NOT_CONNECTED",
"vendor": "hubspot",
"connect_url": "https://app.superagnt.com/dashboard/connections?vendor=hubspot"
}Vendors you can connect today
Each vendor is addressed by its slug at /v1/connections/<slug>/* and exposes the same operations as connection_<slug>_* MCP tools.
CRM and sales
HubSpot
Contacts, companies, deals, tickets, products and line items, plus notes, tasks, calls and meetings.
Attio
Records, lists, notes, tasks, meetings and workspace members.
Breakcold
Sales CRM records, schema and views, plus a unified email and social inbox.
Salesforce
SOQL and SOSL, generic sobject reads and writes, composite operations.
Outbound and lead data
Instantly AI
Cold email campaigns, leads, accounts and analytics.
HeyReach
LinkedIn outreach campaigns, lead lists, conversations and sender networks.
AI Ark
B2B people and company search with verified emails and mobile numbers.
SocialScraper
Public Instagram profile, follower and following data. Submit a scrape, then poll for the payload.
Dub
Short links, conversion tracking, partners and payouts.
Docs, sheets and scheduling
Notion
Pages (including page content as markdown), databases and data sources, comments and users.
Airtable
Records, comments, base schema and change webhooks.
Google Sheets
Read and edit spreadsheets through the Sheets v4 API.
Google Docs
Create, read and edit documents through the Docs v1 API.
Google Calendar
Calendars, events, free/busy queries and calendar sharing.
Cal.com
Bookings, event types, schedules and availability.
Engineering, product and support
GitHub
Repositories, branches, file contents, issues, pull requests, releases and search.
Linear
The full Linear GraphQL API through one proxied endpoint.
PostHog
Persons, events, insights, feature flags, cohorts, annotations.
Intercom
Contacts, companies, conversations, tickets, tags, segments and help-center articles.
Supabase
Management API for your own Supabase organization. SQL goes through the scoped role instead, see Bring your own database.
Billing
Stripe
Customers, payment intents, subscriptions, invoices, products, prices and checkout.
QuickBooks
QuickBooks Online accounting, financial reports and batch operations.
Search, web and media
Exa
Neural and keyword web search, page contents, agentic answers.
Google Search Console
Search analytics, property and sitemap management, URL inspection.
AgentMail
Give an agent its own inbox. Send, receive, reply, forward, with threads, drafts and event webhooks.
X (Official API)
Post, delete, like, repost, follow, bookmark and DM from a connected X account.
Memelord
Image memes and captioned video memes, rendered asynchronously.
not on this list
Two different ceilings
The limit that produces a 429 from us is your plan's requests-per-minute figure, counted per workspace across every /v1 surface — see Errors and rate limits.
Separately, the integration registry records the ceiling each vendor declares for its own API, chosen to sit under what the vendor allows. The proxy does not throttle against these figures; they are published so you can size a burst of agent calls before the vendor's own limiter does it for you, with a 429 that is theirs rather than ours.
| Vendor | Req / sec | Req / min |
|---|---|---|
| instantly, attio | 100 | 6,000 |
| stripe | 25 | 1,500 |
| github | 15 | 900 |
| google-sheets, google-docs | 60 | 300 |
| dub | 60 | 600 |
| hubspot, intercom, linear, agentmail, exa, google-calendar, google-search-console, quickbooks, salesforce | 10 | 500 to 600 |
| posthog | 8 | 480 |
| airtable, ai-ark, breakcold, heyreach, calcom, memelord, social-scraper, supabase, x-official | 5 | 60 to 300 |
| notion | 3 | 180 |