II.
Page JSON
Structured · livepage:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-037
GAP-TOOLS-037: Fetch Content Processing json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-037",
"_kind": "Page",
"_file": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-037.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-037.md",
"sourceKind": "repo-docs",
"title": "GAP-TOOLS-037: Fetch Content Processing",
"displayName": "GAP-TOOLS-037: Fetch Content Processing",
"slug": "docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-037",
"articlePath": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-037.md",
"article": "\n# GAP-TOOLS-037: Fetch Content Processing\n\n| Field | Value |\n|-------|-------|\n| Category | tools-capabilities |\n| Priority | Low |\n| Effort | M |\n| Status | Missing |\n\n## Description\nCC's WebFetchTool requires a `prompt` parameter that processes and summarizes fetched\nweb content before returning it. Babysitter's `fetch` tool returns raw HTTP responses.\nDifferent content processing models.\n\n## Current State\nBabysitter's `fetch` tool params: `url`, `timeout`, `raw`. Makes an HTTP GET request\nand returns `{ status, statusText, body }`. Body is truncated at 50KB unless `raw: true`.\nNo content processing, summarization, or extraction.\n\nCC's WebFetchTool params: `url` (required), `prompt` (required -- describes how to\nprocess the fetched content). CC fetches the URL, then applies the prompt to extract\nor summarize relevant information before returning it. This reduces token usage by\nfiltering irrelevant content.\n\n## Target State\nAdd a `prompt` parameter to the `fetch` agentic tool:\n\n- **`prompt`**: Optional string. When provided, fetched content is processed through\n an LLM call (or simpler extraction logic) using the prompt as instructions.\n Example: `prompt: \"Extract all API endpoint URLs\"` would fetch a page and return\n only the extracted URLs.\n\nWhen `prompt` is omitted, current raw-response behavior is preserved.\n\nImplementation options:\n1. **LLM-based**: Route fetched content + prompt through a lightweight model call.\n Expensive but matches CC's behavior exactly.\n2. **Extraction-based**: Use the prompt as a pattern/instruction for rule-based\n extraction (regex, CSS selectors, text filters). Cheaper but less flexible.\n3. **Hybrid**: Try extraction first, fall back to LLM for complex prompts.\n\n## Dependencies\n- None for raw param addition.\n- LLM-based processing depends on model access within agentic tool execution context.\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| Agentic tools | `packages/sdk/src/harness/agenticTools.ts` |\n| CC WebFetchTool | `src/tools/WebFetchTool/WebFetchTool.ts` |\n\n## Recommendation\nPhase 3. Low priority -- babysitter's raw fetch is often sufficient since the LLM\nprocessing the response can extract what it needs. The `prompt` param matters more\nin token-constrained scenarios.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-harness-features-backlog",
"to": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-037",
"kind": "contains_page"
}
]
}