Model Context Protocol
The whole launch, from inside your agent.
Read tools let an assistant answer “what should I use for this?” from a real index. Write tools let it do the thing most directories still make you do by hand: submit the product, verify the domain, watch the queue and collect the badge.
Endpoint
https://toolfound.com/api/mcpRead tools are anonymous. Write tools use the email-verification loop described below.
Point a client at it
{
"mcpServers": {
"toolfound": {
"type": "http",
"url": "https://toolfound.com/api/mcp"
}
}
}# Any client that speaks MCP over streamable HTTP
# can connect with the endpoint alone:
https://toolfound.com/api/mcp
# For clients that only support stdio, bridge it:
npx -y mcp-remote https://toolfound.com/api/mcpcurl -sS https://toolfound.com/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "toolfound_search_tools",
"arguments": { "query": "invoicing", "limit": 5 }
}
}'Where the config file lives
- Claude Code
- claude mcp add --transport http toolfound https://toolfound.com/api/mcp
- Cursor
- ~/.cursor/mcp.json
- VS Code
- .vscode/mcp.json in the workspace
- Windsurf
- ~/.codeium/windsurf/mcp_config.json
- Zed
- settings.json → context_servers
Twelve tools, two tiers
Read tier
6 toolsAnonymous, rate-limited, safe to cache.
toolfound_search_tools(query, limit?)- Full-text search across names, taglines and tags.
toolfound_get_product(slug)- One listing with pricing, categories, votes and launch date.
toolfound_get_alternatives(slug, limit?)- Other tools in the same primary section.
toolfound_get_trending(period: day|week|month)- The vote leaderboard for a period.
toolfound_list_categories(—)- Every section with its listing count.
toolfound_get_launch_calendar(days_ahead?)- Which dates are queued and how full they are.
Write tier
6 toolsEmail-verified. Nothing is published without a domain check.
toolfound_submit_product(url, email, name?, tagline?, description?)- Creates the submission and returns queue position, launch date, verification instructions and the free-slot count in one payload.
toolfound_verify_submission(token)- Runs the ownership check on demand: email token, meta tag or DNS TXT record.
toolfound_get_launch_status(submission_id | url)- Current status, queue position, launch date and listing URL.
toolfound_claim_listing(slug, email)- Starts a claim on a listing compiled from public information.
toolfound_get_badge(slug, variant)- Returns the embed snippet for an earned badge.
toolfound_get_fast_track_payment_link(submission_id)- Returns a hosted checkout URL for a human to open. The agent never pays for anything.
What we assume
Everything an agent sends is treated as hostile input. Submitted text is sanitised before it is stored, before it is rendered and before it reaches any drafting pipeline, so a description cannot smuggle instructions into a later render.
- Verification is mandatory. A tool call cannot publish a listing. Ownership of the domain has to be proven by email token, meta tag or DNS record.
- Writes are logged. Every write tool call is recorded against its session in an audit log, with the normalised URL and the acting email.
- Limits are per email and per address. Three submissions per email a day, ten per network address a day, sliding window.
- No payment through tools. Checkout is a URL handed back for a person to open.
- Duplicates collapse. URLs are normalised before comparison, so the same product cannot be launched twice by two different agents.
The read index is also published as llms.txt and as structured data on every listing page, so an assistant that cannot speak MCP can still cite the same numbers. More on that on the agents page.