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.
Resources
1Install
npx skillscat add foundry-works/claude-foundry/foundry-research Install via the SkillsCat registry.
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[]}} |