{"name":"way.space API v1","description":"Versioned, unauthenticated, rate-limited read surface for the way.space catalog. Published tools only, because the credibility gate governs writes, not reads.","wording":"Scores summarize public signals; way.space asserts identity and signals, never safety.","openapi":"https://way.space/api/v1/openapi.json","endpoints":[{"path":"/api/v1/tools","method":"GET","description":"Every published tool with its cross-registry listings and score rationale; filterable and sortable.","params":{"kind":"harness | framework | tool | app | platform | blueprint (plural segments also accepted)","tag":"string","category":"coding | connectors | data-wrangling | deployment | generative-media | inference | interface | memory | monitoring | qa | research | security | training | voice (pre-2026-09 slugs also accepted forever, see /agents.md)","q":"free-text search (AND across whitespace tokens)","minGrade":"A+ | A | B | C | D (excludes unscored)","minScore":"0–100, clamped (excludes unscored)","sort":"score (default, desc) | name (asc)","limit":"1–200 (clamped)"}},{"path":"/api/v1/tools/{slug}","method":"GET","description":"A single tool as JSON, with listings + score rationale; 404 on an unknown or unpublished slug."},{"path":"/tool/{slug}.md","method":"GET","description":"The same tool as plain markdown (identity, signals, and listings). 404 plain text on an unknown slug."},{"path":"/api/v1/protocols","method":"GET","description":"The curated protocol registry (MCP, A2A, …) with tag-derived adoption counts and top graded implementers."},{"path":"/api/v1/compose","method":"GET","description":"Compose a stack for a runtime and a stated need from catalog parts (the read half of the agent-first build flow).","params":{"runtime":"required — the harness/framework slug to compose for","need":"required — free text, first 300 characters used","services":"comma-separated service names (repeatable)","lang":"preferred implementation language","model":"any | local | hosted"}},{"path":"/api/v1/blueprints","method":"POST","description":"Publish a blueprint (publish_blueprint over REST). Takes a human-minted agent token; the holder must clear the credibility gate on every call.","auth":"Authorization: Bearer wsp_… (human-minted agent token, see /auth.md)"},{"path":"/api/v1/blueprints/bundle","method":"POST","description":"The runnable zip for a spec, re-resolved exactly as a publish would be; nothing is persisted. Same token gate as publish.","auth":"Authorization: Bearer wsp_… (human-minted agent token, see /auth.md)"},{"path":"/api/v1/attestations/{registry}/{ref}","method":"GET","description":"The last-mirrored way.je publisher attestation for a registry ref (never fetched inline); 404 when nothing has been mirrored."}],"vocab":{"kinds":["harness","framework","tool","app","platform","blueprint"],"categories":["coding","connectors","data-wrangling","deployment","generative-media","inference","interface","memory","monitoring","qa","research","security","training","voice"],"grades":["A+","A","B","C","D"],"gradeMeaning":"derived GitHub credibility, not user ratings","registries":{"github":{"label":"GitHub","host":"github.com"},"huggingface":{"label":"Hugging Face","host":"huggingface.co"},"clawhub":{"label":"ClawHub","host":"clawhub.ai"},"skills_sh":{"label":"skills.sh","host":"skills.sh"},"smithery":{"label":"Smithery","host":"smithery.ai"},"mcp_registry":{"label":"MCP Registry","host":"registry.modelcontextprotocol.io"},"npm":{"label":"npm","host":"npmjs.com"},"pypi":{"label":"PyPI","host":"pypi.org"}}},"methodology":"https://way.space/methodology"}