StackResolve logoStackResolve

Find tools

Ranked tool candidates for a task, filtered by capability.

Give StackResolve a task or a query and it returns ranked tools that can do the job. Every candidate carries its AgentReady Score, so an agent can pick a tool it can actually adopt and operate. There are two entry points: find_tools_for_task for a plain-English task, and search_tools for a query plus hard capability filters.

#Find tools for a task

find_tools_for_task takes a plain-English task. One model call parses it into search terms plus requirements, then the registry is searched and ranked by AgentReady Score.

curl https://api.stackresolve.dev/v1/find-tools \
  -H "x-api-key: $STACKRESOLVE_API_KEY" \
  -H "content-type: application/json" \
  -d '{"task": "send transactional email from an agent"}'
taskstringrequired

A plain-English description of the job to be done.

Response
{
  "task": "send transactional email from an agent",
  "intent": { "searchTerms": "send transactional email", "requirements": {} },
  "results": [
    { "slug": "resend", "name": "Resend", "domain": "resend.com", "agentready": 98 }
  ]
}
intentobject

How the model read your task: the searchTerms it searched for and the hard requirements it inferred (any of api, mcp, self_serve, openapi, cli).

resultsarray

Ranked candidates, highest AgentReady Score first. Each is { slug, name, domain, agentready }.

#Search with requirements

search_tools filters discovery by required capabilities. It is a hard filter: a product that lacks a required capability is dropped, not just ranked lower.

Supported capability filters: api, mcp, self_serve, openapi, cli.

curl https://api.stackresolve.dev/v1/search \
  -H "content-type: application/json" \
  -d '{"query": "payments", "requirements": {"api": true, "mcp": true}}'
querystringrequired

Free-text query matched against name, slug, and company description or categories.

requirementsobject

Optional hard filters over api, mcp, self_serve, openapi, cli. On REST, nest them under requirements. On MCP, pass them as flat booleans on the tool input.

Response
[
  { "slug": "paddle", "name": "Paddle", "domain": "paddle.com", "agentready": 83 },
  { "slug": "stripe", "name": "Stripe", "domain": "stripe.com", "agentready": 74 }
]
Note
search_tools is a free, unmetered read. find_tools_for_task runs a model call and is metered as agent_discovery_check. Use search when you already know the requirements; use find-tools when you have a task in plain language.
Tip
Feed a candidate's slug into get_profile for full detail, or audit for a fresh score. Feed a domain into get_company for research.