free-tool
Finds the free tool a site should build to earn search traffic, such as a calculator, generator, checker or template, using OpenSEO keyword, search result and backlink data, then writes a spec your agent can build from. Use when the user asks what free tool to build, wants engineering-as-marketing ideas, or asks how to get search traffic to a new site.
- Installs
- 24
- Updated
- Nov 5, 2026
- Agents
- Claude Code
- Codex
- Cursor
- License
- MIT
Built for OpenSEO
Free tool
Find the one free tool a site should build for search traffic: a calculator, generator, checker, converter or template its buyers already search for, on a first page it can win. Then spec it so the agent can build it. It works for brand-new sites, because it reads search demand and competitors rather than the site's own rankings. Needs the OpenSEO MCP server connected (https://openseo.so).
For a full plan of competitor keywords, pages and links, use competitor-strategy instead.
Inputs
- The user's site. Call
list_projectsand take the project whosedomainmatches, orcreate_projectif there is none. Ask only if you have no website to work from. - Competitors and past research. Call
get_project_contextfor saved competitors and the research log. If an earlier entry looked at free tools, say what it concluded. - The market. Use the project's default unless the site clearly targets another country.
If OpenSEO isn't connected, say so and stop. Don't estimate search volumes yourself.
Steps
- Learn the buyer's job. Read the homepage, two or three product or pricing pages, and any free tools page. Write down what the product does, who buys it, and the numbers, documents or checks that buyer handles around it, such as fees, rates, taxes, rankings or invoices. List the free tools the site already has, and leave them out from here on.
- See which tools competitors rank with. Pick two or three competitors that sell the same thing, from the saved ones or, if none fit, from
find_serp_competitorsrun on five to ten unbranded searches a buyer makes, withexcludeDomainsset to the site andresultTypes: ["organic"]. Skip retailers, marketplaces, forums, publishers, directories and video sites. Callget_domain_keyword_suggestionsfor each. It returns a domain's top 100 keywords by traffic, without URLs or intent. Keep the keywords that name a tool (calculator, generator, template, checker, chart, test, finder, converter or simulator) and questions a tool would answer with a number, such as "how many scoops of coffee per cup". Brands that mostly rank for their own name may have none. - Add your own ideas. Call
research_keywordswith two or three seeds built from step 1, such as "<job> calculator" or "<document> template"; four seeds return about 60,000 characters. If a seed's own keyword isn't among its rows, look for a reworded variant ("calorie counter dog" for "dog calorie calculator") before calling its demand unmeasured. - Shortlist and check page one. Keep only tools the buyer would use while doing the job the product helps with; competitor lists and research rows are full of others (password generators, mortgage calculators). Pick five to eight by fit, then volume, then difficulty. Call
get_serp_resultsfor them in batches of four, because eight keywords return about 80,000 characters. Read the rows seen in two or three reads (seenIn) as page one and quotebestPositionas a site's position. For each, note whether page one shows tools or articles and which domains hold it. Mark it crowded when most of those rows are calculator collections or single-purpose sites offering the same basic tool, since a new one would be another copy. If no row is seen twice, call page one unsettled. Favor results whose tools are plain enough to beat on inputs or outputs (bulk, state by state, exportable, any food or mix). Treat a difficulty of 0 as no data, not as easy. - Pick one. Choose the tool with the best mix of fit to the product, demand, an open first page and a clear way to be better than the top result.
- Check the leader's links. Take the free tool page with the best
bestPositionamong rows seen in two or three reads (not an article or a product page). Find its URL from that site's pages or sitemap, because the result'surlis often a Google redirect. Callget_backlinks_profileon it withscope: "exact_url",mode: "one_per_domain",sortField: "domainRank",sortOrder: "desc"andfilters: { hideLost: true, hideBroken: true }.totalCountis its referring domains. Note any "best free <tool>" roundups that link to it: they're the first places to ask for a listing once the tool ships. IftotalCountis 0, page one isn't being won on links: say so, and name pages from your live checks that list similar tools, marked unconfirmed.
Output
A report in this order, with no more than a line or two of prose around each part:
- Build this: one line naming the tool, its target keyword, monthly searches and why it fits the product.
- Candidates: a table of tool, target keyword, monthly searches, difficulty, who holds page one (from the live check), crowded or open, and competitors ranking with it (from step 2, with their position).
- Spec: a page URL the site doesn't use yet and its title, the inputs, the outputs, what beats the current top result, how the tool leads into the product, the keyword variants the page should cover, and the build effort with any data source it needs. If each use calls a paid API, give the cost per use and the rate limit it needs.
- Links to get: the leading tool page's referring domains and the roundups or resource pages to ask for a listing.
- Skip these: crowded or off-fit tools, with one reason each.
Then ask whether to build the tool now in the user's codebase, or save the candidate keywords with save_keywords, tagged free-tool. Do neither without a yes.
Notes
- A run is about 11 tool calls and 300 to 700 OpenSEO credits. Tell the user before going past five competitors or 2,000 credits. If credits run out, report what you have and say what's missing.
find_serp_competitorsoften returns data for only some of the searches; use what it returns. If it returns nothing usable, callget_serp_resultsfor the same searches and count how often eachdomainappears.- Some sites block automated fetches. Read their sitemap instead, and if you still can't tell what the site sells, ask the user for one sentence.
- Search volumes, difficulty and positions are estimates for one market. Competitor positions from step 2 come from the provider's last crawl and can differ from the live check. Write
unknownfor any value a tool didn't return, and don't report one check of page one as a fixed ranking.
Finds keywords one or more competitors rank for that your site doesn't, using OpenSEO ranking data. Use when the user asks for a keyword gap, a content gap, or what competitors rank for that they don't.
Finds a site's competitors, then turns their top pages and backlinks into keywords to track, pages to create, and link themes, using OpenSEO data. Use when the user starts a new SEO project, or asks what to target based on what their competitors are doing.
Turns OpenSEO research (keyword research, clusters, Search Console queries, AI answer research, audits) into briefed, evidence-backed article drafts through the seodraft MCP. Use when the user has OpenSEO findings and asks to write, plan, or queue content from them.