PII-filtering proxy for AI agent query tools. Intercepts tool calls and redacts personally identifiable information from query results using Gate 1 (SQL-level filtering) and Gate 2 (value-based redaction).
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools have descriptions (10-200 chars, within baseline), but parameter descriptions are minimal or absent. No input validation guidance, no error recovery hints, and no output schema documentation. Tool names follow verb_noun pattern (list_, describe_, execute_) which is good. However, execute_query lacks critical safety documentation despite accepting arbitrary SQL.
Return column name, data_type, is_nullable, and column_default for each column.
Execute a SQL SELECT query and return rows as a list of JSON-safe dicts. Only SELECT statements are permitted. Use list_tables / describe_table to explore the schema before querying.
Return the names of all user tables in the public schema.
execute_query lacks output schema documentation. Returns 'list of JSON-safe dicts' but does not specify field names, types, or structure. LLMs cannot plan downstream operations without knowing what fields to extract.
describe_table parameter 'table' has no validation guidance. No mention of case sensitivity, schema qualification, or error handling if table does not exist. LLMs will pass invalid names without constraint.
execute_query description mentions 'Only SELECT statements are permitted' but provides no guidance on what happens if a non-SELECT is passed. Error message format and recovery steps are undocumented.
No output schema for list_tables. Returns 'list[str]' but does not document sort order, filtering rules, or whether system tables are included. Baseline for A+ tools is 100% documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
execute_query accepts arbitrary SQL string with minimal validation. No mention of timeout, result row limits, or performance constraints. Large result sets could exhaust context window; no pagination offered.