{"id":"12c222bd-d9e4-4d64-be94-1b78ca4f5e02","slug":"stackprobe","kind":"mcp","name":"stackprobe","summary":"Probe the tech stacks of any product","owner":"drippa-ai","repoUrl":"https://github.com/drippa-ai/stackprobe","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-02T10:01:39.000Z","addedAt":"2026-10-21T09:48:58.195Z","logoUrl":"https://avatars.githubusercontent.com/u/202414916?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["databases","cloud-infra"],"tags":["detection","fingerprinting","supabase","tech-stack","typescript","vercel"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T07:33:11.967Z","sample":false,"url":"https://conduits.dev/tools/stackprobe","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# stackprobe\nProbe the tech stacks of any product\n\n## HTTP API\n\nAgents and scripts can use stackprobe over HTTP. Reading is free; starting scans needs a key, which you can create yourself.\n\n**1. Get a key** (at most 3 a day per address; the key is shown once):\n\n```sh\ncurl -X POST https://stackprobe.tech/api/keys\n# {\"key\":\"sp_…\",\"prefix\":\"sp_…\",\"limits\":{\"scansPerDay\":10},\"note\":\"…\"}\n```\n\n**2. Start a scan** (10 new scans a day per key; getting back a scan from the last 24 hours is free):\n\n```sh\ncurl -X POST https://stackprobe.tech/api/scans \\\n  -H \"Authorization: Bearer sp_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"domain\": \"example.com\"}'\n# 202 while it runs: {\"scanId\":\"…\",\"status\":\"running\",\"report\":null,\"reused\":false,\"poll\":\"https://stackprobe.tech/api/scans/…\",…}\n```\n\nAdd `\"force\": true` to scan again even if a recent scan exists.\n\n**3. Poll** until `status` is `done` or `partial` (a few seconds apart; no key needed):\n\n```sh\ncurl https://stackprobe.tech/api/scans/<scanId>\n# 200 when finished: {\"status\":\"done\",\"report\":{…},…}\n```\n\n**Or read the latest report for a domain** without a key: `https://stackprobe.tech/s/example.com.json`.\n\nThe `report` field follows [`schema/report.v1.json`](schema/report.v1.json).\n\n| Status | Meaning |\n|---|---|\n| `400` | The body isn't JSON, or `domain` isn't a domain or URL |\n| `401` | Missing, unknown or revoked key |\n| `404` | No scan with that id |\n| `429` | Daily limit reached; `resetAt` and `Retry-After` say when to try again |\n\nRevoke a key with `curl -X DELETE https://stackprobe.tech/api/keys/current -H \"Authorization: Bearer sp_…\"`.\n"}