An MCP server that provides web search, content fetching, code snippet extraction, and intelligent prompt enhancement tools. Supports multiple languages including English and Arabic.
InternetSearchMCP has 6 tools with visible schemas and descriptions, but significant quality gaps limit production readiness. Tool naming is inconsistent (EnhancePromptAsync vs snake_case convention); descriptions are verbose and prescriptive rather than concise. Parameter schemas are present but lack proper type constraints (enums, ranges). Critical issue: EnhancePromptAsync violates single-responsibility principle by combining prompt classification, context management, and tool recommendation. SmartSearchAsync and XpremaCodeAsync lack output schema documentation. Error handling is minimal, no recovery guidance or actionable error messages. The server conflates agent orchestration (prompt enhancement) with tool provision, which is an architectural anti-pattern.
ALWAYS call this tool FIRST with the user's raw prompt, before answering or calling any other tool. It rewrites the prompt into a structured, context-enriched version and recommends which tool to use next. Adopt the returned ENHANCED PROMPT as the working prompt. Works for any language.
BROWSE STEP 2: Scrapes clean, readable paragraph data lines from any URL. If this page context doesn't fully resolve the prompt, you must loop back, choose another link from the list, and execute this tool again.
Generates a random number between the specified minimum and maximum values.
BROWSE STEP 1: Searches the web universally across any language. Returns absolute candidate hyperlinks. You must choose a URL from this list and pass it immediately to FetchPageContentAsync. For a one-shot consolidated answer, prefer SmartSearchAsync instead.
SMART SEARCH: One-shot web search. Searches the web, fetches the top result pages in parallel, ranks their content against the query, and returns a single consolidated answer block with per-source attribution. Prefer this over the SearchInternetAsync/FetchPageContentAsync loop. Works in any language. NOTE: you should have called enhance_prompt on the user's raw message BEFORE this tool.
XPREMA CODE: Searches the web for a solution to a coding problem or error and returns ONLY code snippets (formatting preserved), each with a single source-URL line. Use for compiler errors, exceptions, API usage questions, and how-to-implement problems. No prose is returned. NOTE: you should have called enhance_prompt on the user's raw message BEFORE this tool.
EnhancePromptAsync violates single-responsibility principle. It combines prompt classification, context tracking, tool recommendation, and multi-language support in one tool. This should be agent-side logic, not a tool. Tools should perform domain actions, not orchestrate other tools.
Tool naming inconsistent with MCP conventions. Names use PascalCase with 'Async' suffix (EnhancePromptAsync, SearchInternetAsync) instead of snake_case verb_noun pattern (enhance_prompt, search_internet). LLMs expect verb_noun naming to infer intent.
Output schemas not documented for SmartSearchAsync and XpremaCodeAsync. LLMs cannot plan downstream calls or extract structured data without knowing return field names and types. Descriptions mention 'consolidated answer' and 'code snippets' but no schema is visible.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
No error handling or recovery guidance. Tools return raw errors without actionable next steps. E.g., if SearchInternetAsync fails, the LLM has no guidance on retry strategy, fallback tools, or user-fixable issues.
Parameter constraints missing. GetRandomNumber accepts min/max as integers with no range validation (e.g., min < max, reasonable bounds). SearchInternetAsync query parameter has no length limit or format guidance. SmartSearchAsync maxSources defaults to 3 but no enum constraint prevents invalid values.