flamerobin-mcp-server
flamerobin-mcp-server
A Model Context Protocol (MCP) server for Firebird databases intended for local use. It reads connection details from FlameRobin's fr_databases.conf so no extra configuration is needed — if you have FlameRobin set up with your Firebird databases, this server works out of the box.
Compared to mcpFirebird
This project | mcpFirebird | |
Credentials | Read automatically from FlameRobin's config — no setup required | Must pass |
Multi-database | All FlameRobin-registered databases available in one session | Single database per server instance |
Wire encryption | Supported (native Firebird .NET driver) | Not supported — requires |
Runtime | .NET 9 self-contained executable | Node.js / npm |
Schema introspection | Tables, views, procedures, triggers, generators, roles, FK/PK/constraints, execution plans, missing index analysis | Tables and basic schema |
DDL / DML / scripts | Yes — | SQL execution only |
Deployment | Local only — runs on your PC alongside FlameRobin | Cloud-deployable via Smithery, SSE/HTTP transports |
Related MCP server: MCP Firebird
Building
dotnet build FirebirdMcp.csprojPublishing a single self-contained executable
dotnet publish FirebirdMcp.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish-singleThe output is publish-single\FirebirdMcp.exe. The publish-single\ folder is gitignored.
Claude Desktop configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"firebird": {
"command": "C:\\path\\to\\publish-single\\FirebirdMcp.exe",
"env": {
"Logging__LogLevel__Default": "None"
}
}
}
}Important: The
Logging__LogLevel__Default=Noneenv var is required. The server's startup log output is written to stdout, which Claude reads as part of the MCP handshake — any unexpected output causes Claude to fail to recognize the server.
Tools
Tool | Description |
| List all servers/databases registered in FlameRobin |
| List tables, views, or both — with optional regex filter |
| List stored procedures — with optional regex filter |
| List triggers — with optional regex filter |
| List generators/sequences with current values |
| List roles — with optional regex filter |
| Column definitions — supports |
| FK relationships for a table ( |
| PK, FK, UNIQUE, CHECK constraints for a table |
| PSQL source of a stored procedure |
| PSQL source of a trigger |
| SQL source of a view |
| Execution plan for a SELECT — shows index usage |
| Which columns lack indexes; optionally scoped to filter columns |
| ODS version, page size, dialect, etc. |
| Active connections to the database |
| Execute a SELECT — supports |
| Execute CREATE/ALTER/DROP and commit |
| Execute INSERT/UPDATE/DELETE and commit |
| Execute multiple semicolon-separated statements |
Available Tools
29 toolsanalyze_missing_indexesA
Report which columns on a table are covered by an active index (as the leading segment). Helps identify missing indexes on columns used in WHERE clauses or JOINs. Returns [{column, has_index, index, unique}].
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. | |
| filterColumns | No | Comma-separated column names to check. Omit to check all columns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It describes the output format and what it checks, but does not disclose whether it is read-only, performance impact, or any side effects. Basic transparency but could be more explicit.
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?
Three sentences, each earning its place: first states purpose, second gives use context, third provides return format. No redundancy, front-loaded with primary action.
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 no output schema, the description includes a return format example. It covers the core functionality and its purpose. Lacks clarity on what 'active index' means, but sufficient for a diagnostic 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 descriptions cover all parameters at 100%. The tool description adds little beyond summarizing the return format; the parameter meaning is already clear from schema. Baseline 3 assigned as per guidelines.
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 reports which columns have active index coverage, aiding in identifying missing indexes. It distinguishes from sibling tools by focusing on index analysis rather than general table inspection or querying.
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 implies usage for index analysis but does not explicitly state when to use or avoid it. No mention of alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_rowsA
Return the row count for a table, optionally filtered by a WHERE clause. Use before run_query to gauge table size and decide whether to add a row limit. Returns {table, where, count}.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. | |
| where | No | Optional WHERE clause (without the WHERE keyword) to count a subset of rows. Example: 'STATUS = 0 AND CREATED_AT > ''2024-01-01'''. Omit to count all rows. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the return shape {table, where, count} but does not mention potential performance implications or whether a full scan is performed. For a simple read operation, this is acceptable but could be more transparent.
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 two sentences, no wasted words. Purpose is front-loaded, and usage guidance immediately follows. Highly 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 tool's simplicity and no output schema, the description sufficiently explains what the tool does and what it returns. It is complete enough for an agent to use 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%, but the description adds value by noting automatic uppercasing for table names and providing an explicit WHERE clause example. It also clarifies that omitting the WHERE parameter counts all rows, which adds meaning 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 returns row counts for a table with optional WHERE clause. It uses specific verb+resource and distinguishes from siblings like run_query and sample_table.
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 recommends using before run_query to gauge table size and decide on row limits. This provides clear context for when to use the tool, though it does not explicitly list when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_procedureA
Return the input and output parameter signatures for a stored procedure without reading the full PSQL body. Use this to understand how to call a procedure. Call get_procedure_source only when you need the implementation. Returns {name, input_params:[{name,type}], output_params:[{name,type}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| procedure | Yes | Procedure name from list_procedures. Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it does not read the full PSQL body, specifies the return format, and implies no side effects. However, could mention if there are any permission requirements.
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?
Three sentences, front-loaded with purpose, no redundant information.
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 two parameters and no output schema, the description is complete: explains usage scenario, alternative, and return structure.
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 covers both parameters with descriptions; description adds extra context ('Automatically uppercased' for procedure).
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 returns input/output parameter signatures for a stored procedure, distinguishing it from siblings like get_procedure_source.
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 says when to use this tool ('understand how to call a procedure') and when to use an alternative ('Call get_procedure_source only when you need the implementation').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableA
Return column definitions for a table or view. Prefer inspect_table when you also need constraints or FK relationships. Brief mode returns [{name, type, nullable}]. Full mode adds length, precision, scale, default_src, description. If unsure about column names or types, call this before writing any query or DML — do not guess schema.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Exact table or view name. Automatically uppercased. | |
| brief | No | If true, returns only {name, type, nullable}. Default false returns full column detail. | |
| filter | No | Optional case-insensitive .NET regex to filter by column name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses behavior: two modes (brief vs full) with their return fields, automatic uppercasing of table name, filter regex capability. All relevant behavioral traits are covered.
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?
Three sentences, no fluff. First sentence states purpose, second gives usage guidance, third explains return modes and advice. Every sentence earns its place.
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?
No output schema, but description explains return format for both modes and includes usage advice. Covers all parameters' effects. Could mention return is a list of column objects, but implicit. Completeness is high.
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 parameters already documented. Description adds value by explaining the meaning of 'brief' and what full mode adds, plus the automatic uppercasing behavior for table. This exceeds the baseline 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?
Description clearly states 'Return column definitions for a table or view' and distinguishes from sibling 'inspect_table' which includes constraints/FK. Verb and resource are explicit, and sibling differentiation is present.
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 says 'Prefer inspect_table when you also need constraints or FK relationships' for when not to use, and advises to call this before writing queries if unsure about schema. Clear when-to-use and when-not-to-use with alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_ddlA
Execute a single DDL statement (CREATE/ALTER/DROP TABLE, CREATE INDEX, etc.) and auto-commit. Before altering or dropping an existing object, call inspect_table or list_objects first to confirm structure. WARNING: DDL is irreversible — dropped tables and columns cannot be recovered. For multiple statements use execute_script. Returns 'DDL executed and committed.' on success.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| sql | Yes | A single DDL statement. No trailing semicolon. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It highlights key behaviors: auto-commit, irreversibility (dropped tables/columns cannot be recovered), and the fixed return message. However, it does not mention error behavior, permissions, or concurrency, which would be useful for a complete understanding.
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 two substantive sentences, a warning, and a return note. It is well-structured with front-loaded purpose, and every sentence adds crucial information 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 the tool's simplicity (2 required parameters, no output schema, no annotations), the description covers all essential aspects: purpose, prerequisites, alternatives, risks, and outcome. It is fully adequate for correct invocation.
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%, and the description adds value beyond the schema: it specifies that 'database' is a key from list_databases, and clarifies that 'sql' should be a single DDL statement with no trailing semicolon. This guidance prevents common mistakes.
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 specifies a clear verb ('Execute') and resource ('a single DDL statement'), lists specific DDL types (CREATE/ALTER/DROP TABLE, CREATE INDEX), and distinguishes from siblings by mentioning auto-commit and contrasting with execute_script for multiple statements.
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 (before altering/dropping, inspect first) and when-not-to-use (for multiple statements use execute_script). It also includes a clear warning about irreversibility, helping the agent decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_dmlA
Execute a single INSERT, UPDATE, or DELETE statement and commit. If unsure about column names or constraints, call inspect_table first — do not guess schema. Throws and rolls back on error. For multiple statements use execute_script. Returns 'Done. Rows affected: N'.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| sql | Yes | A single INSERT, UPDATE, or DELETE statement. No trailing semicolon. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool throws and rolls back on error, and specifies the exact return string format. Minor gap: no mention of any authentication or rate limits, but given the simple nature, it's sufficient.
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?
Three sentences, each adding value: first states core action, second provides cautionary advice, third handles alternative and result format. No wasted words.
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?
For a simple tool with two required parameters and no output schema, the description adequately explains behavior, error handling, and return format. It is complete given the tool's 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?
Schema coverage is 100% and both parameters have descriptions in the input schema. The description does not add additional semantics beyond the schema, so a baseline score 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 explicitly states it executes a single INSERT, UPDATE, or DELETE statement and commits. It distinguishes from sibling tools like execute_script for multiple statements and execute_ddl, and mentions the return format.
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 when-to-use guidance: call inspect_table first if unsure about schema, and for multiple statements use execute_script. This helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_scriptA
Execute multiple SQL statements separated by semicolons. Each runs in its own transaction. A failure on one statement does NOT roll back previously committed statements — there is no global rollback. Returns one status line per statement: 'OK: ...' or 'ERROR: on: ...'. For a single statement prefer execute_ddl or execute_dml.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| sqlScript | Yes | Semicolon-separated DDL or DML statements. Each is trimmed and committed independently. WARNING: already-committed statements cannot be rolled back if a later one fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes key behavioral traits: each statement runs in its own transaction, no global rollback on failure, returns per-statement status. This fully informs the agent of side effects despite no 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?
Four concise sentences front-loading critical information (purpose, transaction behavior, rollback, return format, alternative usage). No unnecessary words.
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 no output schema, the description explains return format (per-statement status lines) and covers all critical aspects for using the tool: database selection, script format, transaction isolation, and error handling.
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%, and the description repeats the schema's parameter descriptions without adding new meaning. The warning is already in the schema, so no additional value beyond baseline.
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 executes multiple SQL statements separated by semicolons, each in its own transaction, with no global rollback. It also distinguishes from sibling tools execute_ddl and execute_dml.
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 advises preferring execute_ddl or execute_dml for single statements, implying this tool is for multiple statements. The warning about no rollback guides appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_check_constraintsA
Return the CHECK constraint expressions defined on a table. GetTableConstraints only tells you a CHECK constraint exists — this tool returns the actual expression so you know what values are valid before writing INSERT or UPDATE statements. Returns [{constraint, expression}].
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format but does not mention read-only nature, permissions, or side effects. Given no annotations, the description provides basic but not comprehensive behavioral context.
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?
Two concise sentences plus return format. Every sentence adds value with no redundancy or waste.
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?
Adequately covers purpose, usage timing, and difference from sibling for a simple read tool. Lacks details on error cases or output format variations, but still sufficient.
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% with good parameter descriptions. The tool description adds no additional meaning to parameters beyond what the schema provides, so baseline score 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?
Clearly states the tool returns CHECK constraint expressions for a table, with a specific verb and resource. Distinguishes from sibling tool GetTableConstraints by noting it provides the actual expression, not just existence.
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 suggests using this tool before INSERT or UPDATE statements to know valid values. Contrasts with GetTableConstraints, but does not list cases where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_database_infoA
Return physical metadata for a Firebird database file. Returns {path, ods_major, ods_minor, page_size, pages, sql_dialect, sweep_interval}. ods_major/ods_minor indicate the Firebird engine version. sql_dialect: 1=legacy, 3=standard. pages × page_size = approximate file size in bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adequately discloses the return value structure but does not mention any side effects, permissions, or safety profile. The read-only nature is implied but not explicit.
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?
Two sentences that front-load the purpose and return fields, with no redundant information. Every sentence adds value.
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 return fields and explains key semantics (ods version, sql_dialect, file size estimation). For a simple tool with no output schema, this is nearly complete, though potential error conditions are omitted.
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% with a sufficient parameter description. The tool description adds no additional semantic value beyond the schema's 'Database key from list_databases.'
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 returns physical metadata for a Firebird database file, listing specific fields. This distinguishes it from sibling tools that focus on specific database objects (e.g., describe_table, get_foreign_keys).
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?
No explicit guidance on when to use this tool versus alternatives. It does not provide context for appropriate usage or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_distinct_valuesA
Return the distinct values of a column and how many rows contain each value, ordered by frequency. Use this to understand the range of values in a column before writing WHERE clauses or CHECK constraints. Returns [{value, count}] ordered by count descending.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. | |
| column | Yes | Column name to inspect. Automatically uppercased. | |
| limit | No | Maximum number of distinct values to return, ordered by frequency. Defaults to 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format ({value, count} ordered by count descending), automatic uppercasing of table and column, and the default limit of 20. This adequately tells the agent what to expect, though it doesn't detail authentication or side effects (which are minimal for a read operation).
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 extremely concise: two sentences covering purpose, usage, and behavior. Every sentence adds value with 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?
Despite having no output schema, the description provides the return format and details all parameters. Combined with the clear purpose and usage guidance, the description is complete for a read-only analytical 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%, so baseline is 3. The description adds meaning beyond the schema by mentioning automatic uppercasing of table and column, which is not in the schema descriptions. It also describes the return format, which compensates for the lack of an output 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 returns distinct values of a column with row counts, ordered by frequency, and specifies the use case of understanding value ranges before writing WHERE clauses or CHECK constraints. This distinguishes it from sibling tools like count_rows or sample_table.
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 states when to use the tool ('Use this to understand the range of values before writing WHERE clauses or CHECK constraints'), providing clear context. It does not explicitly mention alternatives or when not to use, but the guidance is strong for its specific purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_execution_planA
Return the query execution plan for a SELECT — shows which indexes Firebird will use. The query is prepared but never executed, so it is safe on large tables. Use before run_query to detect accidental full-table scans. Returns a plan string such as 'PLAN (TABLE NATURAL)' or 'PLAN (TABLE INDEX (IDX_NAME))'.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| sql | Yes | A SELECT statement to analyse. No trailing semicolon. DML not supported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses that the query is never executed and is safe on large tables. Includes return format examples. Missing mention of error conditions or permissions, but overall adequate.
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?
Three sentences tightly focused on purpose, safety, and usage example. No redundant information.
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?
Covers all necessary aspects: purpose, safety, usage context, return format examples, parameter constraints. No gaps given the tool's simplicity.
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 parameters are already well-documented. Description reinforces the SELECT-only constraint but adds no new parameter-specific meaning beyond 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?
Clear verb 'Return' and resource 'query execution plan' for SELECT statements. Differentiates from siblings like run_query and analyze_missing_indexes by specifying scope and safety.
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 recommends using before run_query to detect full-table scans, notes that DML is not supported, and states the query is prepared but never executed. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_foreign_keysA
Return foreign key relationships involving a table, in one or both directions. Returns [{direction, from_table, from_column, to_table, to_column, on_update, on_delete}]. Prefer inspect_table to get FKs alongside column and index information in one call. direction='out': what other tables this table depends on. direction='in': what other tables reference this table.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. | |
| direction | No | 'out' = FKs declared on this table, 'in' = FKs on other tables pointing here, 'all' (default) = both. | all |
| relatedTable | No | Optional case-insensitive .NET regex to filter by the other table name. Filters to_table for direction='out', from_table for direction='in'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It explains that table names are automatically uppercased, defines direction semantics, and describes the optional filtering by relatedTable. However, it does not mention potential errors or limitations like pagination.
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, front-loaded with purpose, and uses a clear structure including a return signature and bullet-like explanations. No unnecessary words.
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 four parameters, no output schema, and no annotations, the description covers the essential behaviors: direction semantics, auto-uppercase, and filtering. It mentions a sibling tool for context. Minor omissions like error handling do not significantly detract.
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 beyond the schema by explaining the direction parameter values and how relatedTable filtering works based on direction, aiding correct usage.
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 returns foreign key relationships involving a table, specifies the return format, and distinguishes itself from the sibling tool inspect_table by noting that inspect_table is preferred for getting FKs alongside other info.
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 tells when to use an alternative (inspect_table) and explains the meaning of direction values, providing clear guidance on how to use the tool effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_next_generator_valueA
Advance a generator (sequence) by the given increment and return the new value. Use this to obtain a primary key value before inserting a row that uses a generator-based ID. WARNING: this permanently advances the generator — the consumed value cannot be reclaimed. Returns {generator, increment, value}.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| generator | Yes | Generator name from list_generators. Automatically uppercased. | |
| increment | No | How much to advance the generator. Default 1 (get next ID). Pass 0 to read the current value without advancing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses permanent advancement, irreversibility, and automatic uppercasing of generator name. Adequate for a mutation tool.
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?
Three concise sentences: action, usage context, warning. No wasted words.
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 no output schema, description includes return format {generator, increment, value}. Covers preconditions, side effects, and parameter nuances. Complete for a simple 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?
Adds meaning beyond schema: explains default increment behavior (get next ID), increment=0 for reading, and automatic uppercasing. Schema coverage 100% but description enhances understanding.
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 verb ('advance'), resource ('generator/sequence'), and action ('return new value'). Distinguishes from siblings by specifying use case for primary key generation.
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 says use for obtaining primary key before insert. Includes warning about permanence. Could be improved by mentioning alternative increment=0 for read-only use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_procedure_sourceA
Return the full PSQL source body of a stored procedure. Call describe_procedure first if you only need to know parameters — not the implementation. Returns the raw PSQL text, or an error message if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| procedure | Yes | Procedure name from list_procedures. Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It correctly states returns raw PSQL text or error if not found. Could be more explicit about permissions or side effects, but as a read-only operation, it's adequately transparent.
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?
Two sentences with no waste. First sentence states purpose, second provides guidance and output details. Front-loaded and 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?
No output schema, but description explains exactly what is returned (raw PSQL text or error). References prerequisites (database key from list_databases, procedure name from list_procedures). Complete for this simple 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%, so baseline is 3. Description adds value by noting procedure name is automatically uppercased, which is useful behavioral detail beyond 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 returns the full PSQL source body of a stored procedure, distinguishing it from the sibling `describe_procedure` which only returns parameters. Verb 'return' and resource 'PSQL source body' are specific.
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 advises to use `describe_procedure` if only parameters are needed, not implementation. This sets clear when-to-use vs when-not-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schema_summaryA
Return a compact overview of every user table in the database: column names with types, primary key, and foreign key counts. Use this as the first step when exploring an unfamiliar database — it replaces calling list_objects + describe_table on every table. Returns [{table, columns: ["NAME:TYPE"], pk: ["COL"], fk_out, fk_in}].
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| filter | No | Optional case-insensitive .NET regex to filter by table name. | |
| limit | No | Maximum number of tables to return. Omit for all tables. Use with filter to focus on a subsection of a large schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states it returns a compact overview of user tables (not system tables) and provides return format. Slightly lacking on performance implications or auth needs, but still transparent about 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?
Three sentences: purpose+return, usage advice, return format. No wasted words; front-loaded with core action.
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?
Despite no output schema, the description includes a return format example. All 3 parameters are well-described. Covers what, when, and output structure completely for this simple 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% (all parameters described), but description adds extra meaning: filter is explicitly 'case-insensitive .NET regex', limit is 'Maximum number... Omit for all tables. Use with filter to focus subsection.' Adds significant value beyond 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 returns a compact overview of all user tables with column names/types, primary key, and foreign key counts. It distinguishes from siblings like describe_table (single table) and list_objects (listing only) by offering a consolidated summary.
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 advises use as the first step when exploring an unfamiliar database and notes it replaces calling list_objects + describe_table on every table, providing clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_constraintsA
Return constraints on a table: PRIMARY KEY, FOREIGN KEY, UNIQUE, and CHECK. Returns [{constraint, type, index}]. Prefer inspect_table to get constraints alongside columns and FKs. For full FK details (referenced columns, ON DELETE/UPDATE rules) use get_foreign_keys instead.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table name. Automatically uppercased. | |
| typeFilter | No | Optional case-insensitive .NET regex to filter by constraint type. Values: 'PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE', 'CHECK'. Omit to return all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description must disclose behavior fully. It specifies return format and constraint types, but does not mention side effects, permissions, or error conditions. Adequate but not comprehensive.
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?
Three sentences, front-loaded with main action and return format. No unnecessary words, but could be more structured.
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?
Explains return format, references sibling tools, and covers key functionality. Missing details like pagination or error handling, but sufficient for a simple constraint listing 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%, baseline 3. Description does not add extra meaning beyond schema for parameters; it only reiterates the return format.
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?
Clear verb 'Return constraints on a table' with specific types listed and return format described. Distinguishes from siblings inspect_table and get_foreign_keys.
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 states when to prefer alternatives ('Prefer inspect_table...', 'use get_foreign_keys instead'), providing clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trigger_sourceA
Return the full PSQL source body of a trigger. Returns the raw PSQL text, or an error message if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| trigger | Yes | Trigger name from list_triggers. Use just the name — NOT the ' (on TABLE)' suffix. Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns raw PSQL text or an error message if not found, implying a read-only operation. Since no annotations are provided, the description carries the full burden and adequately conveys the expected behavior without 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?
The description is extremely concise, consisting of two short sentences that front-load the core purpose and return value. Every sentence adds value with no extraneous text.
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 simplicity (2 parameters, no output schema), the description is largely complete. It covers the purpose and return format, but could mention that it complements 'list_triggers' or that the source is read-only.
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?
Description coverage is 100% in the schema, so the baseline is 3. The description does not add any additional meaning to the parameters beyond what the schema already provides, such as the formatting note for 'trigger'.
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: returning the full PSQL source body of a trigger. The verb 'Return' and resource 'PSQL source body of a trigger' are specific, and it distinguishes from sibling tools like 'get_procedure_source' or 'get_view_source'.
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 no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or how it compares to sibling tools like 'describe_table' or 'list_triggers'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_view_sourceA
Return the SELECT statement that defines a view. Returns the view source SQL, or an error message if the view is not found.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| view | Yes | View name from list_objects (type='views'). Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool returns the source SQL or an error if not found, but does not mention permissions or side effects, though none are expected.
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?
Two concise sentences with no wasted words. Information is front-loaded and easy to parse.
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?
For a simple retrieval tool with two parameters, the description adequately explains the return. No output schema exists, but the description covers expected outcomes. Could mention error format or prerequisites, but overall sufficient.
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% with descriptions for both parameters. The description adds extra value by noting that the view name is automatically uppercased, providing 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 the tool returns the SELECT statement (SQL) that defines a view, specifying the action (return), resource (view source), and distinguishes it from siblings like get_procedure_source and get_trigger_source.
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?
Usage is implied: use when you need the SQL definition of a view. However, it does not explicitly state when not to use it or mention alternatives like get_procedure_source for procedures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_tableA
Return full structural details for a single table or view in one call: column definitions, primary key, all indexes, and foreign keys in both directions. Prefer this over calling describe_table + get_table_constraints + get_foreign_keys separately. Returns {table, columns:[{name,type,nullable,default_src}], primary_key:[col], indexes:[{name,columns,unique}], foreign_keys_out:[{column,references,on_update,on_delete}], foreign_keys_in:[{from_table,from_column,on_column,on_update,on_delete}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Exact table or view name from list_objects or get_schema_summary. Automatically uppercased. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not explicitly state read-only behavior, permissions required, or error handling. While inspection is implied, an explicit safe-use note is missing.
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 two sentences: first defines purpose and components, second provides return structure. No unnecessary words, well-structured.
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?
No output schema exists, but the description provides a detailed return format. It covers key aspects but omits error handling, performance, or edge cases. Given the tool's simplicity, it is nearly complete.
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%. The description adds value beyond schema by explaining that the 'table' parameter is automatically uppercased and should come from list_objects or get_schema_summary, and 'database' from list_databases. This extra context aids correct parameter selection.
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 returns 'full structural details for a single table or view' and lists specific components (column definitions, primary key, indexes, foreign keys). It distinguishes from sibling tools like describe_table, get_table_constraints, and get_foreign_keys by promising an aggregated result.
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 recommends preferring this tool over calling multiple separate tools (describe_table + get_table_constraints + get_foreign_keys), providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_active_connectionsA
List active non-system connections to the database. Useful before running DDL or maintenance to check who is connected. Returns [{id, user, address, process, connected_at}].
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| userFilter | No | Optional case-insensitive .NET regex to filter by username. Example: 'SYSDBA' for admin connections only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return format and field names, and clarifies that only non-system connections are listed. Since no annotations are provided, the description carries the burden well by detailing the filter and output structure.
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 consists of two short sentences and a return format example, with no padding or redundancy. Every sentence adds value.
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 only 2 parameters, no output schema, and is a simple listing, the description sufficiently covers purpose, usage, parameters, and return value.
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%, and the description adds significant meaning: it explains 'database' is a key from 'list_databases' and provides a regex example for 'userFilter' with case-insensitivity and default behavior. This goes 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 active non-system connections to the database', specifying the verb (list), resource (connections), and scope (active, non-system). This distinguishes it from sibling tools like 'list_databases' or 'list_objects'.
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 says 'Useful before running DDL or maintenance to check who is connected', providing clear context. While it doesn't list alternatives or when not to use, the usage scenario is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_databasesA
List all Firebird servers and databases registered in FlameRobin. ALWAYS call this first — the 'key' in each result is required by every other tool's 'database' parameter. Returns [{key, host, port, path}].
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional case-insensitive .NET regex to filter by key, host, or path. Omit to return all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description mentions the return format (key, host, port, path) and that it's a listing operation, implying read-only. While lacking explicit behavioral traits, it does not mislead. A score of 3 is adequate for a simple listing tool with 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?
The description is two sentences, front-loading the purpose and critical usage instruction. Every sentence adds value, with no repetition or filler.
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?
Despite no output schema, the description explains the return structure. The prerequisite relationship is clarified. Given the tool's simplicity and the richness of sibling tools, this is fully sufficient.
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 documentation is 100% complete; the description adds minimal value beyond what the schema already states (the filter parameter is fully described in the schema). Baseline 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 the tool's purpose: 'List all Firebird servers and databases registered in FlameRobin.' It uses a specific verb ('list') and resource, and the sibling tools (e.g., list_objects, list_procedures) are distinct in scope, so differentiation is effective.
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 guidance is given: 'ALWAYS call this first — the key in each result is required by every other tool's database parameter.' This tells the agent when to use it and why it's prerequisite, with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generatorsA
List user-defined generators (sequences / auto-increment counters) with their current values. Returns [{name, value}].
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| filter | No | Optional case-insensitive .NET regex to filter by name. | |
| limit | No | Maximum number of results to return. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only list operation and specifies the return format, but does not explicitly state that it is non-destructive or disclose any potential side effects. Adequate but not thorough.
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?
Two sentences with no wasted words. The first sentence states the core purpose, and the second specifies the return format. Highly efficient and 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?
For a simple list tool with no output schema, the description covers the essential purpose and return format. However, it lacks details on pagination or ordering, and the behavioral transparency is somewhat lacking. Still fairly complete.
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?
Input schema has 100% description coverage for all three parameters (database, filter, limit). The description adds no additional meaning beyond what the schema already provides, so baseline score 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 uses a specific verb 'List' and resource 'user-defined generators', includes scope 'with their current values', and clearly distinguishes from sibling tools like get_next_generator_value which retrieves a single next value.
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?
No guidance on when to use this tool versus alternatives; especially missing a comparison with get_next_generator_value or other list tools. The description does not provide any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsA
List user tables, views, or both in a Firebird database. Returns object names. For a richer starting point use get_schema_summary instead. Pass individual names to inspect_table, get_table_constraints, get_foreign_keys, or get_view_source.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| type | No | Which objects to include: 'tables' (non-view relations only), 'views', or 'all' (default). | all |
| filter | No | Optional case-insensitive .NET regex to filter by object name. | |
| limit | No | Maximum number of results to return. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states that the tool returns object names, but does not explicitly confirm it is read-only, mention required permissions, or describe error handling. The silence on side effects leaves the agent uninformed.
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 consists of three concise, front-loaded sentences. The first sentence states the primary function, the second offers an alternative, and the third suggests follow-up tools. No unnecessary words.
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 4 parameters, full schema coverage, and sibling tools, the description adequately covers purpose and usage. However, it lacks details on output format, error conditions, and permissions, which are not covered by the output schema (none provided) or annotations.
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% with clear descriptions for all four parameters. The description adds no new meaning beyond what the schema already provides, so the baseline score 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 explicitly states the verb 'list' and the resources 'user tables, views, or both' in a Firebird database, clearly distinguishing its scope from sibling tools. It also mentions that it returns object names.
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 direct when-to-use guidance by suggesting get_schema_summary as a richer alternative and specifying deeper inspection tools like inspect_table, get_table_constraints, get_foreign_keys, or get_view_source for individual names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proceduresA
List all user-defined stored procedures. Returns procedure names. Call describe_procedure for parameter signatures, or get_procedure_source for the PSQL body.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| filter | No | Optional case-insensitive .NET regex to filter by procedure name. | |
| limit | No | Maximum number of results to return. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description implies a safe read-only operation by stating it lists procedures. Could explicitly mention no side effects, but adequate for a list tool.
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?
Two concise sentences: first for purpose, second for next steps. No wasted words, well structured and 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 no output schema, it tells what is returned (procedure names). Could specify return format (e.g., array), but sufficient for a list with clear parameters and sibling context.
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% with clear parameter descriptions. Description adds no extra semantic value beyond what the schema provides, so 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?
Clearly states it lists all user-defined stored procedures and specifies what it returns (procedure names). Distinguishes from siblings by directing to describe_procedure for signatures and get_procedure_source for body.
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 tells when to use this tool versus alternatives by recommending describe_procedure and get_procedure_source for additional details on parameters or body.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesA
List all roles defined in the database. Roles group privileges and are granted to users.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| filter | No | Optional case-insensitive .NET regex to filter by role name. | |
| limit | No | Maximum number of results to return. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies read-only operation but does not disclose permissions, side effects, or scope (e.g., all roles vs. user-accessible). Adequate for a simple list tool but lacking depth.
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?
Two concise sentences with no extraneous information. Efficiently communicates purpose and context.
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 simplicity and full schema coverage, the description is complete enough. It explains the nature of roles, which aids understanding in the context of sibling tools.
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% and parameters are well-described in the schema. The description does not add additional meaning beyond what the schema already provides.
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 the action (list) and resource (roles), and provides context by explaining what roles are. This distinguishes it from sibling tools like list_databases and list_procedures.
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?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, exclusions, or any scenario-based advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_triggersA
List all user-defined triggers, formatted as 'TRIGGER_NAME (on TABLE_NAME)'. To retrieve a trigger body, pass just the name (without the ' (on TABLE)' suffix) to get_trigger_source.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| filter | No | Optional case-insensitive .NET regex on the full 'TRIGGER_NAME (on TABLE)' string. Example: 'on INVOICES' to see triggers on a specific table. | |
| limit | No | Maximum number of results to return. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits like read-only, destructive potential, authorization needs, or performance implications. However, it only mentions the output format and sibling usage, leaving behavioral aspects completely undocumented.
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?
Two sentences, front-loaded with the main purpose, no redundant information. Every sentence provides essential guidance.
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?
For a simple list tool with 100% schema coverage and no output schema, the description covers the output format and sibling tool usage. However, it lacks information on ordering, pagination details beyond limit, error conditions, and safety behavior. It is minimally viable but not comprehensive.
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 100% schema coverage, the schema already documents all 3 parameters. The description adds value by explaining the output format for filter usage and providing an example regex, which clarifies parameter 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 'List all user-defined triggers', specifying the verb and resource. It distinguishes from the sibling tool get_trigger_source by explaining how to retrieve trigger bodies, making the purpose 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?
The description explicitly tells when to use this tool (listing triggers) and when to use an alternative (get_trigger_source for the trigger body), providing clear context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_queryA
Execute a read-only SELECT query and return results as row objects. If unsure about column names or types, call describe_table or inspect_table first — do not guess schema. IMPORTANT Firebird SQL differences: use 'SELECT FIRST n' or 'ROWS n' to limit rows — 'LIMIT n' is invalid. String concatenation uses '||' not '+'. Returns [{column: value, ...}] per row.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| sql | Yes | A SELECT statement in Firebird SQL. No trailing semicolon. Use 'SELECT FIRST n' or 'ROWS n' to cap rows at the SQL level. | |
| maxRows | No | Server-side row cap. Defaults to 100. Raise only when you genuinely need more rows. | |
| columns | No | Comma-separated column names to include. Omit to return all columns. Use to reduce output on wide tables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It declares the tool is read-only, mentions return format, and highlights Firebird-specific syntax. However, it doesn't detail error handling, auth requirements, or performance implications. Adequate but not exhaustive.
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?
Concise (about 100 words) and well-structured: starts with purpose, then usage guidance, then Firebird specifics. Every sentence provides useful information 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 the tool has 4 parameters and no output schema, the description covers essential aspects: purpose, return format, SQL dialect, row limiting, and prerequisite knowledge. Missing error behavior but acceptable.
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 meaningful usage tips: e.g., for maxRows 'Raise only when you genuinely need more rows' and for columns 'Use to reduce output on wide tables'. Adds value beyond 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 executes 'a read-only SELECT query' and returns results as row objects. This specificity distinguishes it from sibling tools like execute_dml, execute_ddl, and sample_table.
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 guidance: suggest using describe_table or inspect_table when unsure about schema, warns about Firebird SQL differences, and recommends row limiting techniques. Lacks explicit 'when-not-to-use' but context signals differentiate siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_tableA
Return a small sample of rows from a table without writing SQL. Use this to understand what real data looks like before writing queries or DML. Returns [{column: value, ...}] per row.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| table | Yes | Table or view name. Automatically uppercased. | |
| rows | No | Number of rows to return. Defaults to 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the basic behavior (return sample rows) and return format. Since no annotations exist, the description provides adequate behavioral info, but it could mention that the sample may not be random or ordered.
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?
Two concise sentences: first states purpose, second adds usage guidance and return format. No wasted words, 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?
For a simple tool with no output schema and 3 params thoroughly described in schema, the description covers purpose, usage, and return format adequately. Minor omission: could mention that row order is unspecified.
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 baseline is 3. The description does not add extra parameter-level details beyond the schema, but it's acceptable.
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 returns a small sample of rows from a table without writing SQL, distinguishing it from SQL-writing tools like run_query. It specifies the return format as a list of dicts, which is precise.
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 advises using this tool to understand real data before writing queries or DML, giving clear when-to-use guidance. Does not explicitly state when not to use, but it's implied for exploration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_schemaA
Search for tables or columns whose names match a pattern. Use this instead of listing all objects when you know part of a name — e.g. find every table containing 'ORDER', or every column named 'CUSTOMER_ID'. Returns {tables: ["NAME"], columns: [{table, column, type}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database key from list_databases. | |
| pattern | Yes | Case-insensitive .NET regex pattern to search for. Applied to object/column names. | |
| scope | No | What to search: 'tables' (table/view names only), 'columns' (column names only), 'all' (default, both). | all |
| limit | No | Maximum number of results per category (tables and columns each). Defaults to 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: case-insensitive .NET regex, return format with limits per category. It lacks mention of read-only nature or error conditions, but is largely transparent for a search tool.
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?
Two sentences plus a return format example, front-loaded with the core purpose. Every sentence is meaningful, no wasted words.
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?
Despite no output schema, the description explicitly shows the return structure. The tool is simple and the description covers search scope, pattern type, and result limits completely.
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 the schema fully describes each parameter. The description adds no new parameter-level detail beyond reinforcing the overall search context, meeting the baseline 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 searches for tables or columns matching a pattern, with a specific verb and resource. It distinguishes itself from sibling tools like list_objects by explicitly saying to use it when you know part of a name.
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 ('when you know part of a name') and concrete examples. It implies the alternative is listing all objects, covering selection context well.
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.
29 tool updates
v1.0.2- Changed
analyze_missing_indexes3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filterColumns / descriptionAdded value: +"Comma-separated column names to check. Omit to check all columns." - added
Input schema / properties / table / descriptionAdded value: +"Table name. Automatically uppercased."
- Added
count_rows - Added
describe_procedure - Changed
describe_table4 fields changed- added
Input schema / properties / brief / descriptionAdded value: +"If true, returns only {name, type, nullable}. Default false returns full column detail." - added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by column name." - added
Input schema / properties / table / descriptionAdded value: +"Exact table or view name. Automatically uppercased."
- Changed
execute_ddl2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / sql / descriptionAdded value: +"A single DDL statement. No trailing semicolon."
- Changed
execute_dml2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / sql / descriptionAdded value: +"A single INSERT, UPDATE, or DELETE statement. No trailing semicolon."
- Changed
execute_script2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / sqlScript / descriptionAdded value: +"Semicolon-separated DDL or DML statements. Each is trimmed and committed independently. WARNING: already-committed statements cannot be rolled back if a later one fails."
- Added
get_check_constraints - Changed
get_database_info1 field changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases."
- Added
get_distinct_values - Changed
get_execution_plan2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / sql / descriptionAdded value: +"A SELECT statement to analyse. No trailing semicolon. DML not supported."
- Changed
get_foreign_keys4 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / direction / descriptionAdded value: +"'out' = FKs declared on this table, 'in' = FKs on other tables pointing here, 'all' (default) = both." - added
Input schema / properties / relatedTableAdded value: +{ + "default": null, + "description": "Optional case-insensitive .NET regex to filter by the other table name. Filters to_table for direction='out', from_table for direction='in'.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / table / descriptionAdded value: +"Table name. Automatically uppercased."
- Added
get_next_generator_value - Changed
get_procedure_source2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / procedure / descriptionAdded value: +"Procedure name from list_procedures. Automatically uppercased."
- Added
get_schema_summary - Changed
get_table_constraints3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / table / descriptionAdded value: +"Table name. Automatically uppercased." - added
Input schema / properties / typeFilterAdded value: +{ + "default": null, + "description": "Optional case-insensitive .NET regex to filter by constraint type. Values: 'PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE', 'CHECK'. Omit to return all.", + "type": [ + "string", + "null" + ] +}
- Changed
get_trigger_source2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / trigger / descriptionAdded value: +"Trigger name from list_triggers. Use just the name — NOT the ' (on TABLE)' suffix. Automatically uppercased."
- Changed
get_view_source2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / view / descriptionAdded value: +"View name from list_objects (type='views'). Automatically uppercased."
- Added
inspect_table - Changed
list_active_connections2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / userFilterAdded value: +{ + "default": null, + "description": "Optional case-insensitive .NET regex to filter by username. Example: 'SYSDBA' for admin connections only.", + "type": [ + "string", + "null" + ] +}
- Changed
list_databases1 field changed- added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by key, host, or path. Omit to return all."
- Changed
list_generators3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by name." - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Maximum number of results to return. Omit for all.", + "type": [ + "integer", + "null" + ] +}
- Changed
list_objects4 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by object name." - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Maximum number of results to return. Omit for all.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / type / descriptionAdded value: +"Which objects to include: 'tables' (non-view relations only), 'views', or 'all' (default)."
- Changed
list_procedures3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by procedure name." - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Maximum number of results to return. Omit for all.", + "type": [ + "integer", + "null" + ] +}
- Changed
list_roles3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex to filter by role name." - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Maximum number of results to return. Omit for all.", + "type": [ + "integer", + "null" + ] +}
- Changed
list_triggers3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - added
Input schema / properties / filter / descriptionAdded value: +"Optional case-insensitive .NET regex on the full 'TRIGGER_NAME (on TABLE)' string. Example: 'on INVOICES' to see triggers on a specific table." - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Maximum number of results to return. Omit for all.", + "type": [ + "integer", + "null" + ] +}
- Changed
run_query5 fields changed- added
Input schema / properties / columns / descriptionAdded value: +"Comma-separated column names to include. Omit to return all columns. Use to reduce output on wide tables." - added
Input schema / properties / database / descriptionAdded value: +"Database key from list_databases." - changed
Input schema / properties / maxRows / defaultPrevious value: -500New value: +100 - added
Input schema / properties / maxRows / descriptionAdded value: +"Server-side row cap. Defaults to 100. Raise only when you genuinely need more rows." - added
Input schema / properties / sql / descriptionAdded value: +"A SELECT statement in Firebird SQL. No trailing semicolon. Use 'SELECT FIRST n' or 'ROWS n' to cap rows at the SQL level."
- Added
sample_table - Added
search_schema
20 tool updates
v1.0.0- First observed
analyze_missing_indexes - First observed
describe_table - First observed
execute_ddl - First observed
execute_dml - First observed
execute_script - First observed
get_database_info - First observed
get_execution_plan - First observed
get_foreign_keys - First observed
get_procedure_source - First observed
get_table_constraints - First observed
get_trigger_source - First observed
get_view_source - First observed
list_active_connections - First observed
list_databases - First observed
list_generators - First observed
list_objects - First observed
list_procedures - First observed
list_roles - First observed
list_triggers - First observed
run_query
TDQS
Every tool has a clearly distinct purpose. Overlapping tool pairs like describe_table/inspect_table and get_table_constraints/get_foreign_keys are well-differentiated by their descriptions, and no two tools perform the same function.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., analyze_missing_indexes, execute_dml, run_query). No mixing of styles or vague verbs.
29 tools is appropriate for a comprehensive database management server. The count covers schema exploration, data manipulation, execution, and administrative tasks without being bloated or thin.
The tool set covers the full lifecycle of database interaction: schema discovery (describe, inspect, list), DML/DDL execution, querying, constraint and index analysis, and administrative utilities. Missing features like user management are peripheral to the server's core purpose.
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
A Model Context Protocol (MCP) server for Selise Blocks Cloud integration
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Fillo MCP server — provision, scaffold, publish, and query forms from your coding agent.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.3-
- AlicenseBqualityAmaintenanceA server implementing Anthropic's Model Context Protocol (MCP) for Firebird SQL databases, enabling Claude and other LLMs to securely access, analyze, and manipulate data in Firebird databases through natural language.271,62564MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides read-only access to Firebird databases, enabling LLMs to inspect database schemas and execute read-only queries.238MIT
- FlicenseAqualityDmaintenanceMCP server for ChaosLimba — provides read-only access to the Romanian language learning platform's database via the Model Context Protocol.20-
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/Michael2150/flamerobin-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server