about
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
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/about.ts:42-119 (handler)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, }, }; }