Provide the latest cryptocurrency news for AI agents.
Single tool with clear naming and reasonable parameter schema, but significant gaps in output documentation and error handling. The tool name 'get_crypto_news' correctly uses the verb_noun pattern and clearly conveys action. Parameters are typed (string, integer) with defaults and descriptions. However, the tool returns a plain string with no structured output schema documented, making downstream chaining impossible. Error handling is minimal, the docstring mentions ValueError but the implementation catches all exceptions silently and returns empty lists, providing no recovery guidance to LLMs. The description is adequate (183 chars) but omits key details about rate limiting, pagination, and what the concatenated string format actually looks like in practice. No tool annotations (readOnlyHint, etc.) present.
Fetch the latest cryptocurrency news from CryptoPanic. Args: kind (str, optional): Type of content to fetch. Valid options are: - 'news': Fetch news articles (default). - 'media': Fetch media content like videos. num_pages (int, optional): Number of pages to fetch (each page contains multiple news items). Defaults to 1. Maximum is 10 to avoid API rate limits. Returns: str: A concatenated string of news titles, each prefixed with a dash (-). Raises: ValueError: If the API key is not set or if the API request fails.
No output schema documented. Tool returns a plain string ('- Title1\n- Title2') with no structured field definitions. LLMs cannot plan downstream calls or extract individual news items without parsing unstructured text.
Error handling is silent and uninformative. Exception catch-all returns empty list without telling LLM why (API failure? Invalid key? Rate limit?). Docstring promises ValueError but implementation catches Exception silently, breaking the recovery pattern.
No pagination support. Tool accepts num_pages but returns all results as a single concatenated string. No total count, no cursor for continuation, no indication when results are truncated. Baseline pattern requires pagination for list-like operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Parameter 'kind' lacks an enum constraint. Description states valid values are 'news' or 'media' in natural language, but LLM cannot parse this as a machine-readable constraint. Should declare as enum: ["news", "media"].
API key exposed to startup, validated at server initialization rather than lazily. If key is invalid or rotated, entire server fails to start. Should validate on first request and return actionable error.