Secure PostgreSQL CLI for AI agents. Query databases, list tables, describe schemas without handling credentials. Use when tasks involve database queries, data exploration, or schema inspection.
Install
npx skillscat add progremir/pglr Install via the SkillsCat registry.
pglr - PostgreSQL CLI for AI Agents
You have access to pglr, a secure PostgreSQL CLI. Use it to query databases without needing connection credentials.
Prerequisites
A human must first configure a connection:
pglr connect postgres://user:pass@host/databaseIf you get "No connection configured", ask the user to run the connect command.
Commands
Query the database
pglr query "SELECT * FROM users WHERE active = true"With parameters (prevents SQL injection):
pglr query "SELECT * FROM users WHERE id = $1" --params '[123]'List all tables
pglr tablesDescribe a table's structure
pglr describe users
pglr describe myschema.ordersGet full schema overview
pglr schemaOutput Format
All commands return JSON:
{
"success": true,
"rowCount": 5,
"rows": [{"id": 1, "name": "Alice"}, ...],
"executionTimeMs": 12,
"truncated": false
}On error:
{
"success": false,
"error": "Table does not exist"
}Constraints
- Read-only by default: INSERT, UPDATE, DELETE, DROP are blocked
- Row limit: Max 1000 rows returned (use LIMIT for smaller results)
- No credentials access: You cannot see or modify connection details
Write Operations
If the user explicitly requests data modification:
pglr query "INSERT INTO logs (message) VALUES ($1)" --params '["test"]' --allow-writesOnly use --allow-writes when the user explicitly asks to modify data.
Best Practices
Always check table structure first:
pglr describe usersUse parameters for user input:
# Good - parameterized pglr query "SELECT * FROM users WHERE email = $1" --params '["user@example.com"]' # Bad - string interpolation (SQL injection risk) pglr query "SELECT * FROM users WHERE email = 'user@example.com'"Limit results when exploring:
pglr query "SELECT * FROM large_table LIMIT 10"Use schema command to understand the database:
pglr schema
Multiple Connections
If multiple databases are configured:
# List available connections
pglr connections
# Query specific connection
pglr query "SELECT 1" --connection prod
pglr tables --connection stagingExample Workflow
# 1. Understand the database structure
pglr schema
# 2. Explore a specific table
pglr describe orders
# 3. Query data
pglr query "SELECT id, status, created_at FROM orders WHERE status = $1 ORDER BY created_at DESC LIMIT 20" --params '["pending"]'