* Secondary-model prompt builder for `web_fetch` (W13).
*/
export const WEB_FETCH_TOOL_NAME = "web_fetch";
export const WEB_FETCH_DESCRIPTION = `- Fetches content from a specified URL and can process it using a secondary AI model
- Takes a URL and a prompt as input
- Fetches the URL content, converts HTML to markdown
- If a model client is available, applies the prompt to the fetched content using a secondary model call
- Without a model client, returns the fetched markdown content directly
- Use this tool when you need to retrieve and analyze web content
Usage notes:
- IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions.
- The URL must be a fully-formed valid URL
- HTTP URLs will be automatically upgraded to HTTPS
- The prompt should describe what information you want to extract from the page
- This tool is read-only and does not modify any files
- Fetched content may be truncated and model responses may be summarized if the page is very large
- Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL
- When a URL redirects to a different host, the tool will inform you and provide the redirect URL in a special format. You should then make a new web_fetch request with the redirect URL to fetch the content.
- For GitHub URLs, prefer using the gh CLI via Bash instead (e.g., gh pr view, gh issue view, gh api).`;
export function makeSecondaryModelPrompt(
markdownContent: string,
prompt: string,
isPreapprovedDomain: boolean,
): string {
const guidelines = isPreapprovedDomain
? `Provide a concise response based on the content above. Include relevant details, code examples, and documentation excerpts as needed.`
: `Provide a concise response based only on the content above. In your response:
- Enforce a strict 125-character maximum for quotes from any source document. Open Source Software is ok as long as we respect the license.
- Use quotation marks for exact language from articles; any language outside of the quotation should never be word-for-word the same.
- You are not a lawyer and never comment on the legality of your own prompts and responses.
- Never produce or reproduce exact song lyrics.`;
return `\nWeb page content:\n---\n${markdownContent}\n---\n\n${prompt}\n\n${guidelines}\n`;
}