{
  "markdown": "# stackresolve\n\nOfficial TypeScript/Node SDK for the [StackResolve](https://stackresolve.dev) API.\n\nStackResolve helps agents discover, evaluate, select, install, and use software\n(AgentReady), and compresses web research into structured company data calls\n(CompanyData). This SDK is a thin, typed wrapper over the live REST API.\n\n## One line for your coding agent\n\n```bash\nnpx stackresolve@latest install\n```\n\nThat mints an API key if you have none, registers the hosted MCP server for every coding\nagent on the machine (Claude Code, Cursor, Codex, Windsurf, VS Code), writes the\nStackResolve skill to `~/.claude/skills/stackresolve/SKILL.md`, and verifies the key\nagainst the API. It is safe to re-run, and it backs up every file it changes.\n\n```bash\nnpx stackresolve@latest install --dry-run     # show what would change\nnpx stackresolve@latest install --cursor      # one agent only\nnpx stackresolve@latest install --project --rules   # also wire up the current repo\n```\n\n## MCP server\n\nThe hosted server needs no install. The handshake and the registry reads (`search_tools`,\n`get_profile`, `compare_products`, `list_registry`) work without a key. Metered tools\n(`resolve`, `how_to`, `audit`, `research_company`, `get_company`, `get_pricing`) need a free\nkey from https://stackresolve.dev/developers, sent as the `x-api-key` header.\n\nClaude Code:\n\n```bash\nclaude mcp add --transport http stackresolve https://mcp.stackresolve.dev/mcp\n```\n\nCursor (`~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"stackresolve\": {\n      \"url\": \"https://mcp.stackresolve.dev/mcp\",\n      \"headers\": { \"x-api-key\": \"ar_...\" }\n    }\n  }\n}\n```\n\nCodex (`~/.codex/config.toml`):\n\n```toml\n[mcp_servers.stackresolve]\nurl = \"https://mcp.stackresolve.dev/mcp\"\n\n[mcp_servers.stackresolve.headers]\nx-api-key = \"ar_...\"\n```\n\nTools: `resolve`, `how_to`, `find_tools_for_task`, `search_tools`, `compare_products`,\n`get_profile`, `list_registry`, `audit`, `generate_agent_interfaces`, `get_company`,\n`get_pricing`, `research_company`, `find_competitors`, `compare_companies`, `get_usage`.\n\n## CLI\n\n```bash\nnpm i -g stackresolve\nstackresolve find \"scrape javascript-heavy sites from claude code\"\nstackresolve audit stripe.com\nstackresolve company vercel.com\nstackresolve --help\n```\n\n## Install\n\n```bash\nnpm install stackresolve      # SDK\nnpm i -g stackresolve         # CLI\n```\n\nRequires Node 18+ (uses the built-in global `fetch`). No runtime dependencies.\n\n## Quickstart\n\n```ts\nimport { StackResolve } from 'stackresolve'\n\nconst sr = new StackResolve({ apiKey: process.env.STACKRESOLVE_API_KEY })\n\n// 1. Audit a domain: AgentReady scores, facts, and issues.\nconst report = await sr.audit('stripe.com')\nconsole.log(report.scores.agentready, report.issues)\n\n// 2. Structured company data.\nconst company = await sr.getCompany('vercel.com')\nconsole.log(company.name, company.description)\n\n// 3. Task -> ranked, agent-ready tools.\nconst tools = await sr.findTools('send transactional email from a Node service')\nconsole.log(tools.results)\n\n// 4. Run an Agent Discovery check (needs an API key).\nconst discovery = await sr.runDiscovery('firecrawl')\nconsole.log(discovery)\n```\n\n## Authentication\n\nGet an API key at [stackresolve.dev](https://stackresolve.dev). Pass it to the\nconstructor, or set the `STACKRESOLVE_API_KEY` environment variable:\n\n```ts\nconst sr = new StackResolve({ apiKey: 'ar_...' })\n// or, reading STACKRESOLVE_API_KEY from the environment:\nconst sr2 = new StackResolve()\n```\n\nThe key is sent as the `x-api-key` header on every request. Public endpoints\n(audit, search, profiles, company data, ...) work without a key, subject to an\nanonymous rate limit. Gated endpoints (monitors, usage, discovery runs) need one.\n\nYou can point the client at a different host with `baseUrl` or the\n`STACKRESOLVE_BASE_URL` environment variable:\n\n```ts\nconst sr = new StackResolve({ apiKey, baseUrl: 'https://api.stackresolve.dev' })\n```\n\n## Errors\n\nAny non-2xx response throws a `StackResolveError` carrying the HTTP `status` and\nthe parsed `body`:\n\n```ts\nimport { StackResolve, StackResolveError } from 'stackresolve'\n\ntry {\n  await sr.getUsage()\n} catch (err) {\n  if (err instanceof StackResolveError) {\n    console.error(err.status, err.body)\n  }\n}\n```\n\n## Methods\n\nAgentReady:\n`audit(domain)`, `findTools(task)`, `search(query, requirements?)`,\n`compare(slugs)`, `getProfile(slug)`, `listRegistry(opts?)`, `getCategories()`,\n`getCategory(slug)`, `getDiscovery(slug)`, `runDiscovery(slug)`,\n`getScoreHistory(slug)`, `generate(domain, openapiUrl?)`, `deploy(domain, openapiUrl?)`.\n\nCompanyData:\n`getCompany(domain)`, `getPricing(domain)`, `getCompetitors(domain)`,\n`research(domain, question?)`, `compareCompanies(domains)`.\n\nMonitors + account (API key required):\n`listMonitors()`, `addMonitor(slug, opts?)`, `runMonitorNow(slug)`,\n`getUsage()`, `getMyProfile()`.\n\n## Other languages and frameworks\n\nPython SDK:\n\n```bash\npip install stackresolve\n```\n\nLangChain tools, so an agent can pick software and research companies without a\nsearch-and-scrape loop:\n\n```bash\npip install langchain-stackresolve\n```\n\n```python\nfrom langchain_stackresolve import StackResolveToolkit\ntools = StackResolveToolkit().get_tools()\n```\n\nREST directly: `https://api.stackresolve.dev`, OpenAPI at `/openapi.json`, `llms.txt` at\n`/llms.txt`.\n\n## License\n\nMIT\n",
  "bytes": 5314,
  "sha": "7ae8b83d9541836af7bc0a2956ff5976b9946822304eac36a3ceb4187f3ce358",
  "repo_slug": "autorevai/stackresolve",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_dev_stackresolve_stackresolve_11d77601/readme"
}