Skip to main content
Glama

about

Read-only

Verify data coverage, currency, and content basis for EU regulations like GDPR, AI Act, and DORA before relying on query results.

Instructions

Server metadata, dataset statistics, freshness, and provenance. Call this to verify data coverage, currency, and content basis before relying on results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The `getAbout` function is the core handler for the 'about' tool. It queries the database for dataset statistics (like record counts and freshness) and combines them with server context (version, build information) to return a structured 'AboutResult' object detailing the server and dataset state.
    export async function getAbout(
      db: DatabaseAdapter,
      context: AboutContext
    ): Promise<AboutResult> {
      // Run all count queries in parallel
      const [
        regulationsResult,
        articlesResult,
        recitalsResult,
        definitionsResult,
        controlMappingsResult,
        applicabilityResult,
        evidenceResult,
        freshnessResult,
      ] = await Promise.all([
        db.query('SELECT COUNT(*) as count FROM regulations'),
        db.query('SELECT COUNT(*) as count FROM articles'),
        db.query('SELECT COUNT(*) as count FROM recitals'),
        db.query('SELECT COUNT(*) as count FROM definitions'),
        db.query('SELECT COUNT(*) as count FROM control_mappings'),
        db.query('SELECT COUNT(*) as count FROM applicability_rules'),
        db.query('SELECT COUNT(*) as count FROM evidence_requirements').catch(() => ({ rows: [{ count: 0 }] })),
        db.query('SELECT COUNT(*) as entry_count, MAX(last_fetched) as last_checked FROM source_registry').catch(() => ({ rows: [{ entry_count: 0, last_checked: null }] })),
      ]);
    
      const counts: Record<string, number> = {
        regulations: Number(regulationsResult.rows[0].count),
        articles: Number(articlesResult.rows[0].count),
        recitals: Number(recitalsResult.rows[0].count),
        definitions: Number(definitionsResult.rows[0].count),
        control_mappings: Number(controlMappingsResult.rows[0].count),
        applicability_rules: Number(applicabilityResult.rows[0].count),
        evidence_requirements: Number(evidenceResult.rows[0].count),
      };
    
      const freshnessRow = freshnessResult.rows[0] as { entry_count: number; last_checked: string | null };
    
      return {
        server: {
          name: 'EU Regulations MCP',
          package: '@ansvar/eu-regulations-mcp',
          version: context.version,
          suite: 'Ansvar Compliance Suite',
          repository: 'https://github.com/Ansvar-Systems/EU_compliance_MCP',
        },
        dataset: {
          fingerprint: context.fingerprint,
          built: context.dbBuilt,
          jurisdiction: 'EU',
          content_basis:
            'EUR-Lex consolidated texts with amendments applied as of build date. ' +
            'Original OJ text used where no consolidation exists (e.g., DORA RTS/ITS). ' +
            'Not an official legal publication.',
          counts,
          freshness: {
            last_checked: freshnessRow.last_checked,
            check_method: 'Daily EUR-Lex RSS + version comparison',
            source_registry_entries: Number(freshnessRow.entry_count),
          },
        },
        provenance: {
          sources: ['EUR-Lex', 'UNECE'],
          license:
            'Apache-2.0 (server code). EU legal documents reusable under EUR-Lex reuse policy; ' +
            'editorial content under CC BY 4.0.',
          authenticity_note:
            'Only documents published in the Official Journal of the EU are deemed authentic ' +
            '(Article 297 TFEU). This dataset is derived from EUR-Lex and should be verified ' +
            'against official publications for legal purposes.',
        },
        security: {
          access_model: 'read-only',
          network_access: false,
          filesystem_access: false,
          arbitrary_execution: false,
        },
      };
    }
Behavior4/5

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

Annotations confirm readOnlyHint=true. The description adds valuable context about what specific information is returned (freshness, provenance) and the verification use case, going beyond the binary safety flags. Does not contradict annotations.

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

Conciseness5/5

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

Two sentences with zero waste. First sentence front-loads the core deliverables (metadata, statistics, freshness, provenance). Second sentence provides the usage context. Every word earns its place.

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

Completeness5/5

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

For a simple zero-parameter metadata tool with safety annotations, the description is complete. It compensates for the missing output schema by enumerating the return categories (metadata, statistics, freshness, provenance), providing sufficient information for an agent to decide when to invoke it.

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

Parameters4/5

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

Zero parameters present in the schema. Per the baseline rules for tools with no parameters, this scores 4. The description appropriately makes no parameter claims since none exist.

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 explicitly identifies the resource (server metadata, dataset statistics, freshness, provenance) and uses specific verbs. It clearly distinguishes this from siblings like get_article or search_regulations, which handle legal content rather than meta-information about the dataset itself.

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

Usage Guidelines4/5

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

Provides explicit when-to-use guidance ('Call this to verify data coverage, currency, and content basis before relying on results'), establishing it as a preliminary validation step. Lacks explicit 'when-not-to-use' or named alternatives, though the sibling list makes its unique meta-purpose obvious.

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

Install Server

Other Tools

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/Ansvar-Systems/eu-regulations'

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