Static source inference · medium confidence · detected: Logging
Deprecated protocol patterns detected
Summary
Agent Scrivener presents 5 tools with mixed quality. While all tools have schemas and basic descriptions, several critical issues limit production readiness: (1) Parameter descriptions are sparse or generic across most tools. (2) Output schemas are not documented in the source code provided. (3) Error handling guidance is absent. (4) Tool names and descriptions don't consistently follow LLM-optimized patterns. The tools span two functional areas (citation/DOI validation and web research) but lack depth in parameter constraint documentation and recovery guidance. Average tool score: 42/100. This is a D-grade server with noticeable gaps.
Tools (5)
extract_contentread onlysource verified60/100
Extract main content from a web page.
format_citationread onlysource verified65/100
Format a citation in the specified style.
get_page_metadataread onlysource verified60/100
Extract metadata from a web page (title, description, author, etc.).
search_webread onlysource verified65/100
Search the web for information using DuckDuckGo.
validate_doiread onlysource verified62/100
Validate a DOI and retrieve metadata from CrossRef.
Output schemas not documented. Tool definitions show input schemas but provide no documentation of what fields/structure the tools return. LLMs cannot plan downstream operations or extract needed data without knowing return types.
Error handling guidance absent. No descriptions of what errors tools return or how agents should recover. E.g., 'Invalid DOI' vs 'CrossRef API timeout' require different retry strategies, but no guidance is provided.
Parameter descriptions lack detail on expected formats and constraints. E.g., 'style' enum is clear, but 'query' in search_web has minimal guidance. 'pages' in format_citation states 'Page range (e.g., "123-145")' but no constraint on format validation. Parameters should state validation rules inline: '(format: START-END, e.g., 123-145)'.
Recommendations
Add output schema documentation for all 5 tools. For format_citation, document: 'Returns: {formatted_citation (string), citation_style (string), warnings (array of strings)}'. For search_web: 'Returns: {results (array of {title, url, snippet}), total_count (integer), query (string)}'.
Add error handling guidance to descriptions. E.g., validate_doi: 'Returns error if DOI is malformed or CrossRef is unreachable. If unreachable, suggest retry with exponential backoff. If malformed, ask user to verify the DOI format.'
Expand parameter descriptions with format constraints and ranges. E.g., pages: 'Page range in format START-END (e.g., 123-145). Both must be positive integers, START <= END. Required for journal articles.' max_length in extract_content: 'Maximum content length in characters (1 - 100000). Larger limits may timeout. Default: None (no limit).'
Clarify tool purpose and usage context in descriptions. E.g., search_web: 'Use this to find web sources for citations or current information. Returns summaries; for full content, call extract_content. Not suitable for finding internal/private documents.' extract_content: 'Extract main text from a web page; call this AFTER search_web to read full articles. Ignores navigation menus, sidebars. Returns plain text.'
Document idempotency and safe-retry behavior. E.g., format_citation: 'Idempotent, same inputs always produce the same formatted citation. Safe to retry on network errors.' search_web: 'Idempotent in terms of result set but may vary over time as web crawls update. Safe to retry.'
Spec posture evidence
Inferred effective spec: <=2025-11-25.
Relies on Logging (deprecated) - log to stderr or use OpenTelemetry
Tool descriptions are generic and do not explain WHEN to use each tool vs. alternatives. E.g., 'Search the web for information using DuckDuckGo' does not distinguish search_web from a hypothetical web scraper or knowledge base lookup. Descriptions should include: What does it do? When should I call it instead of similar tools? What does it return?
No idempotency guarantees documented. Tools like 'format_citation' appear read-only and safe to retry, but this is not explicitly stated. Agents need to know which tools are safe to call repeatedly (idempotent) vs. which have side effects.
Parameter naming inconsistency. 'num_results' vs 'max_length' uses different conventions (num_ prefix vs max_ prefix). Consistent naming (e.g., 'max_results', 'max_length') improves clarity and reduces LLM confusion when multiple similar parameters exist.
search_webextract_content
Standardize parameter naming conventions across all tools. Use max_* for upper bounds (max_results, max_length) and consistently name ID/reference parameters (url, doi, query).
Add constraints to enums and defaults. E.g., search_engine parameter currently only lists 'duckduckgo' but description allows it, document: 'enum: [duckduckgo]. Other engines not yet supported.'
Document rate limits and timeout behavior. E.g., search_web: 'Rate limited to 10 requests/minute. Timeout: 30 seconds. Returns error if limit exceeded; suggest backoff.' extract_content: 'Timeout: 15 seconds. Returns partial content if page is slow.'
Add validation error examples in descriptions. E.g., validate_doi: 'Valid DOI format: 10.xxxx/yyyy. Returns error with example of valid format if input is invalid.'
Consider adding batch variants. E.g., format_citations (plural) accepting an array of citation objects, returning array of formatted citations in one call, to reduce token waste and latency.