Skip to main content
Glama
ExaDev

document-mcp

by ExaDev

List .odb tables

odb_tables

Extract table schema and data from .odb databases, listing columns, types, and rows across HSQLDB and Firebird formats.

Instructions

Lists every table an embedded .odb database declares -- column names, types, and row data -- across every storage tier documents.js supports (HSQLDB TEXT/CACHED/BINARY script formats, Firebird gbak backups).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceYes.odb database to read. 'path' points at the .odb file on disk -- its extension is never used to infer a document format, since documents.js deliberately excludes 'odb' from DocumentFormat (an embedded database front end has no single natural target format -- tables, saved queries, and reports are three unrelated output shapes -- see that package's own README). 'bytesBase64' carries the .odb bytes inline; its 'format' field is required by the shared hybrid input shape but unused by every odb tool.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changedv2.1.8
    • changedInput schema / properties / source / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "path": {
      -        "description": "Filesystem path to the document to read. The document format is inferred from the file extension.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "path"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "bytesBase64": {
      -        "description": "Base64-encoded document bytes.",
      -        "type": "string"
      -      },
      -      "format": {
      -        "description": "The document format of bytesBase64 -- required, since inline bytes carry no filename to infer it from.",
      -        "enum": [
      -          "docx",
      -          "pptx",
      -          "xlsx",
      -          "odt",
      -          "odp",
      -          "ods",
      -          "odg",
      -          "odf",
      -          "markdown",
      -          "pdf"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "bytesBase64",
      -      "format"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "path": {
      +        "description": "Filesystem path to the document to read. The document format is inferred from the file extension.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "bytesBase64": {
      +        "description": "Base64-encoded document bytes.",
      +        "type": "string"
      +      },
      +      "format": {
      +        "description": "The document format of bytesBase64 -- required, since inline bytes carry no filename to infer it from.",
      +        "enum": [
      +          "docx",
      +          "pptx",
      +          "xlsx",
      +          "odt",
      +          "odp",
      +          "ods",
      +          "odg",
      +          "svg",
      +          "odf",
      +          "csv",
      +          "markdown",
      +          "pdf"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "bytesBase64",
      +      "format"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Addedv1.1.6

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it delivers: it discloses read-only enumerative behavior (lists), the output constituents (column names, types, row data), and, most valuably, the compatibility matrix across HSQLDB TEXT/CACHED/BINARY and Firebird gbak formats — the main behavioral complexity. It could have added performance caveats (e.g., row data volume) or return-structure details given no output schema exists, but for a benign listing tool the transparency is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with efficient front-loading: the action verb and object come first, followed by em-dash-delimited detail on return contents, and a parenthetical specifying the format scope. Every element earns its place; no filler or redundancy. Exemplary economy of language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the key gaps: return contents (columns, types, data) and cross-format behavior. The parameter is handled comprehensively by the schema. The only deduction is for the cryptic 'storage tier documents.js supports' phrasing — an agent may not know what documents.js is or what a storage tier means without broader context, and a few words on return structure (per-table grouping?) would have completed the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the source parameter's hybrid path/bytesBase64 shape is documented exhaustively, including the subtle note that 'format' is required but unused for odb tools. Per the high-coverage baseline, the description need not repeat parameters, and it doesn't; the schema is the workhorse here. No additional parameter meaning in the description text itself, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource structure: 'Lists every table an embedded .odb database declares', with explicit detail on the output (column names, types, row data) and scope ('across every storage tier'). This clearly distinguishes it from siblings like odb_query (querying), odb_to_csv/odb_to_xlsx (format conversion), and odb_forms/odb_reports (document generation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'across every storage tier documents.js supports' implies this is the comprehensive table-listing tool, and the format list (HSQLDB, Firebird gbak) gives contextual scope. However, there is no explicit when-to-use vs alternatives guidance, and given siblings like odb_query and odb_to_csv exist, explicit differentiation with named alternatives would have pushed this higher. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

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/ExaDev/document-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server