Agent-driven account research
100 researched account briefs for $8.98, inside a free tier
$ claude mcp add --transport http \ exa https://mcp.exa.ai/mcp $ claude mcp add --transport http \ apollo https://mcp.apollo.io/mcp # then, in plain language: # "research these 20 accounts and write a # brief into Attio for each one"
Account research is the work nobody has time for and everybody knows matters. Reading a company's site, finding what changed recently, checking who runs the relevant function and writing three sentences a rep can actually open with takes about twenty minutes a company. Nobody does it for a list of two hundred.
This stack does it for about nine cents an account, and it is the only stack in this library that needs no engineering at all. Two MCP servers connected to an AI client, a CRM with a write API, and a prompt. The setup takes about fifteen minutes.
None of these capabilities are new. What changed is that connecting them stopped requiring an integration project. A year ago this stack was a two-week build. Now it is two OAuth flows and a paragraph of instructions, which is why it belongs in a directory rather than in a backlog.
Three steps, no code
Everything below happens inside one AI client session. The model picks the tools, you review the output.
Exa MCP · read the open web
Roughly three searches and five page fetches per account, returning clean markdown rather than links. This is what finds the funding round, the new VP, the product launch and the conference talk.
Apollo MCP · firmographics, jobs and news
Organization enrichment, job postings and news search, one credit each. Structured facts the model should not be inferring from prose: headcount, stack, what they are hiring for, what got announced.
Attio MCP · write the brief onto the record
Because Attio lets you define your own objects, the brief lands in fields you designed rather than a notes blob. The MCP surface reflects your schema, so the model writes to "Trigger event" because that field exists.
They fail in opposite directions. Exa is excellent at "what happened recently" and will happily invent structure that is not there. Apollo is excellent at structured facts and knows nothing about last Tuesday. Asking the model to use Apollo for anything countable and Exa for anything narrative removes most of the hallucination surface.
What 100 accounts cost
Exa's half of the run fits inside its free monthly credit, which is the part most people do not believe until they check.
$0.0898 an account. Exa hands out $10 of free credits every month, which covers the searches and page reads for roughly 320 accounts before Exa charges anything, and the Apollo credits are the only other line. Against twenty minutes of a human's time per account, the comparison is not close enough to need a spreadsheet.
Your AI client's own token usage, which is the largest line in this stack and the one nobody models. A thorough brief runs a lot of context through the model. The API costs above are rounding errors next to it, so budget for the assistant, not for the data.
Four failure modes, and what to do about them
Three of these four cost money before anybody notices, and the fourth costs credibility. They are listed in the order teams hit them rather than in order of severity, because the retry loop usually arrives in week one and the question of whether this belongs in production arrives only once it is working.
The agent retries and empties a balance
The single most common way to lose money on MCP. A failed enrichment retried two hundred times overnight is not a hypothetical, it is the first week of most teams' experience. Cap the workspace credit budget before you connect anything, and use a separate key from your production pipeline.
Confident prose with nothing behind it
Exa returns page content and the model turns it into a narrative. Left alone it will write a plausible brief about a funding round that did not happen. Require a source URL for every factual claim in the brief, as a field, and spot-check ten accounts out of every hundred.
Model training, quietly enabled
Apollo prohibits model training on data pulled through its MCP and asks you to confirm training is off in your client before connecting. This is an obligation on you with no technical enforcement behind it. Check the setting, and check it again after anyone changes clients.
Treating it as production infrastructure
An MCP call happens because somebody asked. That is the wrong shape for a nightly job over 40,000 accounts with retries and a warehouse write. This stack is for the top 200 accounts a human will actually read. Anything larger belongs on the REST APIs.
The instruction that makes it work
Most of the quality here comes from telling the model which tool to trust for which kind of claim.
For each domain in the list: 1. Use apollo to get headcount, industry, tech stack, open roles and recent news. Anything countable comes from apollo, never from a web page. 2. Use exa to find what changed in the last 90 days. Every claim needs a source URL. If you cannot find a source, write "no recent signal found". 3. Write into attio: - trigger_event (one sentence, with source_url) - why_now (two sentences, our product) - opener (under 40 words, no adjectives) Do not enrich individual people. Do not send anything. Stop after 20 accounts and show me the first three.
The last two lines matter more than the rest. Without an explicit stop the model will work the whole list before you have seen whether the first three are any good, and without the enrichment ban it will start spending credits on people nobody asked for.
Build it with an agent
This stack ships as a skill file: the API surface of every tool in the chain, the build order, the limits that break it and how to check it worked. Point an agent at it and it has what it needs without reading 3 sets of vendor docs first.
--- name: agent-account-research description: Connect the Exa and Apollo MCP servers to an AI client and have it write a sourced account brief onto the CRM record in... --- # Agent-driven account research ## What you are building ## Prerequisites → 5 rows ## The tools, and how to call them → Exa, Apollo, Attio ## Build it → 5 steps ## Gotchas → 5 ## How to verify it works → 5 checks ## What this costs to run
mkdir -p .claude/skills/agent-account-research curl -o .claude/skills/agent-account-research/SKILL.md https://frontal.so/gtm-apis/skills/agent-research.md
For Codex, Cursor, or anything else that reads a file or fetches a URL, hand it https://frontal.so/gtm-apis/skills/agent-research.md directly. It is plain markdown with YAML frontmatter and no tool-specific syntax, so nothing in it depends on which agent is reading it.
Fifteen minutes to set up. A week to trust.
The setup is genuinely easy. Getting output a rep will use, with sources attached and a credit ceiling in front of it, is the part worth doing properly. Frontal builds the guardrails and the review loop.
Worked with 300+ companies. A senior operator runs your account.
The other three stacks on this site are costed the same way, so the numbers are comparable: waterfall email enrichment at $0.0364 a unit, hiring signal to outbound at $0.13 a unit and inbound speed to lead at $0.0587 a lead. Every provider in them is in the directory.
Questions we get
What to check before you trust the output.
How do I stop the agent inventing facts?
Split the work by tool and require sources. Anything countable comes from Apollo, anything narrative comes from Exa, and every factual claim in the brief carries a source URL as its own field. Then spot-check ten accounts in every hundred. Without the source field the model will write a plausible brief about a funding round that did not happen.
What does this actually cost once you include the model?
The API calls are $0.09 an account and your AI client's token usage is the larger line by a distance. A thorough brief runs a lot of context. Budget for the assistant rather than for the data, because the $8.98 per hundred accounts on this page is a rounding error against it.
Can this run on a schedule?
Not well. An MCP call happens because somebody asked, which is the wrong shape for a nightly job with retries and a warehouse write. Use this for the top 200 accounts a human will actually read. If you want it scheduled, rebuild the same logic on the REST APIs, where retries and budgets are yours to control.
Does it work without Attio?
Yes. HubSpot publishes an official MCP server too and includes CRM API access on its free tier. Attio's advantage here is that you define the objects, so the brief lands in a field named for the trigger event because that field exists. In HubSpot the same output usually goes into a custom property or a note.
How many accounts before this stops being worth it?
It scales fine on cost and stops scaling on review. The output is only useful if a human reads it, and nobody reads 2,000 account briefs. Somewhere around 200 to 300 accounts a cycle the bottleneck moves from the tooling to attention, which is the point to go back to structured signal and a filter.