Skip to main content
Glama

bing-search-to-markdown

Convert Bing search results into Markdown format for easy readability and sharing. Use the tool by providing the search page URL to transform results into structured Markdown text.

Instructions

Convert a Bing search results page to markdown

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the Bing search results page

Implementation Reference

  • Handler logic for executing 'bing-search-to-markdown' tool (shared with similar URL-based tools): validates the input URL for safety (protocol and private IP), then delegates to Markdownify.toMarkdown for conversion.
    case tools.YouTubeToMarkdownTool.name: case tools.BingSearchResultToMarkdownTool.name: case tools.WebpageToMarkdownTool.name: if (!validatedArgs.url) { throw new Error("URL is required for this tool"); } const parsedUrl = new URL(validatedArgs.url); if (!["http:", "https:"].includes(parsedUrl.protocol)) { throw new Error("Only http: and https: schemes are allowed."); } if (is_ip_private(parsedUrl.hostname)) { throw new Error(`Fetching ${validatedArgs.url} is potentially dangerous, aborting.`); } result = await Markdownify.toMarkdown({ url: validatedArgs.url, projectRoot: validatedArgs.projectRoot, uvPath: validatedArgs.uvPath || process.env.UV_PATH, }); break;
  • Tool schema defining name, description, and input schema (url: string) for 'bing-search-to-markdown'.
    export const BingSearchResultToMarkdownTool = ToolSchema.parse({ name: "bing-search-to-markdown", description: "Convert a Bing search results page to markdown", inputSchema: { type: "object", properties: { url: { type: "string", description: "URL of the Bing search results page", }, }, required: ["url"], }, });
  • src/server.ts:33-37 (registration)
    Registers the tool as part of all tools from tools.ts in the ListToolsRequest handler.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: Object.values(tools), }; });
  • Helper function that implements the core markdown conversion: fetches URL content, saves to temporary file, executes 'markitdown' via 'uv run' to convert to markdown, saves output.
    static async toMarkdown({ filePath, url, projectRoot = path.resolve(__dirname, ".."), uvPath = "~/.local/bin/uv", }: { filePath?: string; url?: string; projectRoot?: string; uvPath?: string; }): Promise<MarkdownResult> { try { let inputPath: string; let isTemporary = false; if (url) { const response = await fetch(url); let extension = null; if (url.endsWith(".pdf")) { extension = "pdf"; } const arrayBuffer = await response.arrayBuffer(); const content = Buffer.from(arrayBuffer); inputPath = await this.saveToTempFile(content, extension); isTemporary = true; } else if (filePath) { inputPath = filePath; } else { throw new Error("Either filePath or url must be provided"); } const text = await this._markitdown(inputPath, projectRoot, uvPath); const outputPath = await this.saveToTempFile(text); if (isTemporary) { fs.unlinkSync(inputPath); } return { path: outputPath, text }; } catch (e: unknown) { if (e instanceof Error) { throw new Error(`Error processing to Markdown: ${e.message}`); } else { throw new Error("Error processing to Markdown: Unknown error occurred"); } } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zcaceres/markdownify-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server