MCP server for Postgram - a knowledge base system that stores, searches, and manages entities using PostgreSQL with pgvector embeddings
Postgram MCP server provides 9 well-named tools with complete input schemas and descriptions. All tools follow verb_noun naming convention (create_, list_, search_, get_, update_, delete_). Descriptions are present and actionable (average 80-120 chars). Input schemas include proper type definitions and parameter descriptions. However, there are significant gaps: (1) No output schemas documented for any tool, LLMs cannot predict return structure or plan follow-up calls; (2) No error handling guidance, tools lack recovery instructions or error categorization; (3) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (WRITE, DESTRUCTIVE); (4) Parameter descriptions lack constraints, 'limit', 'offset', 'type' parameters have no stated ranges or valid values; (5) Pagination support is implicit but not documented in tool descriptions. Per-tool analysis: naming is excellent across all 9 tools (verb-first, action-clear). Descriptions are present but brief and lack context on when/why to use each tool. Schemas are complete with types and descriptions, meeting the minimum bar. Output structure is not documented.
Create a relationship (edge) between two entities
Create a new entity in the knowledge base
Delete a relationship between entities
Delete an entity
Get a specific entity by ID
List relationships (edges) between entities
List entities from the knowledge base with optional filtering
Search entities using semantic search with embeddings
No output schemas documented. LLMs cannot infer return structure, chaining IDs, or what fields are available. This blocks intelligent tool composition and forces agents to assume response format.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk levels assigned. Tools marked WRITE and DESTRUCTIVE should declare this formally so agents/clients can apply safety policies.
No error handling guidance. Tools lack recovery instructions ('User not found, try search_entities'), error categorization (retryable vs fatal), or actionable error messages. Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Update an existing entity
Parameter descriptions lack constraints. 'limit' and 'offset' have no stated ranges (is limit 1 - 1000? unbounded?). 'type' and 'relation' enums are not declared, inviting invalid values. 'visibility' should be an enum (shared|private) not free-form string.
Descriptions are present but lack LLM-optimization context. They state WHAT (e.g., 'Create a new entity') but not WHEN or WHY to use each tool over alternatives. Short descriptions (50 - 65 chars) provide minimal guidance for tool selection.
Pagination not documented in tool descriptions. list_entities and list_edges accept limit and offset but do not state if they return a total_count, next_cursor, or whether results are sorted. Without this, agents cannot reliably paginate.
No confirmation or dry-run support for destructive operations (delete_entity, delete_edge). Agents should be able to preview what will be deleted before committing.