Established SaaS uses OAuth. AI and data tools hand out keys.
An AI or scraping connector is a pasted key. A CRM connector needs an OAuth app registered with every vendor.
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.
55 of 100 are buildable today. 26 need a sandbox, an app review or a sales call first. 17 we could not settle.
An AI or scraping connector is a pasted key. A CRM connector needs an OAuth app registered with every vendor.
Ads platforms want an app review queue. Fintech wants a partnership conversation. Different owners, different timelines.
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.
No paperwork, no outreach, just engineering time. Starts with Front, Twilio, WhatsApp Business.
In the hand-checked sample, 4 of 6 wrong MCP answers invented an official server. The real number is lower.
Unsettled means we could not prove access from the pages we read. It says nothing about whether their API is open.
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
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.
Salesforce, HubSpot, Pipedrive, Intercom and 25 more
Zoho CRM, Zendesk, Freshdesk, Help Scout and 28 more
Attio, Twenty, Podio, Close and 22 more
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.
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 |
|---|
The agent does the reading. A person decides what the words mean.
About 15 minutes per app, a full day for 100
About 45 seconds per app, six at a time
The agent cannot tell when it is confidently wrong
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.
| Field | Overall | Hard half | Random half | Checked |
|---|---|---|---|---|
| access | 32% | 20% | 44% | 19 |
| auth | 45%+5 | 40%+10 | 50% | 20 |
| api_type | 85%+25 | 70%+20 | 100%+30 | 20 |
| prod_requires_review | 20% | 0% | 50% | 5 |
| mcp | 65%+6 | 71%+14 | 60% | 17 |
| api_breadth | 42% | 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.
| Loop | Checks | Result |
|---|---|---|
| A | Second extraction, different prompt | 93 rows disagreed |
| B | Snippet still on the cited page | 0 changes |
| C | Real browser reads signup page | 9 read, 2 contradicted |
| D | Human sample | 48 misses |
| E | Page is about the right app | 19 pages dropped |
| Support | Snippet supports the exact claim | 24 rows overruled |
| Instructive miss | Human | Agent |
|---|---|---|
| Paygent Connect access Read free-sounding copy as free credentials. | no public API | free self-serve |
| Squarespace auth Read the header in a curl example, not how the key is obtained. | API key | Bearer |
| Meta Ads mcp Claimed an official MCP server that does not exist. | none | official |
| App | Half | Field | Human | Agent | Conf. | Caught by |
|---|---|---|---|---|---|---|
| Meta Ads | random | access | free self-serve | admin approval | 0.94 | loop A |
| Squarespace | random | auth | API key | Bearer | 0.94 | human only |
| Meta Ads | random | mcp | none | official | 0.94 | human only |
| Meta Ads | random | api_breadth | large (>150 endpoints) | unknown | 0.94 | loop A |
| Squarespace | random | api_breadth | medium (30 to 150) | unknown | 0.94 | loop A |
| Paygent Connect | hard | access | no public API | free self-serve | 0.84 | human only |
| Paygent Connect | hard | auth | Basic | Bearer | 0.84 | human only |
| Paygent Connect | hard | api_type | none | REST | 0.84 | human only |
| Paygent Connect | hard | mcp | none | community | 0.84 | loop A |
| DealCloud | hard | api_breadth | medium (30 to 150) | unknown | 0.84 | loop A |
| Brex | random | access | admin approval | partner or contact-sales | 0.84 | loop A |
| Brex | random | mcp | none | official | 0.84 | human only |
| Brex | random | api_breadth | medium (30 to 150) | unknown | 0.84 | loop A |
| iPayX | hard | access | free trial | free self-serve | 0.81 | human only |
| iPayX | hard | auth | API key | Bearer | 0.81 | human only |
| iPayX | hard | api_breadth | small (<30 endpoints) | unknown | 0.81 | loop A |
| Mermaid CLI | hard | auth | none | API key | 0.74 | loop A |
| NotebookLM | hard | auth | OAuth2 | Bearer | 0.71 | loop A |
| NotebookLM | hard | mcp | none | official | 0.71 | human only |
| NotebookLM | hard | api_breadth | small (<30 endpoints) | unknown | 0.71 | loop A |
| Plain | random | access | free trial | free self-serve | 0.69 | loop A |
| Plain | random | auth | API key | Bearer | 0.69 | loop A |
| MrScraper | random | auth | API key | Bearer | 0.69 | loop A |
| higgsfield | random | auth | custom | API key | 0.69 | human only |
| Commas (formerly fanbasis) | hard | access | admin approval | free self-serve | 0.66 | loop A |
| Commas (formerly fanbasis) | hard | api_breadth | medium (30 to 150) | unknown | 0.66 | loop A |
| Zoho Cliq | random | mcp | none | official | 0.66 | human only |
| Waterfall.io | hard | access | partner or contact-sales | free self-serve | 0.65 | loop A |
| Waterfall.io | hard | api_breadth | small (<30 endpoints) | unknown | 0.65 | loop A |
| Sentry | random | auth | Bearer | OAuth2 | 0.64 | loop A |
| Sentry | random | api_breadth | large (>150 endpoints) | unknown | 0.64 | support check |
| Coda (rebranded to Superhuman Docs) | random | mcp | official | community | 0.61 | loop A |
| Salesforce | random | api_breadth | large (>150 endpoints) | unknown | 0.60 | support check |
| Consensus | hard | auth | API key | Bearer | 0.59 | human only |
| Consensus | hard | api_breadth | small (<30 endpoints) | unknown | 0.59 | loop A |
| Sherlock | hard | api_type | CLI-only | none | 0.51 | loop A |
| iPayX | hard | prod_requires_review | False | blank | 0.81 | loop A |
| Mermaid CLI | hard | access | no public API | blank | 0.74 | loop A |
| Mermaid CLI | hard | prod_requires_review | False | blank | 0.74 | loop A |
| NotebookLM | hard | access | free trial | blank | 0.71 | loop A |
| MrScraper | random | access | free self-serve | blank | 0.69 | support check |
| Sentry | random | access | free self-serve | blank | 0.64 | support check |
| Salesforce | random | prod_requires_review | True | blank | 0.60 | loop A |
| Consensus | hard | access | partner or contact-sales | blank | 0.59 | support check |
| Consensus | hard | api_type | REST | blank | 0.59 | loop A |
| Sherlock | hard | access | no public API | blank | 0.51 | loop A |
| Sherlock | hard | auth | none | blank | 0.51 | loop A |
| Sherlock | hard | prod_requires_review | False | blank | 0.51 | loop A |
Free-sounding copy gets read as free credentials. Free describes the tool, not the signup.
A key pasted into a Bearer header and an OAuth token look identical in a curl example.
20 of 36 wrong answers scored 0.70 or more. Confidence drops for missing evidence, not for evidence read the wrong way.
Blank answers fell from 21 to 12. Confidently wrong answers went from 34 to 36.
The scaffold version only checked that a snippet appeared on the page. It called Salesforce access free self-serve from this:
That sentence is about OAuth approval, not about getting credentials. The support check exists because of this row.
Searching "Sherlock" returned four different products. Five of six pages were the wrong one.
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.
Flagged, not overwritten: browser prose is a second opinion, not a quoted source.
| App | We recorded | Live page said |
|---|---|---|
| Amazon Selling Partner | free self-serve | No, 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... |
| QuickBooks | paid plan | Yes, 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... |
| Field | First run | Verified |
|---|---|---|
| auth | 73 | 99 +26 |
| access | 87 | 84 -3 |
| api_type | 62 | 95 +33 |
| api_breadth | 100 | 100 |
| api_docs_url | 83 | 74 -9 |
| mcp | 97 | 97 |
| prod_requires_review | 22 | 25 +3 |
| stage | 53 | 83 +30 |
| median confidence | 0.69 | 0.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.
27 apps you cannot just sign up for. 22 publish no application link, so step one is finding a person to ask.
Subject: Requesting review for a {app} integration
Hi,
We are building a connector for {app} that will be used by our customers to sync their own {app} data. We have the integration working against a development account and we are ready to submit for review.
Scopes we need and why:
- read: to list the records a customer asks us to sync
- write: to create records on the customer's behalf
Could you point us at the current review process and rough turnaround? Happy to send a demo video or a test account.
Thanks,
Subject: Partnership enquiry, {app} API access
Hi,
We run an integration platform and our customers are asking for {app}. Your API looks like it needs a partnership rather than a signup, so I wanted to start that conversation properly rather than guess.
We would be bringing you customers who already pay for {app} and want it connected to the rest of their stack. Who is the right person to talk to, and what does the process look like?
Thanks,
Subject: API access for an existing {app} customer
Hi,
We are looking at {app} for a customer-facing integration. The docs point at contacting sales for API access, so here we are.
Two questions to save us both time:
1. Is API access tied to a particular plan, and which one?
2. Is there a sandbox we can build against before committing?
Thanks,
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
Built from the JSON embedded in this page, so it works offline. Agents can read the same data from the script tags.