What it takes to build a connector for 100 apps

An agent researched auth, access, API surface and MCP for each app. Every claim links to a quoted source. Anything it could not prove is left blank.

100 apps507 evidence snippets20 checked by handmedian confidence 0.74built 2026-09-26

Findings

55 of 100 are buildable today. 26 need a sandbox, an app review or a sales call first. 17 we could not settle.

ready 55 sandbox 10 app review 12 sales 4 no API 2 unsettled 17
01

Established SaaS uses OAuth. AI and data tools hand out keys.

CRM on OAuth29/10
AI-native on OAuth21/10
Data and SEO on OAuth20/10

An AI or scraping connector is a pasted key. A CRM connector needs an OAuth app registered with every vendor.

02

Every category gates differently.

Marketing and Ads apps behind an app review5/10
Finance apps behind a sales call3/10

Ads platforms want an app review queue. Fintech wants a partnership conversation. Different owners, different timelines.

03

Ready to build is not ready to ship.

ready apps needing review to go live11/55
all apps needing review to go live23/100

Front, Amazon Selling Partner, Vercel and others work in dev, then wait on the vendor before real customers can connect. Unknown for 75 rows, so this is a floor.

04

Half the easy wins have no Composio toolkit yet.

ready apps with no toolkit27/55
all apps with no toolkit44/100

No paperwork, no outreach, just engineering time. Starts with Front, Twilio, WhatsApp Business.

05low trust

MCP looks universal. It is also our shakiest claim.

apps with an MCP server, per our data96/100
of those, marked official66/96

In the hand-checked sample, 4 of 6 wrong MCP answers invented an official server. The real number is lower.

06

Our blind spot is Developer and Infra.

Developer and Infra left unsettled6/10
all other apps unsettled11/90

Unsettled means we could not prove access from the pages we read. It says nothing about whether their API is open.

52%from 45%

How far to trust this. 52% of fields match a human check across 20 apps. Access, which decides the stage, is weakest at 32%. When it is wrong it usually says free self-serve (5 of 7). See verification

Where the easy wins are

CRM is the easiest category (8 of 10 ready). Marketing and Ads is the hardest (3 of 10), held back by app reviews rather than prices.

Stage by category

CRM and Sales
10
Communications and Messaging
10
Ecommerce
10
Productivity and Project Management
10
Finance and Fintech
10
Data, SEO and Scraping
10
Support and Helpdesk
10
Developer, Infra and Data platforms
10
AI, Research and Media-native
10
Marketing, Ads, Email and Social
10
ready to build sandbox or app review partnership outreach no viable API or unsettled

Auth split

OAuth2
45
Bearer
31
API key
17
Basic
6
not determined
1

Access to credentials

free self-serve
56
not determined
16
admin approval
13
paid plan
9
partner or contact-sales
5
free trial
1

Ease of build vs worth building

Ready to build
Not ready yet
Well known
29Build now

Salesforce, HubSpot, Pipedrive, Intercom and 25 more

32Worth the paperwork

Zoho CRM, Zendesk, Freshdesk, Help Scout and 28 more

Niche
26Easy, niche

Attio, Twenty, Podio, Close and 22 more

13Park it

DealCloud, Pylon, LiveAgent, Gladly and 9 more

"Well known" is a hand-written list plus API breadth, kept in scout/analyze.py so you can disagree with it.

The 100

Click a row for its evidence. The dot is how well evidenced the row is; human marks the 20 rows checked by hand.

# App Stage Access Auth MCP Confidence Evidence

What the agent does, and where a human was needed

The agent does the reading. A person decides what the words mean.

Manual playbook

About 15 minutes per app, a full day for 100

  1. Find the developer docs
  2. Find the auth page
  3. Find pricing or signup
  4. Decide if you can get a key yourself
  5. Check for an MCP server
  6. Write it down consistently

What the agent owns

About 45 seconds per app, six at a time

  • 3 searches, up to 6 pages fetched and cached
  • One extraction call, then a targeted retry for gaps
  • A support check on every claim
  • A mechanical confidence score
  • Lookup against 1,543 Composio toolkits
  • Enum values that never drift

What still needed a person

The agent cannot tell when it is confidently wrong

  • Designing the schema and enum meanings
  • Ruling a 14 day trial is not free self-serve
  • Noticing confidence scored a wrong row 1.0
  • Spotting Sherlock was four different products
  • Judging which apps are well known
  • Checking the 20-app sample by hand

Verification

20 apps checked by hand: 10 hard ones named in the brief, 10 drawn at random, one per category. Scored before and after the loops.

52%from 45%fields matching the human
48from 55misses in the sample
36from 34confidently wrong answers
20of 36wrong answers still scored 0.70+
FieldOverallHard halfRandom halfChecked
access32%20%44%19
auth45%+540%+1050%20
api_type85%+2570%+20100%+3020
prod_requires_review20%0%50%5
mcp65%+671%+1460%17
api_breadth42%33%50%19

Accuracy after the loops, with the change from the first full run. Halves are kept apart: hard shows we did not cherry-pick, random shows a typical row.

LoopChecksResult
ASecond extraction, different prompt93 rows disagreed
BSnippet still on the cited page0 changes
CReal browser reads signup page9 read, 2 contradicted
DHuman sample48 misses
EPage is about the right app19 pages dropped
SupportSnippet supports the exact claim24 rows overruled
Instructive missHumanAgent
Paygent Connect access
Read free-sounding copy as free credentials.
no public APIfree self-serve
Squarespace auth
Read the header in a curl example, not how the key is obtained.
API keyBearer
Meta Ads mcp
Claimed an official MCP server that does not exist.
noneofficial
Full misses log48 rows
App Half Field Human Agent Conf. Caught by
Meta Adsrandomaccessfree self-serveadmin approval0.94loop A
SquarespacerandomauthAPI keyBearer0.94human only
Meta Adsrandommcpnoneofficial0.94human only
Meta Adsrandomapi_breadthlarge (>150 endpoints)unknown0.94loop A
Squarespacerandomapi_breadthmedium (30 to 150)unknown0.94loop A
Paygent Connecthardaccessno public APIfree self-serve0.84human only
Paygent ConnecthardauthBasicBearer0.84human only
Paygent Connecthardapi_typenoneREST0.84human only
Paygent Connecthardmcpnonecommunity0.84loop A
DealCloudhardapi_breadthmedium (30 to 150)unknown0.84loop A
Brexrandomaccessadmin approvalpartner or contact-sales0.84loop A
Brexrandommcpnoneofficial0.84human only
Brexrandomapi_breadthmedium (30 to 150)unknown0.84loop A
iPayXhardaccessfree trialfree self-serve0.81human only
iPayXhardauthAPI keyBearer0.81human only
iPayXhardapi_breadthsmall (<30 endpoints)unknown0.81loop A
Mermaid CLIhardauthnoneAPI key0.74loop A
NotebookLMhardauthOAuth2Bearer0.71loop A
NotebookLMhardmcpnoneofficial0.71human only
NotebookLMhardapi_breadthsmall (<30 endpoints)unknown0.71loop A
Plainrandomaccessfree trialfree self-serve0.69loop A
PlainrandomauthAPI keyBearer0.69loop A
MrScraperrandomauthAPI keyBearer0.69loop A
higgsfieldrandomauthcustomAPI key0.69human only
Commas (formerly fanbasis)hardaccessadmin approvalfree self-serve0.66loop A
Commas (formerly fanbasis)hardapi_breadthmedium (30 to 150)unknown0.66loop A
Zoho Cliqrandommcpnoneofficial0.66human only
Waterfall.iohardaccesspartner or contact-salesfree self-serve0.65loop A
Waterfall.iohardapi_breadthsmall (<30 endpoints)unknown0.65loop A
SentryrandomauthBearerOAuth20.64loop A
Sentryrandomapi_breadthlarge (>150 endpoints)unknown0.64support check
Coda (rebranded to Superhuman Docs)randommcpofficialcommunity0.61loop A
Salesforcerandomapi_breadthlarge (>150 endpoints)unknown0.60support check
ConsensushardauthAPI keyBearer0.59human only
Consensushardapi_breadthsmall (<30 endpoints)unknown0.59loop A
Sherlockhardapi_typeCLI-onlynone0.51loop A
iPayXhardprod_requires_reviewFalseblank0.81loop A
Mermaid CLIhardaccessno public APIblank0.74loop A
Mermaid CLIhardprod_requires_reviewFalseblank0.74loop A
NotebookLMhardaccessfree trialblank0.71loop A
MrScraperrandomaccessfree self-serveblank0.69support check
Sentryrandomaccessfree self-serveblank0.64support check
Salesforcerandomprod_requires_reviewTrueblank0.60loop A
Consensushardaccesspartner or contact-salesblank0.59support check
Consensushardapi_typeRESTblank0.59loop A
Sherlockhardaccessno public APIblank0.51loop A
Sherlockhardauthnoneblank0.51loop A
Sherlockhardprod_requires_reviewFalseblank0.51loop A
Why the errors lean one wayand why confidence misses them

access guesses free self-serve (5 of 7 wrong answers)

Free-sounding copy gets read as free credentials. Free describes the tool, not the signup.

auth guesses Bearer (7 of 10 wrong answers)

A key pasted into a Bearer header and an OAuth token look identical in a curl example.

High confidence means well evidenced, not correct

20 of 36 wrong answers scored 0.70 or more. Confidence drops for missing evidence, not for evidence read the wrong way.

The loops trade blanks for guesses

Blank answers fell from 21 to 12. Confidently wrong answers went from 34 to 36.

A real quote is not proofSalesforce, scored 1.0 and wrong

The scaffold version only checked that a snippet appeared on the page. It called Salesforce access free self-serve from this:

“You can use OAuth authorization to approve a client application’s access to your org’s protected resources.”
https://help.salesforce.com/s/articleView?id=sf.remoteaccess_authenticate.htm&language=en_US&ty

That sentence is about OAuth approval, not about getting credentials. The support check exists because of this row.

Every gate passed, answer still wrongSherlock, four products, one name

Searching "Sherlock" returned four different products. Five of six pages were the wrong one.

Domain checkSubstring match let sherlocks.ai through as first party.
ExtractorFilled access and MCP from another company's docs.
Support checkPassed both. The quotes were real, the product was not.
Loop ECaught all four afterwards and blanked them.

Fix: auth and pricing searches are pinned to the known domain, the subject check runs before extraction, and official MCP needs evidence from the app's own domain. The same trap caught Fathom and Otter AI.

A real browser argued back2 of 9 rows checked

Flagged, not overwritten: browser prose is a second opinion, not a quoted source.

AppWe recordedLive page said
Amazon Selling Partnerfree self-serveNo, a developer cannot get API credentials immediately for free, as access requires a 'Professional selling account' which costs '$39.99 a month plus selling fees.' Furthermore, the signup is not...
QuickBookspaid planYes, a developer can sign up and get API credentials immediately without payment or human approval by creating a free account. The portal provides a self-service signup where you can 'Create an...
Coverage by fieldfirst run vs verified
FieldFirst runVerified
auth7399 +26
access8784 -3
api_type6295 +33
api_breadth100100
api_docs_url8374 -9
mcp9797
prod_requires_review2225 +3
stage5383 +30
median confidence0.690.74

390 evidence items from the app's own domain, 112 from confirmed third parties, 59 of 507 marked weak. Loop B changed nothing because it re-checks the same cache it read from, so it cannot detect a stale page.

Outreach queue

27 apps you cannot just sign up for. 22 publish no application link, so step one is finding a person to ask.

admin approval13

DealCloud
LiveAgentapply →
Gladly
Slack
Discord
Google Adsapply →
Meta Ads
LinkedIn Ads
Pinterest
Threads (Meta)
Shopify
ClickUp
Grain

paid plan9

Zoho CRM
Zendesk
Help Scoutapply →
Squarespace
Ahrefs
Smartsheet
QuickBooks
Otter AI

partner or contact-sales5

Pylon
Brex
Ramp
PitchBookapply →
Fathom

Email templates

Proof

Everything on this page comes from the repo and reruns with one command per step.

Repo: github.com/D-Dynamico/Scout

pip install -e .
cp .env.example .env   # COMPOSIO_API_KEY, GROQ_API_KEY
scout research --all   # writes data/raw, freezes data/pass1
scout verify --all     # loops, writes data/verified
scout score            # accuracy vs the human sample
scout analyze          # crosstabs
scout build-page       # this file

Limits

  • Pinned search. Page sets are frozen in data/urls/, so results are only as fresh as the day they were pinned.
  • Look-alike names. Apps whose domain lacks their name (Fathom, Otter AI, Sherlock) pulled pages from other companies.
  • 80 of 100 rows unchecked by a human. Access, the field that matters most, scores lowest.
  • No freshness check. Two renames (Coda, fanbasis) were caught by a person, not the pipeline.

Raw data

Built from the JSON embedded in this page, so it works offline. Agents can read the same data from the script tags.