PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback.
Pythia has 20 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate), and input schemas are present with type definitions. However, output schemas are entirely undocumented, LLMs cannot predict what fields to expect from responses, forcing guesswork on downstream tool chaining. Parameter descriptions are minimal (often just restating the name). Error handling is absent, no guidance on retryability, user-fixable vs fatal errors, or recovery paths. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification in the data. The 'apply' and 'journal' tools handle irreversible writes but lack confirmation/dry-run patterns. Tool composition is reasonable (each does one thing), but naming could be more consistent (e.g., 'ls' vs 'list', 'cols' vs 'columns'). Security is a concern: 'sql' and 'apply' accept arbitrary input with minimal validation guidance.
Apply PL/SQL changes to the database with snapshot verification and rollback capability
Retrieve argument signatures for a PL/SQL function or procedure
Verify database connection and session configuration
Retrieve column definitions for a table
Display naming conventions and best practices for the schema
Retrieve DDL (Data Definition Language) for a PL/SQL object
Retrieve dependencies - what an object depends on
Retrieve compilation errors and warnings for a PL/SQL object
No output schemas documented. LLMs cannot predict response structure, forcing guesswork on field extraction and downstream tool chaining. E.g., 'src' returns PL/SQL source but no schema specifies line numbers, error flags, or metadata fields.
Irreversible write tools ('apply', 'journal restore') lack explicit confirmation/dry-run patterns. No dry-run mode documented; 'apply' requires a confirmation token but the preview step is not formalized in the tool definition.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked READ_ONLY or WRITE in metadata but not in MCP tool definitions. LLMs cannot distinguish safe from dangerous tools without explicit annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Search for text patterns in PL/SQL source code
View the history of changes to a specific object
Analyze what depends on a PL/SQL object - everything a change to it can break
List all invalid objects in the schema
View or restore from the change journal
List PL/SQL objects in the schema with optional limit
Query PL/Scope metadata for identifier usage and declarations
View or set write policy for different statement types
Find objects with similar names in the schema
Execute read-only SQL queries (SELECT/WITH only)
Retrieve live source code from ALL_SOURCE for a PL/SQL object
Convert Vietnamese text to Oracle UNISTR format
Error handling absent. No guidance on retryability, user-fixable errors, or recovery paths. E.g., 'sql' rejects non-SELECT statements with code=2 but does not explain what to do next or suggest alternatives.
Inconsistent naming conventions. 'ls' (non-standard abbreviation) vs 'list', 'cols' vs 'columns', 'grep' (Unix jargon) vs 'search'. LLMs struggle to disambiguate similar tools when names are inconsistent.