/ideas.json
Every published idea: slug, title, vertical, buyer, problem, tags, validation verdict, lifecycle stage, and timing score.
Developers & Agents
Everything a human can read here, an agent can read structurally: JSON feeds, Markdown dossiers, RSS, and an MCP server. All static, all free, no key, no rate-limit games — and the site itself never calls a paid API.
Endpoints
All endpoints are statically generated at publish time and update with the daily pipeline.
Every published idea: slug, title, vertical, buyer, problem, tags, validation verdict, lifecycle stage, and timing score.
One full report: complete research frontmatter plus derived economics, 7-day sprint, first-contact kit, lifecycle timing, pivot map, and vertical context.
The same dossier as Markdown - report body plus derived deliverables. Ideal for agent handoffs.
Calendar handoff: one all-day event per execution milestone, with a validation-test reminder.
GitHub/Linear backlog scaffold: normalized issues, labels, milestone grouping, and copy-ready CLI scripts.
Pipeline-generated decision dossier PDF for forwarding to co-founders, angels, or accelerators.
Cross-vertical intelligence: opportunity scores, verdict mixes, pain points, whitespace signals.
The intelligence graph: typed entities (ideas, verticals, complaint clusters, trends, tools, personas, keywords, communities) and provenance-stamped edges between them (INAV-GRAPH-1).
Entity-level change ledger, newest first: what was added, updated, or removed in the graph, with field-level diffs (INAV-CHANGES-1).
Verified syndication distribution: placements, live/backlink rates, and reach by vertical (INAV-DISTRIBUTION-1).
Vintage cohort aging curves: publish-week rows with 30/60/90-day signal survival (INAV-COHORT-AGING-1).
Cryptographic snapshot manifest: SHA-256 hashes for canonical machine endpoints plus a top digest (INAV-MANIFEST-1).
Auto-curated collections with current membership.
The weekly State of the Opportunity Map brief, with trailing history.
Approved build-in-public claims (human-reviewed).
The prebuilt site-wide search index: ideas, verticals, playbooks, collections, tags, pages.
Per-vertical go-to-market playbook as Markdown.
Per-vertical RSS feed.
Site-wide RSS feed.
The agent orientation file: capabilities, URLs, conventions.
A read-only MCP server ships in the repository (mcp/ideanavigator-mcp.mjs) and
consumes the public endpoints — no API key, no cost. It exposes 18 read-only tools:
ideanavigator_search — search everything (ideas, verticals, playbooks, collections, tags)ideanavigator_list_ideas — filter by vertical, verdict, tag, query, minimum validation scoreideanavigator_get_idea — one full report + derived deliverablesideanavigator_get_backlog — normalized GitHub/Linear issue scaffold for one ideaideanavigator_list_verticals — the cross-vertical briefideanavigator_get_collections — curated collectionsideanavigator_get_weekly_brief — the weekly opportunity mapideanavigator_get_playbook — a vertical's go-to-market playbookideanavigator_get_entity — one graph entity plus its 1-hop neighbors with edge provenanceideanavigator_query_graph — filter graph entities by type, label, or verticalideanavigator_get_changes — the change ledger, filterable by date, vertical, or entity typeideanavigator_draft_brief — a graph-grounded brief skeleton for a thesisideanavigator_score_thesis — deterministic self-report scoring against the rubricideanavigator_get_provenance — evidence-independence breakdown for an ideaideanavigator_verify_snapshot — fetch and optionally compare the manifest digestideanavigator_get_distribution — verified syndication reach and backlink statusideanavigator_get_cohort_aging — vintage cohort survival curves by publish weekideanavigator_get_timing_window — lifecycle stage and market-timing window for one idea
# Claude Code
claude mcp add ideanavigator -- node /path/to/ideanavigatorai/mcp/ideanavigator-mcp.mjs
# Claude Desktop (claude_desktop_config.json)
{"mcpServers": {"ideanavigator": {"command": "node", "args": ["/path/to/mcp/ideanavigator-mcp.mjs"]}}}
No server needed beyond Node 20+. Set IDEANAVIGATOR_BASE_URL to point at a
staging copy. Source: github.com/MeyerThorsten/ideanavigatorai.
The manifest is generated after every build and hashes the bytes of the canonical JSON endpoints. Pin the top digest, or verify one endpoint directly from the file list.
curl -fsS https://ideanavigatorai.com/manifest.json -o manifest.json
curl -fsS https://ideanavigatorai.com/ideas.json -o ideas.json
EXPECTED=$(node -e "const m=require('./manifest.json'); console.log(m.files.find(f => f.path === '/ideas.json').sha256)")
printf "%s ideas.json\n" "$EXPECTED" | sha256sum -c - schemaVersion is INAV-MANIFEST-1.files[] contains path, SHA-256, and byte count for each endpoint.digest is the hash-of-hashes for the listed endpoint hashes./manifest.txt is a one-line citation form for logs and release notes.POST /api/subscribe.php — newsletter signup {email, source}POST /api/research-request.php — submit an idea for a full generated reportPOST /api/build-claim.php — claim an idea you're buildingPOST /api/webhook-subscribe.php — register a signed outbound webhook for matching /changes.json entriesAll four store to moderated queues; nothing user-submitted publishes without review.
Register a Slack relay URL with a monitor selection. The Mac mini dispatcher sends
X-INAV-Signature: sha256=<hmac> over the stable JSON body.
curl -X POST https://ideanavigatorai.com/api/webhook-subscribe.php \
-H 'content-type: application/json' \
-d '{"targetUrl":"https://hooks.example.com/slack-relay","secret":"replace-with-32-random-chars","selection":{"verticals":["software-ai"],"entityTypes":["idea"],"entityIds":[]}}'
Relay formatter:
text = "IdeaNavigator changes: " + payload.count + " new match(es)\n" +
payload.changes.map(change => "- " + change.summary + " (" + change.observedAt + ")").join("\n") Point the target at your own small Notion relay. Verify the signature, then create one database row per change with observed date, entity id, vertical, and summary.
expected = "sha256=" + hmac_sha256(secret, raw_body)
assert timing_safe_equal(headers["x-inav-signature"], expected)
for change in payload.changes:
notion.pages.create({
"Observed": change.observedAt,
"Entity": change.entityId,
"Vertical": change.vertical or "",
"Summary": change.summary
})