Skip to content
Back to colegal-public-assistant

Card snapshot

co-legal.be · 2026-09-17 23:11:43 UTC · 061cf8063b8489d8549ce3b3daf7ffcab0b60855e380968e536bc2bd2075b0e0

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "colegal-public-assistant",
  "description": "Co-Legal Public Assistant \u2014 an AI assistant for informational Q&A about Belgian and Dutch private-client legal and fiscal topics (inheritance & gift tax, company law, VAT, succession planning, case-law & statute lookups). Informational only; does not provide specific legal advice. Operated by Co-Legal B.V. from the Netherlands.",
  "provider": {
    "organization": "Co-Legal B.V.",
    "url": "https://co-legal.be"
  },
  "version": "1.27.8",
  "documentationUrl": "https://agent.co-legal.be/",
  "iconUrl": "https://agent.co-legal.be/icon.svg",
  "supportedInterfaces": [
    {
      "url": "https://agent.co-legal.be/a2a/jsonrpc",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": true,
    "extendedAgentCard": true,
    "extensions": [
      {
        "uri": "https://agent.co-legal.be/a2a/extensions/tool-schema/v1",
        "description": "Per-skill JSON-Schema input parameters. v1.0 `AgentSkill` has no native `inputSchema`; this extension carries them until the spec adds first-class support.",
        "required": false,
        "params": {
          "be.ecli.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "ecli"
            ],
            "properties": {
              "ecli": {
                "type": "string",
                "description": "Belgian European Case Law Identifier. Shape: `ECLI:BE:<court>:<year>:<serial>`. Examples: `ECLI:BE:CASS:2020:ARR.20200305.1F.4` (Court of Cassation), `ECLI:BE:GHCC:2021:ARR.044` (Constitutional Court). Case-insensitive on input.",
                "minLength": 15,
                "maxLength": 80
              }
            },
            "additionalProperties": false
          },
          "eu.eurlex.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "celex"
            ],
            "properties": {
              "celex": {
                "type": "string",
                "description": "CELEX number. Shape: `<sector><year><doctype><number>`. Examples: `32016R0679` (GDPR), `32024R1689` (AI Act), `32019L0790` (DSM Copyright Directive), `62019CJ0311` (CJEU C-311/19). Case-insensitive; a `CELEX:` prefix is also accepted.",
                "minLength": 7,
                "maxLength": 30
              },
              "language": {
                "type": "string",
                "description": "Two-letter EUR-Lex language code (NL, FR, EN, DE, \u2026). Defaults to NL to match the agent's primary audience. EUR-Lex transparently falls back to another available language if the requested one isn't published.",
                "minLength": 2,
                "maxLength": 2,
                "default": "NL"
              }
            },
            "additionalProperties": false
          },
          "be.legal.corpus.search": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "query"
            ],
            "properties": {
              "query": {
                "type": "string",
                "description": "Natural-language legal question or topic, in Dutch, French or English. Semantic search \u2014 full sentences work better than bare keywords.",
                "minLength": 3,
                "maxLength": 2000
              },
              "max_results": {
                "type": "integer",
                "description": "How many source documents to return (1-25, default 6).",
                "minimum": 1,
                "maximum": 25,
                "default": 6
              },
              "sources": {
                "type": "array",
                "description": "Restrict to specific public source keys. Omit for all. Values outside the public allowlist are rejected and reported.",
                "items": {
                  "type": "string",
                  "enum": [
                    "belgisch_staatsblad_scrape",
                    "eurlex_api",
                    "fiscale_rulings",
                    "fod_financien_circulaires",
                    "grondwettelijk_hof_mbbs",
                    "juportal_scrape",
                    "justel_scrape",
                    "kbo_bedrijven",
                    "nbb_jaarrekeningen",
                    "ovb_deontologie",
                    "vlaamse_codex_api",
                    "vlabel_rulings"
                  ]
                },
                "maxItems": 12
              },
              "category": {
                "type": "string",
                "description": "Restrict to one document category.",
                "enum": [
                  "administrative_guidance",
                  "case_law",
                  "financial_filing",
                  "legislation",
                  "official_publication",
                  "registry",
                  "ruling"
                ]
              },
              "jurisdiction": {
                "type": "string",
                "description": "Restrict to one jurisdiction.",
                "enum": [
                  "belgium",
                  "eu",
                  "flanders"
                ]
              },
              "date_from": {
                "type": "string",
                "description": "Only documents dated on/after this ISO date (YYYY-MM-DD).",
                "maxLength": 10
              },
              "date_to": {
                "type": "string",
                "description": "Only documents dated on/before this ISO date (YYYY-MM-DD).",
                "maxLength": 10
              },
              "prefer_recent": {
                "type": "boolean",
                "description": "Weight recency more heavily. Use for 'recent case law' style questions; leave false when a landmark older source is fine.",
                "default": false
              }
            },
            "additionalProperties": false
          },
          "be.legal.corpus.read": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "document_id"
            ],
            "properties": {
              "document_id": {
                "type": "string",
                "description": "The `document_id` of a hit returned by `be.legal.corpus.search`. Not a URL and not a free-text title.",
                "minLength": 1,
                "maxLength": 200
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor returned as `next_cursor` by the previous page. Omit for the first page.",
                "pattern": "^[0-9]+:[0-9]+$",
                "maxLength": 50,
                "default": "0:0"
              },
              "max_chunks": {
                "type": "integer",
                "description": "Chunks per page (1-40, default 20).",
                "minimum": 1,
                "maximum": 40,
                "default": 20
              }
            },
            "additionalProperties": false
          },
          "be.legal.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "code"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Statute short-form: `BW`, `WVV`, `WIB92`, `VCF`, `WBTW`, `WBE`, `Sw`, `Ger.W`. Common aliases accepted (`Burgerlijk Wetboek`, `Strafwetboek`, etc.).",
                "minLength": 2,
                "maxLength": 40
              },
              "article": {
                "type": "string",
                "description": "Article identifier \u2014 `4.71`, `1100/4`, `215bis`. Optional; omit to get the statute's table-of-contents URL.",
                "maxLength": 24
              }
            },
            "additionalProperties": false
          },
          "legal.citation.verify": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "citation"
            ],
            "properties": {
              "citation": {
                "type": "string",
                "description": "The citation to check. Examples: `ECLI:BE:CASS:2020:ARR.20200305.1F.4`, `32016R0679`, `art. 4.71 BW`, `VB 25117`.",
                "minLength": 2,
                "maxLength": 200
              }
            },
            "additionalProperties": false
          },
          "co-legal.document.draft": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "title",
              "body_markdown"
            ],
            "properties": {
              "title": {
                "type": "string",
                "description": "Document title, shown at the top and used for the filename. Example: `Model-ingebrekestelling`.",
                "minLength": 1,
                "maxLength": 200
              },
              "body_markdown": {
                "type": "string",
                "description": "Document body in a restricted markdown subset: `#`/`##`/`###` headings, blank-line-separated paragraphs, `- `/`* ` bullets, and `**bold**` inline. Any other markup is treated as literal text.",
                "minLength": 1,
                "maxLength": 20000
              },
              "document_type": {
                "type": "string",
                "description": "Optional short slug for the filename (e.g. `nda`, `ingebrekestelling`). Defaults to a slug of the title.",
                "maxLength": 60
              }
            },
            "additionalProperties": false
          },
          "ecb.rates": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "currency"
            ],
            "properties": {
              "currency": {
                "type": "string",
                "description": "Three-letter ISO 4217 currency code, e.g. `USD`, `GBP`, `CHF`.",
                "minLength": 3,
                "maxLength": 3
              }
            },
            "additionalProperties": false
          },
          "be.fiscal.erfbelasting": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [],
            "properties": {
              "categorie": {
                "type": "string",
                "enum": [
                  "rechte_lijn_partners",
                  "broers_zussen",
                  "anderen"
                ],
                "description": "Erfgenaam-categorie. Laat leeg om alle drie de categorie\u00ebn terug te geven."
              }
            },
            "additionalProperties": false
          },
          "iban.validate": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "iban"
            ],
            "properties": {
              "iban": {
                "type": "string",
                "description": "An IBAN, with or without spaces. Example: `BE68 5390 0754 7034`.",
                "minLength": 15,
                "maxLength": 42
              }
            },
            "additionalProperties": false
          },
          "be.kbo.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "enterprise_number"
            ],
            "properties": {
              "enterprise_number": {
                "type": "string",
                "description": "Belgian enterprise number (10 digits, optionally with dots or BE prefix). Example: `0403.170.701` or `0403170701`.",
                "minLength": 10,
                "maxLength": 16
              }
            },
            "additionalProperties": false
          },
          "be.legal.search": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "keyword"
            ],
            "properties": {
              "keyword": {
                "type": "string",
                "description": "Free-text query (NL or FR). Examples: `schenkingsrechten`, `energiepremie 2026`, `auteursrechten omzetting EU-richtlijn`.",
                "minLength": 2,
                "maxLength": 120
              },
              "limit": {
                "type": "integer",
                "description": "Kept for API stability with previous scrape-based variants. Currently unused \u2014 the live Justel results are rendered client-side and not returned by this tool.",
                "minimum": 1,
                "maximum": 10
              }
            },
            "additionalProperties": false
          },
          "be.legal.read": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Direct URL of the legal document. Must belong to an official allowed domain (e.g., ejustice.just.fgov.be, eur-lex.europa.eu)."
              },
              "max_chars": {
                "type": "integer",
                "description": "Maximum number of characters to return (default 30,000, max 60,000).",
                "minimum": 1000,
                "maximum": 60000
              }
            },
            "additionalProperties": false
          },
          "nl.legal.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "code"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Dutch statute short-form or name. Examples: `BW4` (Erfrecht), `Successiewet`, `Wet IB 2001`, `Wet OB 1968`, `BW6`, `Awb`, `Sr`, `Rv`.",
                "minLength": 2,
                "maxLength": 60
              },
              "article": {
                "type": "string",
                "description": "Optional article identifier, e.g. `4:63`, `13a`, `1`. Omitted \u2192 the statute's table-of-contents URL.",
                "maxLength": 20
              }
            },
            "additionalProperties": false
          },
          "nl.rechtspraak.lookup": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "ecli"
            ],
            "properties": {
              "ecli": {
                "type": "string",
                "description": "Dutch European Case Law Identifier. Shape: `ECLI:NL:<court>:<year>:<serial>`. Example: `ECLI:NL:HR:2021:1102` (Hoge Raad). Case-insensitive.",
                "minLength": 15,
                "maxLength": 80
              }
            },
            "additionalProperties": false
          },
          "be.vies.validate": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "required": [
              "vat"
            ],
            "properties": {
              "vat": {
                "type": "string",
                "description": "VAT number with optional country prefix and punctuation. Examples: `BE0123456789`, `BE 0123.456.789`, `NL123456789B01`.",
                "minLength": 8,
                "maxLength": 18
              }
            },
            "additionalProperties": false
          }
        }
      },
      {
        "uri": "https://agent.co-legal.be/a2a/extensions/provider-metadata/v1",
        "description": "Signed vendor metadata for the agent provider: public legal-entity registration, contact address, and terms-of-service URL.",
        "required": false,
        "params": {
          "contactEmail": "ops@co-legal.be",
          "termsOfService": "https://co-legal.be/legal",
          "legalEntity": {
            "registrationNumber": "42135345",
            "registry": "KVK",
            "jurisdiction": "NL"
          }
        }
      },
      {
        "uri": "https://agent.co-legal.be/a2a/extensions/model-disclosure/v1",
        "description": "The model this agent answers with and where it is processed. Generated from the running configuration, not hand-maintained.",
        "required": false,
        "params": {
          "model": "claude-opus-5",
          "modelProvider": "Anthropic via Google Cloud Vertex AI",
          "processingRegion": "EU"
        }
      },
      {
        "uri": "https://modelcontextprotocol.io/extensions/discovery/v1",
        "description": "Model Context Protocol (MCP) endpoint \u2014 the same read-only legal/fiscal lookup tools exposed to IDE and app callers.",
        "required": false,
        "params": {
          "url": "https://agent.co-legal.be/mcp",
          "protocolVersion": "2025-11-25",
          "discoveryUrl": "https://agent.co-legal.be/.well-known/mcp.json"
        }
      }
    ]
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  ],
  "securitySchemes": {
    "apiKeyAuth": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "x-api-key",
        "description": "Optional API key for higher rate limits, sent as the `x-api-key` header. Anonymous callers are accepted within the per-IP cap."
      }
    },
    "httpBearer": {
      "httpAuthSecurityScheme": {
        "scheme": "bearer",
        "description": "The same optional API key presented as `Authorization: Bearer <key>` (RFC 6750)."
      }
    }
  },
  "securityRequirements": [
    {},
    {
      "schemes": {
        "apiKeyAuth": {
          "list": []
        }
      }
    },
    {
      "schemes": {
        "httpBearer": {
          "list": []
        }
      }
    }
  ],
  "skills": [
    {
      "id": "answer_legal_question",
      "name": "Answer Belgian/Dutch private-client legal/fiscal question",
      "description": "Take a natural-language question in Dutch, French, or English about Belgian or Dutch private-client topics (inheritance & gift tax, company law, VAT, succession) and return an informational answer with references to public sources \u2014 Belgium: VCF, WIB92, WVV, BW, Belgisch Staatsblad; Netherlands: Successiewet, Wet IB 2001, Burgerlijk Wetboek, wetten.overheid.nl. Handles multi-topic research briefs, e.g. setting up a Belgian BV/SRL: governance under the WVV, capital and contributions in cash or in kind, VAT registration, dividend withholding tax, and inheritance tax on shares when a shareholder dies. Always includes a 'not legal advice' disclaimer. Does not give specific dossier-bound recommendations. **Open to anonymous callers**, throttled per IP (per minute / hour / day). An `x-api-key` lifts the quota for higher-volume integrators.",
      "tags": [
        "read",
        "domain:legal",
        "domain:fiscal",
        "domain:company-law",
        "domain:incorporation",
        "jurisdiction:BE",
        "jurisdiction:vlaams-gewest",
        "jurisdiction:NL"
      ],
      "securityRequirements": [
        {},
        {
          "schemes": {
            "apiKeyAuth": {
              "list": []
            }
          }
        }
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ],
      "examples": [
        "Wat is de erfbelasting voor kinderen in Vlaanderen?",
        "Welk minimumkapitaal heeft een BV onder de WVV?",
        "Welke governance-regels gelden voor een kleine BV onder het WVV?",
        "Wanneer is btw-registratie verplicht voor een pas opgerichte BV?",
        "Welke roerende voorheffing geldt op dividenden van een BV, en wat is VVPRbis?",
        "Hoe wordt een BV-aandeel belast in de Vlaamse erfbelasting bij overlijden?",
        "How does the VLABEL advance-ruling procedure work for a Belgian BV?",
        "Hoe werkt de Nederlandse erfbelasting (Successiewet)?",
        "Welk artikel regelt vruchtgebruik in het Nederlandse BW?"
      ]
    },
    {
      "id": "be.ecli.lookup",
      "name": "Belgian ECLI case-law resolver",
      "description": "Parse a Belgian ECLI (European Case Law Identifier) and return canonical public lookup URLs on the EU e-Justice portal and on Juportal, plus the decoded court / year / serial metadata. Covers Court of Cassation, Constitutional Court, Council of State, immigration courts, and courts of appeal.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Wat is ECLI:BE:CASS:2020:ARR.20200305.1F.4?",
        "Geef de zoeklink voor ECLI:BE:GHCC:2021:ARR.044.",
        "Welk hof zit achter ECLI:BE:RVS:2019:ARR.245.123?"
      ]
    },
    {
      "id": "eu.eurlex.lookup",
      "name": "EU CELEX (EUR-Lex) resolver",
      "description": "Parse a CELEX number (the canonical EUR-Lex identifier) and return the official EUR-Lex landing page URL plus decoded sector / year / document-type / number metadata. Covers EU legislation, CJEU case-law and treaties.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Geef de EUR-Lex link voor de GDPR (CELEX 32016R0679).",
        "Wat is 32024R1689?",
        "Decode CELEX:62019CJ0311."
      ]
    },
    {
      "id": "be.legal.corpus.search",
      "name": "Belgian & EU public legal-corpus search",
      "description": "Semantic search over the indexed corpus of PUBLIC Belgian and EU legal sources \u2014 Belgian Official Gazette, Justel consolidated legislation, Juportal and Constitutional Court case law, the Flemish Codex, Flemish (VLABEL) and federal advance tax rulings, FPS Finance circulars, and EUR-Lex. Returns ranked passages with source, date, URL and a document_id for bounded, paginated retrieval. Public sources only: no client files, no case data, no licensed doctrine databases.",
      "tags": [
        "read",
        "rag",
        "domain:legal",
        "domain:fiscal",
        "jurisdiction:BE",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Zoek rechtspraak over vruchtgebruik bij schenking met voorbehoud.",
        "Welke VLABEL-rulings gaan over de gesplitste aankoop van vastgoed?",
        "Find Belgian legislation on the reserved portion of an estate."
      ]
    },
    {
      "id": "be.legal.corpus.read",
      "name": "Read a page of a public legal source",
      "description": "Retrieve one page of a public legal source document from the indexed corpus, by the document_id returned by `be.legal.corpus.search`. Follow next_cursor on the same corpus version until it is null to read a long source without silent truncation. Use it to ground a citation on the actual wording instead of on a search excerpt.",
      "tags": [
        "read",
        "rag",
        "domain:legal",
        "jurisdiction:BE",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Lees de eerste pagina van het arrest dat je net vond.",
        "Continue reading that VLABEL ruling with its next_cursor."
      ]
    },
    {
      "id": "be.legal.lookup",
      "name": "Belgian statute (Justel) resolver",
      "description": "Resolve a Belgian statute reference (code + optional article) to the canonical Justel source URL on ejustice.just.fgov.be. Article-level links for BW, WVV, VCF, WER, Sw and Ger.W (routed to the Justel dossier that actually contains the article). WIB92 and WBTW resolve to an overview page only \u2014 Justel publishes no article-level consolidation for them, and we do not invent a link.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Waar staat art. 4.71 BW?",
        "Geef de Justel-link voor WIB92 art. 192.",
        "Wat is de canonical-URL voor VCF 2.7.4.1.1?"
      ]
    },
    {
      "id": "legal.citation.verify",
      "name": "Legal citation verifier",
      "description": "Verify that a legal citation is real. Accepts a Belgian/EU ECLI, an EUR-Lex CELEX number, a Belgian statute article (e.g. 'art. 4.71 BW') or a Flemish tax ruling number ('VB 25117'). Returns a verdict \u2014 verified / resolvable / malformed / unsupported \u2014 the canonical source URL, and, when we hold it, the matching document from the indexed public corpus. Built for agents that want to CHECK a citation before repeating it: fabricated citations are the sharpest failure mode in legal AI. It never claims a citation does not exist \u2014 absence from our index is not evidence of absence.",
      "tags": [
        "read",
        "verification",
        "anti-hallucination",
        "domain:legal",
        "jurisdiction:BE",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Bestaat ECLI:BE:CASS:2020:ARR.20200305.1F.4 echt?",
        "Verify CELEX 32016R0679.",
        "Klopt de verwijzing naar art. 4.71 BW?"
      ]
    },
    {
      "id": "co-legal.document.draft",
      "name": "Draft a concept document (DOCX)",
      "description": "Draft a CONCEPT document (letter, model clauses, simple agreement, notice of default) and return it as a Word .docx file attached to the response as an A2A FilePart artifact. Provide a `title` and the content in `body_markdown` (a small markdown subset: `#`/`##` headings, paragraphs, `- ` bullets, `**bold**`). Stateless and isolated \u2014 no dossier, no storage, no advice; a mandatory 'concept, have a lawyer review' disclaimer is always appended.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "jurisdiction:NL",
        "produces:document",
        "output:docx"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json",
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
      ],
      "examples": [
        "Stel een model-ingebrekestelling op voor een onbetaalde factuur",
        "Maak een concept geheimhoudingsovereenkomst (NDA) in het Nederlands",
        "Schrijf een modelbrief om een overeenkomst op te zeggen"
      ]
    },
    {
      "id": "ecb.rates",
      "name": "ECB euro reference exchange rate",
      "description": "Return the official daily ECB euro reference rate `1 EUR = X <currency>` for a given currency (e.g. USD, GBP, CHF). Source: ECB eurofxref-daily feed. Read-only, free.",
      "tags": [
        "read",
        "domain:finance",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Wat is de ECB-koers EUR naar USD?",
        "1 EUR in CHF volgens de ECB"
      ]
    },
    {
      "id": "be.fiscal.erfbelasting",
      "name": "Flemish inheritance-tax rates",
      "description": "Flemish inheritance-tax (erfbelasting) rate brackets for every heir category \u2014 direct line & partners, siblings, and all other persons \u2014 fetched live from the in-force Flemish Tax Code (VCF art. 2.7.4.1.1) and parsed deterministically, never from model memory.",
      "tags": [
        "read",
        "domain:tax",
        "jurisdiction:BE-VLG",
        "source:official-live"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Wat is de erfbelasting voor kinderen in Vlaanderen?",
        "Welke tarieven gelden tussen broers en zussen?",
        "Hoeveel erfbelasting betaalt een niet-verwante erfgenaam?"
      ]
    },
    {
      "id": "iban.validate",
      "name": "IBAN structural validator",
      "description": "Validate an IBAN's structure (ISO 13616 check digits via MOD-97 + country length). Pure compute, no network. Confirms the number is well-formed; does NOT confirm the account exists or is active.",
      "tags": [
        "read",
        "domain:finance",
        "jurisdiction:EU",
        "source:deterministic"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Is IBAN BE68 5390 0754 7034 geldig?",
        "Valideer NL91ABNA0417164300"
      ]
    },
    {
      "id": "be.kbo.lookup",
      "name": "Belgian enterprise (KBO/BCE) lookup",
      "description": "Look up a Belgian enterprise by its Crossroads Bank (KBO/BCE) number. Returns commercial name, legal form, status and start date from the public enterprise registry.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Zoek KBO-nummer 0403.170.701",
        "Welke vennootschap zit achter 0888.778.965?"
      ]
    },
    {
      "id": "be.legal.search",
      "name": "Belgian Justel search-link builder (no result rows)",
      "description": "Resolve a Belgian-legal keyword to the canonical Justel search URL on `ejustice.just.fgov.be`, plus statute-hints for which codex (WIB92, VCF, WVV, BW, \u2026) likely governs the topic. Justel result-pages are JS-rendered, so this tool does NOT scrape result rows \u2014 it gives the caller a live, click-through search URL plus routing hints.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Zoek recente regelgeving over schenkingsrechten",
        "Welke codex regelt vennootschaps\u00adbelasting?",
        "Justel-zoeklink voor energiepremie 2026"
      ]
    },
    {
      "id": "be.legal.read",
      "name": "Belgian/EU legal document reader",
      "description": "Fetch and clean the full-text content of a Belgian or European legal document (HTML or PDF) from an allowed official domain URL. Capped at 30,000 characters.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:BE",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Lees https://codex.vlaanderen.be/PrintDocument.ashx?id=1023499 en geef het tarief in rechte lijn",
        "Lees https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:32016R0679 en vat artikel 1 samen",
        "Lees de wetstekst op https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=nl&la=N&cn=1804032130&table_name=wet#Art.4.71"
      ]
    },
    {
      "id": "nl.legal.lookup",
      "name": "Dutch statute (wetten.overheid.nl) resolver",
      "description": "Resolve a Dutch statute reference (code + optional article) to the canonical wetten.overheid.nl source URL. Covers Civil Code Books 1-7, inheritance/gift tax (Successiewet 1956), income tax (Wet IB 2001), VAT (Wet OB 1968), corporate tax, plus criminal / civil-procedure / administrative-law codes.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:NL",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Waar staat art. 4:63 BW (Nederlands erfrecht)?",
        "Geef de link naar de Successiewet 1956.",
        "Wet IB 2001 op wetten.overheid.nl"
      ]
    },
    {
      "id": "nl.rechtspraak.lookup",
      "name": "Dutch ECLI case-law resolver",
      "description": "Parse a Dutch ECLI and return canonical public URLs: the Rechtspraak.nl details page, the free Open Data content API (decision XML), and the EU e-Justice search, plus decoded court / year / serial metadata. Covers the Supreme Court (Hoge Raad), Council of State, courts of appeal and district courts.",
      "tags": [
        "read",
        "domain:legal",
        "jurisdiction:NL",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Wat is ECLI:NL:HR:2021:1102?",
        "Geef de link voor ECLI:NL:GHAMS:2019:1."
      ]
    },
    {
      "id": "be.vies.validate",
      "name": "EU VAT number validation (VIES)",
      "description": "Validate an EU VAT number against the public EU VIES service. Returns validity status plus, where exposed by the source Member State, the registered trade name and address.",
      "tags": [
        "read",
        "domain:fiscal",
        "jurisdiction:EU",
        "source:public"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "examples": [
        "Valideer BTW-nummer BE0403170701",
        "Is NL123456789B01 een geldig BTW-nummer?"
      ]
    }
  ],
  "signatures": [
    {
      "protected": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImNvbGVnYWwtYWdlbnQtZXMyNTYtMSIsImprdSI6Imh0dHBzOi8vYWdlbnQuY28tbGVnYWwuYmUvLndlbGwta25vd24vandrcy5qc29uIiwidHlwIjoiSk9TRSJ9",
      "signature": "Lr3mKMbYRv4GQxPfRLb4_FherZgwcgHsGjdeUhZ-sqkAxaaedsuAgbwZU_lPG1p-iGWI4U9p5M8OxFFOuHfpWQ"
    }
  ]
}