whodb-cli
OfficialWhoDB
Lightweight, Fast, and Beautiful Database Management
Available on
🚀 Quick Start • 📖 Documentation • 🎮 Live Demo • 💬 Community
Related MCP server: supabase-mcp
🎯 What is WhoDB?
WhoDB is the modern database management tool that developers actually want to use.
Built with GoLang and React, WhoDB is a lightweight (<50MB) yet powerful database client that combines blazing-fast performance with an intuitive, beautiful interface. Whether you're debugging a production issue, exploring a new database schema, or managing data for your next feature, WhoDB makes database management feel effortless.
Why WhoDB?
🚀 Lightning Fast
Instant startup (<1s)
Real-time query results
Efficient table virtualization
90% less resource usage than traditional tools
🎨 Beautiful & Intuitive
Clean, modern interface
Spreadsheet-like data grid
Interactive schema visualization
No training required
🤖 AI-Powered
Natural language to SQL
Talk to your data conversationally
Supports Ollama, OpenAI, Anthropic, and any OpenAI-compatible provider
No complex query writing needed
🔧 Developer-Friendly
Multi-database support
Query history & management
Mock data generation
Flexible export options
✨ Key Features
📊 Visual Data Management
Spreadsheet-Like Data Grid
View, edit, and manage data intuitively
Sort, filter, and search with ease
Inline editing with real-time updates
Bulk operations for efficiency
🔍 Interactive Schema Explorer
Visual Schema Topology
Interactive graph visualization
Explore table relationships
Understand foreign keys instantly
Pan, zoom, and navigate easily
💻 Powerful Query Interface
Scratchpad Query Editor
Jupyter-like notebook interface
Syntax highlighting & auto-completion
Query history & reuse
Multi-cell organization
🗄️ Multi-Database Support
Community Edition (CE): PostgreSQL, MySQL, SQLite3, MongoDB, Redis, MariaDB, ElasticSearch
Enterprise Edition (EE): All CE databases plus Oracle, SQL Server, DynamoDB, Athena, Snowflake, Cassandra, and more
🎯 Advanced Capabilities
Mock Data Generation - Generate realistic test data for development
Flexible Export Options - Export to CSV, Excel, JSON, or SQL
Advanced Filtering - Build complex WHERE conditions visually
AI-Powered Queries - Convert natural language to SQL with Ollama, OpenAI, Anthropic, or any OpenAI-compatible provider
🎮 Try WhoDB Now
Experience WhoDB in action without any setup
🚀 Quick Start
Option 1: Docker (Recommended)
The fastest way to get started with WhoDB:
docker run -it -p 8080:8080 clidey/whodbThen open http://localhost:8080 in your browser.
Option 2: Docker Compose
For more control and configuration:
version: "3.8"
services:
whodb:
image: clidey/whodb
ports:
- "8080:8080"
environment:
# AI Integration (Optional)
# Ollama Configuration
- WHODB_OLLAMA_HOST=localhost
- WHODB_OLLAMA_PORT=11434
# Anthropic Configuration
- WHODB_ANTHROPIC_API_KEY=your_key_here
# - WHODB_ANTHROPIC_ENDPOINT=https://api.anthropic.com/v1
# OpenAI Configuration
- WHODB_OPENAI_API_KEY=your_key_here
# - WHODB_OPENAI_ENDPOINT=https://api.openai.com/v1
# Generic AI Providers (OpenAI-compatible endpoints)
# Use WHODB_AI_GENERIC_<ID>_* to add any OpenAI-compatible provider.
# <ID> can be any unique identifier (e.g., LMSTUDIO, OPENROUTER).
#
# LM Studio example:
# - WHODB_AI_GENERIC_LMSTUDIO_NAME=LM Studio
# - WHODB_AI_GENERIC_LMSTUDIO_BASE_URL=http://host.docker.internal:1234/v1
# - WHODB_AI_GENERIC_LMSTUDIO_MODELS=mistral-7b,llama-3-8b
#
# OpenRouter example:
# - WHODB_AI_GENERIC_OPENROUTER_NAME=OpenRouter
# - WHODB_AI_GENERIC_OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
# - WHODB_AI_GENERIC_OPENROUTER_API_KEY=your_key_here
# - WHODB_AI_GENERIC_OPENROUTER_MODELS=google/gemini-2.0-flash-001,anthropic/claude-3.5-sonnet
# volumes: # (Optional for SQLite)
# - ./sample.db:/db/sample.dbWhat's Next?
Connect to your database - Enter your database credentials on the login page
Explore your schema - Browse tables and visualize relationships
Run queries - Use the Scratchpad to execute SQL queries
Manage data - Edit, add, and delete records with ease
📖 For detailed installation options and configuration, see our Documentation
💻 WhoDB CLI
WhoDB also offers a powerful command-line interface with an interactive TUI (Terminal User Interface) and MCP server support for AI assistants.
Features
Interactive TUI - Full-featured terminal interface for database management
MCP Server - Model Context Protocol support for Claude, Cursor, and other AI tools
Cross-Platform - Available for macOS, Linux, and Windows
Quick Install
# macOS/Linux
curl -fsSL https://raw.githubusercontent.com/clidey/whodb/main/cli/install/install.sh | bash
# Homebrew (coming soon)
brew install whodb-cli
# npm
npm install -g @clidey/whodb-cliUsage
# Launch interactive TUI
whodb-cli
# Run as MCP server for AI assistants
whodb-cli mcp serve📖 For full CLI documentation, see the CLI README
🛠️ Development Setup
Prerequisites
GoLang - Latest version recommended
PNPM - For frontend package management
Node.js - Version 16 or higher
Editions
Community Edition (CE)
PostgreSQL
MySQL / MariaDB
SQLite3
MongoDB
Redis
ElasticSearch
Enterprise Edition (EE)
All CE databases
Oracle
SQL Server
DynamoDB
Athena
Snowflake
Cassandra
And more...
📚 See BUILD_AND_RUN.md for detailed build instructions and ARCHITECTURE.md for architecture details.
Frontend Development
Navigate to the frontend/ directory and start the development server:
cd frontend
pnpm i
pnpm startBackend Development
1. Build Frontend (First-Time Setup)
If the core/build/ directory doesn't exist, build the frontend first:
cd frontend
pnpm install
pnpm run build
rm -rf ../core/build/
cp -r ./build ../core/
cd ..Note: This is only required once, as Go embeds the
build/folder on startup.
2. Setup AI Integration (Optional)
To enable natural language queries:
Ollama - Download from ollama.com
# Install Llama 3.1 8b model ollama pull llama3.1WhoDB will auto-detect installed models and show a Chat option in the sidebar.
OpenAI/Anthropic - Set environment variables (see Docker Compose example above)
Any OpenAI-compatible provider - Use
WHODB_AI_GENERIC_<ID>_*environment variables to connect to LM Studio, OpenRouter, or any provider with an OpenAI-compatible API (see Docker Compose example above)
3. Start Backend Service
cd core
go run ./cmd/whodbThe backend will start on http://localhost:8080
💼 Use Cases
👨💻 For Developers
Local Development
Quick database inspection during development
Debug production issues with read-only access
Test API endpoints with real data
Explore schema changes
API Development
Validate data transformations
Test query performance
Generate mock data for testing
Export data for integration tests
📊 For Data Analysts
Run ad-hoc SQL queries quickly
Export data to Excel for analysis
Build complex filters visually
Visualize table relationships
🧪 For QA Engineers
Generate realistic test data
Verify database state during testing
Debug test failures quickly
Validate data migrations
🛠️ For Database Administrators
Monitor table structures and indexes
Manage user data efficiently
Quick schema exploration
Emergency data fixes
❓ Frequently Asked Questions
WhoDB combines the lightweight nature of tools like Adminer with modern UX, powerful visualizations, and AI capabilities. Unlike resource-heavy tools like DBeaver, WhoDB uses 90% less memory while providing a faster, more intuitive experience.
Yes, WhoDB is production-ready and used by thousands of developers. For production environments, we recommend:
Using read-only database accounts when possible
Enabling SSL/TLS connections
Consider Enterprise Edition for audit logging and advanced security features
WhoDB implements several performance optimizations:
Table virtualization for efficient rendering
Lazy loading for large result sets
Pagination controls
Query result streaming
Community Edition: PostgreSQL, MySQL, MariaDB, SQLite3, MongoDB, Redis, ElasticSearch
Enterprise Edition: All CE databases plus Oracle, SQL Server, DynamoDB, Athena, Snowflake, Cassandra, and more
WhoDB can be deployed in multiple ways:
Docker - Single command deployment
Docker Compose - For production setups
Kubernetes - For enterprise environments
Binary - Direct installation on servers
See our Quick Start section for details.
No. WhoDB does not store database credentials by default. Connections are temporary and credentials are cleared when you close the browser. You can optionally configure connection profiles stored locally in your browser.
Yes! WhoDB integrates with:
Ollama - For local, private AI models
OpenAI - GPT-4 and other OpenAI models
Anthropic - Claude models
Any OpenAI-compatible provider - LM Studio, OpenRouter, vLLM, and more via
WHODB_AI_GENERIC_<ID>_*environment variables
These integrations allow you to query your database using natural language instead of SQL.
🤝 Contributing
We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making WhoDB better.
How to Contribute
Report Issues - Found a bug? Open an issue
Request Features - Have an idea? Start a discussion
Submit PRs - Want to contribute code? Check our Contributing Guide
Improve Docs - Help us improve documentation
Development Resources
Contributing Guide - Detailed contribution guidelines
Architecture - Understanding the codebase
Build & Run - Development setup instructions
📸 Screenshots
Data Management
Add/Edit Records
Advanced Filtering
Export Options
Schema Graph Visualization
Scratchpad Query Editor
Query Results
Multiple Database Support
🏢 Infrastructure & Support
WhoDB's deployment and CI/CD are powered by Clidey, a no-code DevOps platform.
Contact & Support
Email: support@clidey.com
GitHub Issues: Report a bug
Discussions: Join the conversation
Documentation: docs.whodb.com
⭐ Star Us on GitHub!
If you find WhoDB useful, please consider giving us a star on GitHub. It helps us grow the community and continue improving WhoDB.
Built with ❤️ by the Clidey team
"Is it magic? Is it sorcery? No, it's just WhoDB!"
Available Tools
12 toolswhodb_auditARead-onlyIdempotent
Run data-quality checks on one schema or table.
Best for: Finding null-rate spikes, missing primary keys, low-cardinality issues, duplicate rows, and orphaned foreign keys. Not recommended for: Replacing a full observability or data-governance system. Common mistakes: Forgetting to scope the audit to one table when you only need one table.
Usage Example:
{
"name": "whodb_audit",
"arguments": {
"connection": "mydb",
"schema": "public",
"table": "orders",
"null_warning": 15,
"null_error": 60
}
}Returns: Audit results per table, including issue summaries and the underlying table/column findings.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | Optional table name | |
| schema | No | Schema or database name override | |
| connection | Yes | Connection name (optional if only one exists) | |
| null_error | No | Error threshold for null percentage | |
| null_warning | No | Warning threshold for null percentage |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| results | Yes | |
| summary | Yes | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds behavioral context by listing the types of issues detected and mentioning the return format, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (Best for, Not recommended, Common mistakes, Usage example). Concise but includes valuable example; could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no nested objects, output schema exists), the description is thorough: covers purpose, usage guidelines, common mistakes, and an example. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described). The description adds a usage example that illustrates parameter usage, but the schema itself already provides adequate meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs data-quality checks on one schema or table and lists specific issues (null-rate spikes, missing primary keys, etc.). This distinguishes it from sibling tools like whodb_query or whodb_suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Best for' and 'Not recommended for' sections, common mistakes, and a usage example. This gives clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_columnsARead-onlyIdempotent
Describe the columns in a database table.
Best for: Understanding table structure before writing queries; discovering primary keys and foreign key relationships. Not recommended for: When you need actual data (use whodb_query with SELECT). Common mistakes: Forgetting to specify the table name; not using this before writing INSERT/UPDATE queries.
Usage Example:
{
"name": "whodb_columns",
"arguments": {
"connection": "mydb",
"table": "users",
"schema": "public"
}
}Returns: Array of column objects with:
name: Column name
type: Data type (varchar, integer, timestamp, etc.)
is_primary: Whether this is a primary key
is_foreign_key: Whether this references another table
referenced_table/referenced_column: Foreign key target (if applicable)
Pro tip: Always call this before writing INSERT queries to ensure correct column names and types.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name to describe | |
| schema | No | Schema name (uses default if omitted) | |
| connection | Yes | Connection name (optional if only one exists) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| table | Yes | |
| schema | Yes | |
| columns | Yes | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds return structure details (array of column objects with fields like name, type, is_primary) and best practices beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded purpose, every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema is present but description explains it fully. Covers purpose, parameters, return format, and use cases thoroughly for a read-only metadata tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value through usage example, pro tip about connection optionality, schema default, and common mistake about forgetting table name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Describe the columns in a database table' with specific verb and resource. Distinct from siblings: not for actual data (whodb_query) nor listing tables (whodb_tables).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides best-for, not-recommended-for, and common mistakes sections. Gives clear context for when to use and when alternatives are better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_confirmADestructive
Confirm and execute a pending write operation.
Best for: Executing write queries after user approval in confirm-writes mode. Not recommended for: Read queries (they execute immediately without confirmation). Common mistakes: Using an expired token (tokens expire after 5 minutes); not explaining the query to the user before confirming.
Usage Example:
{
"name": "whodb_confirm",
"arguments": {
"token": "550e8400-e29b-41d4-a716-446655440000"
}
}Workflow:
Call whodb_query with a write operation (INSERT, UPDATE, DELETE, etc.)
Receive confirmation_required=true, a confirmation_token, and confirmation_expiry
Explain to the user what the query will do in plain language
After user approves, call whodb_confirm with the token
Query executes and returns results
Token behavior: Tokens are valid for 5 minutes (expiry time is in the response). If confirmation fails due to a connection error or timeout, you can retry with the same token — it is only consumed after successful execution. Use whodb_pending to list active tokens if you lose track.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Confirmation token from a previous whodb_query or hosted platform write response |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| error | No | |
| columns | Yes | |
| message | No | |
| commands | No | |
| next_steps | No | |
| request_id | No | |
| column_types | No | |
| setup_status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical non-obvious behaviors: tokens expire after 5 minutes, tokens are consumed only after successful execution, and retry is allowed on connection errors. This goes well beyond the annotations (which only indicate destructive/read-only hints) and provides actionable operational knowledge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (Best for, Not recommended, Common mistakes, Example, Workflow, Token behavior) and front-loaded with purpose. Every sentence earns its place, and the structured format aids quick comprehension without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's role in a confirm-write workflow, the description covers the full lifecycle: initiation via whodb_query, approval explanation, token usage, expiry, and error handling. It also mentions the output schema indirectly by stating 'returns results' and provides enough context for an agent to execute correctly without missing steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema already describes token as a confirmation token, the description enriches it with lifecycle details (single-use, expiry, retry), a concrete JSON example, and workflow integration. This adds significant meaning beyond the schema's simple description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Confirm and execute a pending write operation,' which clearly identifies both the action and resource. It distinguishes itself from siblings like whodb_query (which initiates operations) and whodb_pending (which lists tokens), making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit 'Best for' and 'Not recommended for' sections, stating when to use (write operations after user approval) and when not to (read queries). It also references whodb_pending as an alternative for managing tokens, giving clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_connectionsARead-onlyIdempotent
List all available database connections.
Best for: Discovering what databases are configured; choosing which connection to use. Not recommended for: When you already know the connection name. Common mistakes: Not calling this first when connection name is unknown.
Usage Example:
{
"name": "whodb_connections",
"arguments": {}
}Returns: Array of connection objects with:
name: Connection identifier to use in other tools
type: Database type (postgres, mysql, sqlite, duckdb, etc.)
host/port/database: Connection details (passwords are never exposed)
source: "saved" (from CLI config) or "env" (from environment variables)
Note: If only one connection exists, other tools will use it automatically when connection is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| request_id | No | |
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, but the description adds valuable behavioral details: passwords are never exposed, return structure includes source ('saved' vs 'env'), and automatic fallback when only one connection. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Best for, Not recommended, Common mistakes, Usage Example, Returns, Note). It is concise with no unnecessary words, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0 parameters, strong annotations, and a detailed output description, the description covers all necessary information: purpose, usage guidance, return format, and edge cases. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema coverage, the description adds a usage example showing empty arguments, which is helpful. No further parameter information needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available database connections.' with explicit verb and resource. It distinguishes itself from sibling tools by specifying it's for discovering connections, which is unique among the listed tools like whodb_query or whodb_schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Best for:', 'Not recommended for:', and 'Common mistakes:' sections, guiding the agent on when to use this tool (first, when connection name unknown) and when not to. Also explains automatic fallback behavior for single-connection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_diffARead-onlyIdempotent
Compare schema metadata between two database connections.
Best for: Spotting drift between environments; comparing staging vs production; reviewing storage-unit, column, and relationship changes. Not recommended for: Row-level data comparison. Common mistakes: Forgetting to specify both connections; comparing the same connection and schema without overrides.
Usage Example:
{
"name": "whodb_diff",
"arguments": {
"from_connection": "staging",
"to_connection": "prod",
"from_schema": "public",
"to_schema": "public"
}
}Returns: A structured schema diff with storage-unit, column, and relationship summaries plus per-object changes.
| Name | Required | Description | Default |
|---|---|---|---|
| to_schema | No | Target schema override | |
| from_schema | No | Source schema override | |
| to_connection | Yes | Target connection name | |
| from_connection | Yes | Source connection name |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| result | No | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds that it returns a structured schema diff with specific categories, and does not contradict annotations. No further behavioral details needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections (purpose, best for, not recommended, common mistakes, usage example, returns). Every sentence adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and existing output schema, the description fully covers usage context, including pitfalls and expected return format. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by showing a usage example and clarifying parameter roles in common mistakes, beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares schema metadata between two connections, with specific verb and resource. It distinguishes from siblings by specifying it's for schema-level comparison, not row-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides best-for scenarios (drift detection, staging vs prod), not-recommended (row-level data), and common mistakes (forgetting both connections, comparing same connection without overrides).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_erdARead-onlyIdempotent
Load backend graph metadata for a schema or database.
Best for: Understanding how tables relate before writing joins; inspecting primary/foreign key relationships programmatically. Not recommended for: Query execution. Common mistakes: Expecting row data instead of metadata.
Usage Example:
{
"name": "whodb_erd",
"arguments": {
"connection": "mydb",
"schema": "public"
}
}Returns: Storage units with columns plus normalized relationship edges sourced from backend graph metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | No | Schema or database name override | |
| connection | Yes | Connection name (optional if only one exists) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| schema | No | |
| request_id | No | |
| relationships | Yes | |
| storage_units | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds value by stating it returns metadata, not row data, and describes the output as 'storage units with columns plus normalized relationship edges'. This provides behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and a usage example. It is front-loaded with the main purpose. However, the 'Common mistakes' section could be considered slightly redundant given the guidelines, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately does not need to detail return values. It provides sufficient context about the nature of the output (metadata, not row data) and the tool's role in relationship discovery, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, so the baseline is 3. The description includes a usage example that reinforces parameter usage, but does not add significant new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool loads backend graph metadata for a schema or database. It specifies the action (load) and resource (graph metadata), and distinguishes from siblings by stating its best use is understanding table relationships before writing joins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides 'Best for' and 'Not recommended for' sections, giving clear guidance on when to use this tool versus alternatives. It also mentions common mistakes, further aiding the agent in correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_explainARead-onlyIdempotent
Run EXPLAIN for a SQL query using the database's native explain mode.
Best for: Understanding query plans; checking whether a query will scan too much data before you run the real query. Not recommended for: Fetching actual data (use whodb_query for that). Common mistakes: Passing a non-SQL string; forgetting that EXPLAIN output is database-specific.
Usage Example:
{
"name": "whodb_explain",
"arguments": {
"connection": "mydb",
"query": "SELECT * FROM users WHERE email LIKE '%@example.com' LIMIT 10"
}
}Returns: The database-native EXPLAIN output with columns and rows, ready for follow-up analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SQL query to explain | |
| connection | Yes | Connection name (optional if only one exists) |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| error | No | |
| columns | Yes | |
| request_id | No | |
| column_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description does not need to repeat those. However, it adds valuable context: EXPLAIN output is database-specific, and the tool returns the database-native EXPLAIN output with columns and rows. This goes beyond annotations and helps the agent understand the behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear headings (Best for, Not recommended for, Common mistakes, Usage Example, Returns). It is informative but could be slightly more concise; however, the structure aids readability and every section serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage guidelines, common mistakes, an example, and the return format. Given that an output schema exists, the description does not need to detail return values, but it still mentions the output is database-specific with columns and rows. The tool is simple and the description is sufficiently complete for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters fully described in the schema). The description does not add new semantic meaning for the parameters beyond the schema, but it provides a usage example that illustrates how to format the arguments. This is adequate but not exceptional, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs EXPLAIN for a SQL query using the database's native explain mode, which is a specific verb+resource combination. It also explicitly distinguishes itself from the sibling tool whodb_query by stating that fetching actual data is not recommended and that whodb_query should be used instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance (best for understanding query plans, checking before running real query) and when-not-to-use guidance (not for fetching actual data, use whodb_query). It also lists common mistakes like passing non-SQL strings or forgetting database-specific output, which helps the agent avoid errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_pendingARead-onlyIdempotent
List all pending write confirmations that are waiting for approval.
Best for: Recovering lost confirmation tokens; checking what operations are pending. Not recommended for: Anything else — this is a utility tool for the confirm-writes workflow.
Usage Example:
{
"name": "whodb_pending",
"arguments": {}
}Returns: Array of pending confirmations with token, query, connection, and expiry time.
Important: Tokens are single-use and expire after 60 seconds. If expired, re-submit the original query to get a new token.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| pending | Yes | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), description adds critical details: tokens are single-use, expire after 60 seconds, and advice to re-submit query if expired. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with first sentence stating purpose, bullet points for best/not recommended, usage example, return info, and important note. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, rich annotations, and existence of output schema, the description fully covers tool behavior, usage guidance, and important note on token expiry. Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in input schema, so schema coverage is 100%. Description doesn't need to add param info but provides a usage example confirming no arguments, which is helpful. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all pending write confirmations that are waiting for approval.' It uses a specific verb 'list' and resource 'pending write confirmations', distinguishing it from siblings like whodb_confirm or whodb_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides best-for ('recovering lost confirmation tokens; checking what operations are pending') and not-recommended-for ('Anything else'), offering clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_queryA
Execute a SQL query against a database connection.
Best for: Running SQL SELECT, INSERT, UPDATE, DELETE statements when you need to query or modify data. Not recommended for: Schema exploration (use whodb_schemas, whodb_tables, whodb_columns instead for faster, structured results). Common mistakes: Running queries without specifying connection when multiple exist; using SELECT * instead of specific columns; forgetting LIMIT on large tables.
Usage Example (simple query):
{
"name": "whodb_query",
"arguments": {
"connection": "mydb",
"query": "SELECT id, name, email FROM users WHERE active = true LIMIT 10"
}
}Usage Example (parameterized query - RECOMMENDED for user input):
{
"name": "whodb_query",
"arguments": {
"connection": "mydb",
"query": "SELECT * FROM users WHERE id = $1 AND status = $2",
"parameters": [123, "active"]
}
}Placeholder syntax by database: PostgreSQL uses $1, $2, $3; MySQL/SQLite/DuckDB/ClickHouse use ?
Best practices:
Use parameterized queries when incorporating user-provided values - this prevents SQL injection
Always use LIMIT for exploratory queries to avoid overwhelming results
Prefer specific column selection over SELECT *
Check schema structure with whodb_columns before writing complex queries
Security Mode: CONFIRM-WRITES (Default) Write operations (INSERT, UPDATE, DELETE, etc.) require user confirmation. When you submit a write query:
The query is validated but NOT executed
You receive a confirmation_token
Explain to the user what the query will do
Call whodb_confirm with the token after user approves
The query executes and returns results
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SQL query to execute | |
| connection | Yes | Connection name (optional if only one exists) | |
| parameters | No | Parameterized query values ($1/$2 for Postgres or ? for MySQL/SQLite) |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| error | No | |
| columns | Yes | |
| warning | No | |
| request_id | No | |
| column_types | No | |
| confirmation_query | No | |
| confirmation_token | No | |
| confirmation_expiry | No | |
| confirmation_required | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the CONFIRM-WRITES security mode, explaining that write operations are not executed immediately, require a confirmation_token, and must go through whodb_confirm. It also clarifies that even write queries return results after confirmation. This adds substantial behavioral context beyond the basic readOnlyHint/destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is quite long but well-organized into labeled sections with code examples. Key information is front-loaded (purpose, best-for, not-recommended). While somewhat verbose, the length is justified given the tool's complexity (SQL execution, write confirmation, parameterization).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage guidance, security mode, parameterization, common pitfalls, and alternatives. An output schema exists, so detailed return-value descriptions are unnecessary. It provides complete operational context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with descriptions for all three parameters. The description enhances this with usage examples for both simple and parameterized queries, placeholder syntax per database (PostgreSQL vs. MySQL/SQLite), and best practices around parameterization. This adds practical semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear action: 'Execute a SQL query against a database connection.' It explicitly lists supported statement types (SELECT, INSERT, UPDATE, DELETE) and differentiates from siblings by directing schema exploration to whodb_schemas, whodb_tables, and whodb_columns. This is a specific verb+resource with clear scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Best for' and 'Not recommended for' sections provide explicit guidance on when to use this tool versus sibling tools, naming alternatives directly. 'Common mistakes' further clarifies safe usage (e.g., specifying connection, using LIMIT). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_schemasARead-onlyIdempotent
List all schemas (namespaces) in a database.
Best for: Discovering what schemas exist in a database; understanding database organization before exploring tables. Not recommended for: When you already know the schema name (proceed directly to whodb_tables). Common mistakes: Calling this repeatedly - schema lists rarely change during a session.
Usage Example:
{
"name": "whodb_schemas",
"arguments": {
"connection": "mydb"
}
}Returns: Array of schema names (e.g., ["public", "analytics", "audit"]). Typical workflow: whodb_schemas → whodb_tables(include_columns=true) → whodb_query
Optional parameter: Set "include_tables": true to also return all tables within each schema in a single call. This populates a "details" array with schema names and their tables, saving you a separate whodb_tables call per schema.
| Name | Required | Description | Default |
|---|---|---|---|
| connection | Yes | Connection name (optional if only one exists) | |
| include_tables | No | Set true to also return tables within each schema in a single call |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| details | No | |
| schemas | Yes | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. Description adds useful context about schema list stability and the effect of the optional include_tables parameter, but the core behavioral traits are captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (best for, not recommended, common mistakes, example, returns, workflow). Every sentence is informative and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (2 params, list result), the description fully covers usage, alternatives, and behavioral notes. Output format is described, and annotations plus schema fill remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds workflow context, example, and clarifies the optional parameter's effect, providing extra value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all schemas (namespaces) in a database' with a specific verb and resource. It distinguishes from sibling tools by recommending whodb_tables when schema name is known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Best for', 'Not recommended for', and 'Common mistakes' sections. Names direct alternative (whodb_tables) and outlines a typical workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_suggestionsARead-onlyIdempotent
Load backend-generated starter queries for a schema or database.
Best for: Quickly orienting yourself in an unfamiliar database; suggesting first queries for exploration. Not recommended for: Exhaustive SQL tutoring. Common mistakes: Treating the suggestions as guaranteed-valid business logic rather than onboarding hints.
Usage Example:
{
"name": "whodb_suggestions",
"arguments": {
"connection": "mydb",
"schema": "public"
}
}Returns: A short list of backend-generated query suggestions derived from the actual storage units in the resolved schema.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | No | Schema or database name override | |
| connection | Yes | Connection name (optional if only one exists) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| request_id | No | |
| suggestions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds context about suggestions being derived from actual storage units, returning a short list, and warns against treating them as guaranteed-valid business logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear structure: bullet points, headings, and a usage example. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full parameter coverage, annotations, and known output schema, the description covers purpose, usage, return type, and pitfalls, making it complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains the two parameters. The description provides a usage example but no additional semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it loads backend-generated starter queries, includes a specific verb ('Load') and resource, and distinguishes from siblings via 'Best for' and 'Not recommended for' sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Best for' and 'Not recommended for' sections provide clear guidance on when to use (orienting in unfamiliar database) and when not to use (exhaustive SQL tutoring), plus a 'Common mistakes' caution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whodb_tablesARead-onlyIdempotent
List all tables in a database schema.
Best for: Discovering what tables exist in a schema; getting table metadata like row counts. Not recommended for: When you already know the table name (proceed directly to whodb_columns or whodb_query). Common mistakes: Not specifying schema when the database has multiple schemas with same-named tables.
Usage Example:
{
"name": "whodb_tables",
"arguments": {
"connection": "mydb",
"schema": "public"
}
}Returns: Array of table objects with name and attributes (row count, size, etc.). Note: If schema is omitted, uses the connection's default schema or the first available schema.
Optional parameter: Set "include_columns": true to also return column details (name, type, primary key, foreign keys) for each table. This saves you separate whodb_columns calls and gives you everything needed to write queries in a single round-trip.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | No | Schema name (uses default if omitted) | |
| connection | Yes | Connection name (optional if only one exists) | |
| include_columns | No | Set true to also return column details for each table in a single call |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| schema | Yes | |
| tables | Yes | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's behavioral burden is lighter. The description adds that the tool returns an 'Array of table objects with name and attributes' and that the optional include_columns parameter returns column details to save separate calls. However, it could mention if include_columns affects performance or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings ('Best for', 'Not recommended for', 'Common mistakes', 'Usage Example', 'Returns', 'Note', 'Optional parameter'). It is front-loaded with key information. However, the usage example and note could be slightly more concise; still, it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a moderate complexity (3 parameters, 1 required), and there is an output schema (context signal: 'Has output schema: true'), the description adequately covers return values ('Array of table objects with name and attributes') and the behavior of include_columns. It could mention edge cases (e.g., empty schema) but is sufficiently complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters. The description adds extra context: explains that schema uses default if omitted, and that include_columns 'saves you separate whodb_columns calls and gives you everything needed to write queries in a single round-trip.' This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all tables in a database schema.' The verb 'list' and resource 'tables' are specific. It distinguishes from siblings by mentioning when to use whodb_columns or whodb_query instead, e.g., 'Not recommended for: When you already know the table name (proceed directly to whodb_columns or whodb_query).'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use ('Best for: Discovering what tables exist...'), when-not-to-use ('Not recommended for: When you already know the table name'), and common mistakes ('Not specifying schema when the database has multiple schemas'). A usage example is included, showing the JSON structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.120.0- Changed
whodb_confirm3 fields changed- added
Output schema / properties / commandsAdded value: +{ + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / next_stepsAdded value: +{ + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / setup_statusAdded value: +{ + "type": "string" +}
2 tool updates
v0.115.0- Changed
whodb_confirm1 field changed- changed
Input schema / properties / token / descriptionPrevious value: -"Confirmation token from a previous whodb_query response"New value: +"Confirmation token from a previous whodb_query or hosted platform write response"
- Changed
whodb_pending1 field changed- changed
Output schema / properties / pending / items / requiredPrevious value: -[ - "token", - "query", - "connection", - "expires_at" -]New value: +[ + "token", + "expires_at" +]
12 tool updates
v0.112.0- Added
whodb_audit - Added
whodb_columns - Added
whodb_confirm - Added
whodb_connections - Added
whodb_diff - Added
whodb_erd - Added
whodb_explain - Added
whodb_pending - Added
whodb_query - Added
whodb_schemas - Added
whodb_suggestions - Added
whodb_tables
12 tool updates
v0.108.0- Removed
whodb_audit - Removed
whodb_columns - Removed
whodb_confirm - Removed
whodb_connections - Removed
whodb_diff - Removed
whodb_erd - Removed
whodb_explain - Removed
whodb_pending - Removed
whodb_query - Removed
whodb_schemas - Removed
whodb_suggestions - Removed
whodb_tables
12 tool updates
v0.107.0- First observed
whodb_audit - First observed
whodb_columns - First observed
whodb_confirm - First observed
whodb_connections - First observed
whodb_diff - First observed
whodb_erd - First observed
whodb_explain - First observed
whodb_pending - First observed
whodb_query - First observed
whodb_schemas - First observed
whodb_suggestions - First observed
whodb_tables
TDQS
Most tools have clearly distinct purposes, but there is minor overlap: whodb_tables with include_columns can return column details similar to whodb_columns, and whodb_erd also provides column metadata. Descriptions clarify the intended use case for each, preventing significant confusion.
All tools follow a consistent whodb_<noun> pattern using snake_case. The naming is uniform and predictable, making it easy to infer the function of each tool.
With 12 tools, the set is well-scoped for a database CLI. Each tool addresses a distinct need in database exploration, querying, and maintenance, without being excessive or sparse.
The toolset covers a comprehensive range: connection discovery, schema/table/column introspection, query execution with write confirmation, query explanation, schema diff, relationship mapping, data quality auditing, and starter suggestions. No significant gaps are evident for the intended domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Butterbase MCP server — manage your backend: schemas, auth, functions, storage, RAG, deploys.
Run AI customer support from your terminal: conversations, knowledge base, and chat widget.
The Instant MCP server is a wrapper around the Instant Platform SDK that enables creating, managing, and updating InstantDB applications directly within an editor. It provides tools for fetching rules files for LLMs, retrieving and pushing app schemas, managing permission rules, and executing database queries. Key capabilities include schema management (get-schema, push-schema), permission management (get-perms, push-perms), query execution, and listing recent query history.
Related MCP Servers
- FlicenseBqualityDmaintenanceFireproof ledger database with multi-user sync41631-
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that provides tools for interacting with Supabase databases, storage, and edge functions.45MIT
- AlicenseNot gradedqualityAmaintenanceThe Multi DB MCP Server is a high-performance implementation of the Database Model Context Protocol designed to revolutionize how AI agents interact with databases. Currently supporting MySQL and PostgreSQL databases.420MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with MongoDB databases through standardized MCP tools. Supports full CRUD operations, aggregations, and natural language queries with Clean Architecture and dual transport modes (STDIO/HTTP).-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/clidey/whodb'
If you have feedback or need assistance with the MCP directory API, please join our Discord server