Quest: Interactive Tool Playground
ID: q-tool-playground
Layer: Forge
Priority: 88
Status: active
Depends-on: q-forge (tool registry)
One-line summary
Make every Forge tool directly usable from the site — interactive forms, live API calls, structured result display, and links to external tool providers.
Why this matters
SciDEX has 57+ registered scientific tools, but users can only see usage stats on /forge. They can't try a tool without writing code. Making tools interactive:
- Demonstrates the platform's data capabilities to visitors
- Lets researchers explore gene/pathway data without leaving the site
- Creates a feedback loop: tools that get used more get improved faster
- Showcases the Forge layer as a genuine scientific computing surface, not just a registry
Scope
Phase 1: Playground MVP (done)
☑ /forge/playground page with 6 high-value tools
☑ Inline input forms with example values + "Run" button
☑ POST /api/forge/tools/try endpoint executing real tool calls
☑ Structured result display (table for arrays, key-value for dicts)
☑ External link to each tool's native site (PubMed, STRING, Reactome, etc.)
☑ Provenance: every playground call goes through @log_tool_call
Initial tools: Gene Info, PubMed Search, STRING PPI, Reactome Pathways, Allen Brain Expression, Enrichr GO Enrichment.
Phase 2: Expanded coverage
☐ Add remaining high-value tools: ClinVar Variants, Human Protein Atlas, GWAS Associations, Open Targets, UniProt Protein Info, ChEMBL Drug Targets
☐ Tool metadata in skills table: input_schema JSON, example_input JSON, external_url_template TEXT
☐ Auto-generate playground cards from skills table metadata (no hardcoded PLAYGROUND_TOOLS dict)
☐ Rate limiting: max 10 calls/min per tool per session
Phase 3: Rich result rendering
☐ Specialized renderers per tool type: network graph for STRING, heatmap for expression, citation cards for PubMed
☐ "Save result as artifact" button (creates artifact row with tool output)
☐ "Feed into Idea Collider" button (pre-seeds collider with the result)
☐ Result comparison: run same tool with different inputs side-by-side
Phase 4: External tool connections
☐ Tool detail pages (/forge/tool/{tool_id}) with: description, input schema, usage stats, external links, recent calls, result examples
☐ External tool provider pages with metadata: API docs URL, rate limits, authentication requirements, data license
☐ Tool chain builder: visual pipeline connecting output of one tool to input of another
Phase 5: Community contributions
☐ Tool request form: users can suggest new tools to add
☐ "Wrap your API" guide: how external tool providers can register their API with SciDEX Forge
☐ Tool quality scoring: uptime monitoring, response time percentiles, data freshness checks
> Tool requests must include a use case describing a hypothesis or analysis that would benefit from the tool. Tool quality scoring auto-rejects tools with <80% uptime or >1-minute p99 latency. Stub tools (no real output) are not registered.
Acceptance criteria (Phase 1)
☑ 6 tools accessible via /forge/playground
☑ Each tool has input form, Run button, result display, external link
☑ API endpoint returns structured JSON with duration_ms
☑ Tool calls are instrumented via @log_tool_call decorator
☑ Playground accessible from Forge nav dropdown
Files
| Path | Purpose |
|---|
| api.py (PLAYGROUND_TOOLS dict) | Tool definitions with input schemas + external URLs |
api.py /api/forge/tools/try | POST endpoint: executes tool, returns JSON |
api.py /forge/playground | Interactive playground page |