MCP server providing web search, content reading, research, monitoring, evidence synthesis, GitHub integration, and job management capabilities for the Kryfto web data collection platform
Kryfto MCP server presents 38 tools with significant quality gaps across naming, descriptions, and schema completeness. While tool names generally follow verb_noun conventions (search, read_url, start_async_research), many descriptions are adequate but lack LLM-optimization and actionable guidance. Most critically, output schemas are completely undocumented, responses are not formally specified, making it impossible for LLMs to plan downstream tool chains. Parameter descriptions exist but are inconsistent in depth. Error handling guidance is absent. The server implements core tool patterns but falls short of production-grade quality baselines. Average tool description length (estimated 60-90 chars) is below the 194-char baseline for A+ tools. No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Security concerns: many tools accept optional parameters (privacy_mode, proxy_profile, session_affinity) that suggest external service integration without documented credential handling.
Add a URL to the continuous monitoring list
Answer a question with supporting evidence and citations
Check the status of an active watch
Find citations and sources for a list of claims
Calibrate and assess confidence levels for a set of claims
Detect conflicting claims and sources on a topic
List or manage continuous research jobs
Output schemas are completely undocumented. No tool returns a documented response structure. LLMs cannot plan downstream tool chains or extract required data (e.g., after calling search, what fields does each result contain? Is there a total_count for pagination?). This violates the pattern:tool and pattern:response-shaper requirements.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Create a new job in the Kryfto collection engine
Detect changes to a URL's content by comparing current and previous snapshots
Gather development intelligence on a framework or technology
Run the evaluation test suite for tool performance
Retrieve memory profile for a project
Get diff between two commits or branches on GitHub
Query issues from a GitHub repository
Fetch release information from a GitHub repository
Get status of a job in the Kryfto collection engine
List all active URL monitors
List all available extraction recipes from Kryfto
List recent request replays
Build and plan a query strategy with estimated execution steps and timing
Read and parse content from a URL, with options for privacy mode, freshness preferences, proxy profiles, and session handling
Read and parse content from multiple URLs in batch, returning results for each URL with error handling
Replay and retrieve a previous request by requestId
Conduct synchronous research on a query, combining search and content analysis
List or check status of asynchronous research jobs
Run the full evaluation suite with optional filtering by tool
Federated search across multiple search engines (DuckDuckGo, Bing, Yahoo, Google, Brave) with support for safe search, locale filtering, priority domains, and advanced query options
Perform semantic comparison of URL content changes
Set memory profile for a project with preferred sources and output format
Set custom trust rating for a domain
Get Service Level Objective dashboard metrics for a tool
Query trust ratings for source domains
Start an asynchronous research job that runs in the background
Start continuous monitoring and research on a topic
Analyze and maintain cache truth with expiry tracking
Analyze the impact of upgrading a framework from one version to another
Upload a custom extraction recipe to Kryfto
Set up a watch on a URL with webhook notifications and actions on changes
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Many tools support stateful operations (start_async_research, start_continuous_research, add_monitor, set_source_trust, create_job, upload_recipe) but lack annotations to signal safety properties to the LLM. Agents cannot determine retry safety or distinguish safe from unsafe operations.
Tool descriptions are inconsistent in depth and LLM-optimization. Many are under 100 characters (e.g., 'Calibrate and assess confidence levels for a set of claims' for confidence_calibration). Baseline A+ tools average 194 chars. Short descriptions lack WHAT, WHEN, and any prerequisites. Descriptions do not clarify when to select this tool vs. related ones (e.g., conflict_detector vs answer_with_evidence).
Error handling and recovery guidance absent. No tool description indicates what errors can occur, whether they are retryable, or how to recover. Pattern:recovery-guide and pattern:error-classification require this for agent planning.
Tool composition breaks at boundaries. Examples: (1) search returns results but output schema undefined, cannot determine what fields to extract for downstream read_url calls. (2) start_async_research returns a jobId but downstream research_jobs requires that jobId, no documentation of this dependency. (3) create_job returns job data but upload_recipe requires recipe object; no clear relationship. Violates pattern:tool-chain.
Parameter descriptions lack specificity. Examples: (1) search's 'engines' param says 'List of search engines to use (duckduckgo, bing, yahoo, google, brave)' but does not say if it's mutually exclusive with 'engine' param; (2) many tools have optional 'privacy_mode', 'proxy_profile', 'session_affinity' suggesting external service integration, but no description of what these do or credential handling; (3) 'context' param in semantic_diff and watch_and_act is vague, context for what?
Credential/secret handling not documented. Tools accept 'proxy_profile' and 'session_affinity' parameters suggesting proxy service integration (external rotation, privacy modes). No documentation of how credentials are managed, whether they appear in logs, or whether secret injection is used. Violates pattern:secret-injection.
No pagination guidance. Tools like search, github_releases, github_issues accept 'limit' but do not document what happens if more results exist, whether there is a next_cursor or offset, or maximum allowable limit. Violates pattern:paginated-result.
Ambiguous tool names with overlapping functionality. Examples: (1) research (synchronous) vs start_async_research (async), naming does not make the distinction obvious until reading descriptions. (2) list_monitors vs continuous_research_jobs vs research_jobs, three ways to list active jobs with overlapping responsibility. (3) answer_with_evidence vs cite both find sources but for different purposes; naming is not distinctive.
Stateful operations (async jobs, watches, monitors) lack confirmation/dry-run patterns. Tools like start_async_research, start_continuous_research, watch_and_act initiate background processes with no ability to preview, confirm, or undo. If an agent misconfigures a monitor on a sensitive URL, there is no tool to preview the configuration before commit. Violates pattern:confirmation-request.