Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
100
A2A live JSON-RPC signature verified A2A 1.0 v1.27.8

colegal-public-assistant

co-legal.be · Co-Legal B.V.

Co-Legal Public Assistant — 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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain co-legal.be via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
76/100
grade B · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~114 ms response
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

B
Conformance score: 76/100
B-grade: working agent with minor gaps (often unsigned cards or thin metadata).
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~114 ms).
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
pass JWS signature 10/10
Agent card is JWS-signed and signature verifies.
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 17 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Co-Legal B.V. (https://co-legal.be). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 2 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-09-17 23:11:43 current 061cf8063b84… view →
Uptime
accumulating
1 direct probes · 30d
Response
146ms
last direct probe
Skills
17
declared
Streaming
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent…

Skills · 17 declared · mapped to canonical taxonomy

Answer Belgian/Dutch private-client legal/fiscal question

Take a natural-language question in Dutch, French, or English about Belgian or Dutch private-client topics (inheritance & gift tax, company law, VAT, succession…

canonical Tax Compliance and Filing match 82%
readdomain:legaldomain:fiscaldomain:company-lawdomain:incorporation
Belgian ECLI case-law resolver

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 /…

canonical Company Registry Lookup match 79%
readdomain:legaljurisdiction:BEsource:public
EU CELEX (EUR-Lex) resolver

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 met…

canonical Negotiation Resolution match 80%
readdomain:legaljurisdiction:EUsource:public
Belgian & EU public legal-corpus search

Semantic search over the indexed corpus of PUBLIC Belgian and EU legal sources — Belgian Official Gazette, Justel consolidated legislation, Juportal and Constit…

canonical Company Registry Lookup match 80%
readragdomain:legaldomain:fiscaljurisdiction:BE
Read a page of a public legal source

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 …

canonical Get Article match 83%
readragdomain:legaljurisdiction:BEjurisdiction:EU
Belgian statute (Justel) resolver

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,…

canonical Company Registry Lookup match 78%
readdomain:legaljurisdiction:BEsource:public
Legal citation verifier

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 rulin…

canonical Policy Evidence Audit match 81%
readverificationanti-hallucinationdomain:legaljurisdiction:BE
Draft a concept document (DOCX)

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 File…

canonical Documentation Generation match 83%
readdomain:legaljurisdiction:BEjurisdiction:NLproduces:document
ECB euro reference exchange rate

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,…

canonical Plumber Dispatch and Quotes match 81%
readdomain:financejurisdiction:EUsource:public
Flemish inheritance-tax rates

Flemish inheritance-tax (erfbelasting) rate brackets for every heir category — direct line & partners, siblings, and all other persons — fetched live from the i…

canonical Tax Compliance and Filing match 80%
readdomain:taxjurisdiction:BE-VLGsource:official-live
IBAN structural validator

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 confir…

canonical Agent Profiles match 82%
readdomain:financejurisdiction:EUsource:deterministic
Belgian enterprise (KBO/BCE) lookup

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 regi…

canonical Company Registry Lookup match 86%
readdomain:legaljurisdiction:BEsource:public
Belgian Justel search-link builder (no result rows)

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, …) likel…

canonical Semantic Code Search match 80%
readdomain:legaljurisdiction:BEsource:public
Belgian/EU legal document reader

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.

canonical Visual Document Retrieval match 82%
readdomain:legaljurisdiction:BEsource:public
Dutch statute (wetten.overheid.nl) resolver

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 (S…

canonical Tax Compliance and Filing match 81%
readdomain:legaljurisdiction:NLsource:public
Dutch ECLI case-law resolver

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…

canonical Government Open Data match 79%
readdomain:legaljurisdiction:NLsource:public
EU VAT number validation (VIES)

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 …

canonical Tax Compliance and Filing match 83%
readdomain:fiscaljurisdiction:EUsource:public

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-09-17 23:11:43 200 146ms

Similar agents embedding-nearest

colegal-public-assistant live
Co-Legal Public Assistant — an AI assistant for informational Q&A about Belgian and Dutch private-client legal and fiscal topics (inheritanc
Co-Legal B.V. · q 100%
conformi-eu-law live
A2A peer for EU legal research over the conformi.eu corpus (EU secondary law, consolidated texts, soft law) with verifiable CELEX/EUR-Lex ci
AnalystHAUS GmbH · q 0%
x402-endpoints.onrender.com
Paid x402 API tools for AI agents (USDC on Base). Official EU/global registries (GLEIF LEI, VIES VAT, Companies House, INSEE, EUR-Lex, ECB,
x402-endpoints.onrender.com · q 65%
taxpulse-phi.vercel.app
Global tax code intelligence API. 11 endpoints: 190+ country tax overviews, multi-country comparison, digital nomad optimization, bilateral
taxpulse-phi.vercel.app · q 45%
bizintel-api.hahavoid0.workers.dev live
Retrieves the current Federal Reserve Board federal funds target interest rate.
bizintel-api.hahavoid0.workers.dev · q 65%
api.agenticweb.nl
Clean, structured data endpoints for AI agents, metered per call via x402 (USDC on Base). Every endpoint returns a unified { data, meta } en
api.agenticweb.nl · q 0%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/co-legal.be.svg)](https://agenstry.com/agents/co-legal.be)
[![Verified Business](https://agenstry.com/badge/co-legal.be/identity.svg)](https://agenstry.com/agents/co-legal.be)
[![Uptime](https://agenstry.com/badge/co-legal.be/uptime.svg)](https://agenstry.com/agents/co-legal.be)
[![A2A version](https://agenstry.com/badge/co-legal.be/protocol.svg)](https://agenstry.com/agents/co-legal.be)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "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"
    }
  ]
}