II.
Page JSON
Structured · livepage:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-008
GAP-TOOLS-008: Web Search Agentic Tool json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-008",
"_kind": "Page",
"_file": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-008.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-008.md",
"sourceKind": "repo-docs",
"title": "GAP-TOOLS-008: Web Search Agentic Tool",
"displayName": "GAP-TOOLS-008: Web Search Agentic Tool",
"slug": "docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-008",
"articlePath": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-008.md",
"article": "\n# GAP-TOOLS-008: Web Search Agentic Tool\n\n| Field | Value |\n|-------|-------|\n| Category | tools-capabilities |\n| Priority | Medium |\n| Effort | M |\n| Status | Missing |\n\n## Description\nAdd a `web_search` agentic tool to babysitter's Pi session tool set, equivalent to\nCC's WebSearchTool. Enables orchestrated tasks to perform web searches directly\nwithout relying on the delegated harness having its own search capability.\n\n## Current State\nNo `web_search` tool in `agenticTools.ts`. Process definitions that need web search\nmust delegate to a harness that has its own search tool (CC has WebSearchTool, Pi\ndoes not). The `fetch` tool can retrieve known URLs but cannot discover URLs via\nsearch.\n\n## Target State\nA `web_search` agentic tool with these params (matching CC's WebSearchTool):\n\n- **`query`** (string, required): Search query, minimum 2 characters\n- **`allowed_domains`** (string[], optional): Allowlist of domains to search\n- **`blocked_domains`** (string[], optional): Blocklist of domains to exclude\n\nReturns search results with titles, URLs, and snippets.\n\nImplementation options:\n1. **API-based**: Use a search API (SerpAPI, Brave Search, Tavily, etc.) with an\n API key configured via env var (`BABYSITTER_SEARCH_API_KEY`).\n2. **MCP-routed**: If an MCP server with search capability is connected, route\n through it. Falls back to API-based if no MCP search available.\n3. **Harness-delegated**: Route search requests to a capable harness (CC, etc.)\n as a task effect. Least direct but requires no API keys.\n\nAlso add `webSearch` to `HarnessCapability` enum for capability-based routing\nwhen the tool is not available locally.\n\n## Dependencies\n- [GAP-TOOLS-025](GAP-TOOLS-025.md) -- MCP client (for MCP-routed search)\n- [GAP-HADAPT-001](../harness-adaptation/GAP-HADAPT-001.md) -- capability routing (for harness-delegated fallback)\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| Agentic tools | `packages/sdk/src/harness/agenticTools.ts` |\n| Harness capabilities | `packages/sdk/src/harness/types.ts` |\n| CC WebSearchTool | `src/tools/WebSearchTool/WebSearchTool.ts` |\n\n## Recommendation\nPhase 2. Medium priority. Web search is a fundamental capability for research-oriented\nprocesses. Start with API-based implementation (configurable provider), then add\nMCP-routed and harness-delegated fallbacks.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-harness-features-backlog",
"to": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-008",
"kind": "contains_page"
}
]
}