Server has 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (read_rows, create_records, update_records, delete_records). Descriptions are present and contextual (avg ~180 chars, within baseline 194). However, output schemas are undocumented, responses return generic Dict/List without field documentation. Parameters lack constraints (no enums, ranges, or format specs). Error handling is absent, no recovery guidance, no validation messages. Destructive operations (delete_records) lack confirmation patterns. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Create one or multiple records in a Supabase table. Accepts either a single record as a dictionary or multiple records as a list of dictionaries. Returns the created record(s) with their assigned IDs.
Delete records from a Supabase table that match the specified filters. Use filters to identify which records to delete. Be careful as this operation cannot be undone. Returns the number of records deleted and their IDs.
Read rows from a Supabase table with optional filtering and column selection. Perfect for querying data with specific conditions or retrieving all records from a table. Returns the matching rows as a list of dictionaries.
Update records in a Supabase table that match the specified filters. Use filters to identify which records to update and provide new values in the data parameter. Returns the number of records updated and the updated records.
Output schemas undocumented. Tools return Dict/List with no field documentation. LLMs cannot plan downstream calls or extract required data (e.g., created record IDs, updated count).
No input validation or error guidance. Invalid table names, malformed filters, or constraint violations return raw exceptions. LLMs cannot self-correct.
Destructive operations lack confirmation pattern. delete_records executes immediately with no dry-run or confirmation step. Agents cannot preview impact before committing.
No tool annotations. Tools declare risk levels (READ_ONLY, WRITE, DESTRUCTIVE) in metadata but FastMCP does not expose readOnlyHint/destructiveHint/idempotentHint in schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Parameters lack constraints. 'filters' and 'data' accept free-form Dict with no validation. 'limit' unbounded (no min/max). LLMs can pass invalid filter operators or absurd limits.