MCP Server for IMA (Instant Messaging Application) Note API integration, enabling note creation, appending, searching, and knowledge base management
Server has 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (note_create, note_append, knowledge_search, etc.). Descriptions are present but brief (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameters have types and descriptions. Error handling includes IMAError with code/message/retryable classification. Idempotency support via idempotency_key on write operations is good. However, output schemas are not documented in the tool definitions, only inferred from code. No tool annotations (readOnlyHint/destructiveHint). Parameter validation is thorough (UTF-8 sanitization, range checks, enum-like constraints for MIME types), but constraints are enforced at runtime rather than declared in schema. Missing: pagination guidance in list/search descriptions, per-item error reporting for batch operations, and explicit output field documentation.
Upload a file to IMA (images and documents only, no videos)
Create a new knowledge base entry in IMA
Search knowledge base entries in IMA
Append content to an existing note in IMA
Create a new note in IMA
List notes in IMA with pagination
Search notes in IMA by keyword
Output schemas not documented. Tool definitions lack return type documentation, LLMs cannot infer what fields to expect (e.g., does note_create return note_id, created_at, url?). Forces agents to guess or make wasteful discovery calls.
Descriptions too brief (10-50 chars). Below LLM-optimized baseline of 50-200 chars. E.g., 'Create a new note in IMA' lacks context on when to use vs note_append, what happens on success, or prerequisites. Insufficient for LLM tool selection.
No tool annotations. Tools lack readOnlyHint/destructiveHint/idempotentHint. LLMs cannot distinguish safe (note_search) from destructive (note_create) operations without explicit hints. Increases risk of unintended side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Pagination not documented in list/search descriptions. note_list and note_search accept limit/offset/start/end but descriptions do not explain pagination behavior, max result limits, or when to use pagination. Agents may request excessive results.
Parameter constraints enforced at runtime, not declared in schema. UTF-8 validation, content length (max 200k), MIME type restrictions, and URL format checks happen in code but are not expressed as JSON Schema constraints (pattern, maxLength, enum). LLMs cannot discover valid values without calling the tool.