foundry-research
AI-powered research skill with five workflows - chat (single-model conversation), consensus (multi-model synthesis), thinkdeep (systematic investigation), ideate (creative brainstorming), and deep (multi-phase web research). Supports persistent threads and research sessions.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Research Skill
Overview
- Purpose: AI-powered research with multiple reasoning strategies
- Scope: Five workflows, persistent thread and session management
-
Entry:
Skill(foundry:foundry-research)or user invocation
Flow
[x?]=decision(GATE)=user approval→=sequence
- **Entry** → [route?]
- [explicit?] → Dispatch → Execute → Persist thread → Response + thread_id
- [thread-id?] → Resume → Dispatch → Execute → Persist thread → Response + thread_id
- [research-id?] → SessionMgmt
- [sessions?] → ListSessions
- [no args?] → (GATE: choose workflow) → AutoRoute → Dispatch → Execute → Persist thread → Response + thread_id
- [deep?] → Start → Poll → Report (background execution)
CRITICAL for deep workflow: Read references/deep-research-workflow.md before execution. Contains required polling strategy and MCP parameters.
Deep Research Polling Protocol (MANDATORY)
BEFORE EVERY status check, you MUST:
- Generate user-facing text about current progress
- Do NOT call deep-research-status immediately after another MCP tool
- Track your check count (max 5)
| Check # | What to Say |
|---|---|
| 1 | "Research underway. Currently in {phase} phase..." |
| 2-3 | "Progress: {queries_completed}/{total} queries done..." |
| 4 | "Still working ({elapsed} minutes)..." |
| 5 | Stop polling, use AskUserQuestion with options |
Stall Detection: Only after elapsed_ms > 300000 AND no progress change.
NO INDEPENDENT RESEARCH: While deep research is running, do NOT use WebSearch, WebFetch, or other research tools. The deep research workflow handles all web gathering - doing your own searches is redundant and wastes resources.
MCP Tooling
| Router | Actions |
|---|---|
research |
chat, consensus, thinkdeep, ideate, deep-research, deep-research-status, deep-research-report, deep-research-list, deep-research-delete, thread-list, thread-get, thread-delete, node-execute, node-record, node-status, node-findings |
MCP Contract
| Action | Required | Optional | Errors |
|---|---|---|---|
chat |
prompt |
thread_id, provider_id |
THREAD_NOT_FOUND |
consensus |
prompt |
providers, strategy |
NO_MODELS_AVAILABLE |
thinkdeep |
prompt |
thread_id, depth |
MAX_DEPTH_EXCEEDED |
ideate |
prompt |
thread_id, phase |
INVALID_PHASE |
deep-research |
query |
max_iterations, max_sub_queries, follow_links |
RESEARCH_TIMEOUT |
deep-research-status |
research_id |
- | RESEARCH_NOT_FOUND |
deep-research-report |
research_id |
- | RESEARCH_NOT_FOUND |
deep-research-list |
- | limit, completed_only |
- |
deep-research-delete |
research_id |
- | RESEARCH_NOT_FOUND |
thread-* |
thread_id |
limit |
THREAD_NOT_FOUND |
node-status |
spec_id, research_node_id |
- | NODE_NOT_FOUND |
node-execute |
spec_id, research_node_id |
prompt |
NODE_NOT_FOUND, INVALID_TYPE |
node-record |
spec_id, research_node_id, result |
summary, key_insights, recommendations, confidence |
NODE_NOT_FOUND |
node-findings |
spec_id, research_node_id |
- | NODE_NOT_FOUND, NO_FINDINGS |
Workflow Selection
| Signal | Workflow |
|---|---|
| Follow-up, iteration | chat |
| Multiple perspectives | consensus |
| Complex problem | thinkdeep |
| Brainstorming | ideate |
| Comprehensive research, multiple sources | deep |
User Gates
- No args: workflow selection
- Ambiguous: clarify before auto-route
- Consensus: strategy selection
- Ideate: phase transition
- Deep: progress updates during background execution
Output Formats
| Workflow | Response |
|---|---|
chat |
{response, thread_id, model} |
consensus |
{responses[], synthesis, strategy} |
thinkdeep |
{findings[], confidence, thread_id} |
ideate |
{ideas[], phase, selected[]} |
deep |
{research_id, status, report{summary, findings[], sources[]}} |
References
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!