A few months ago I was testing a hypothesis. I asked Claude 3 Opus — Anthropic's most capable model at the time — something simple: "Find me the IČO of a company headquartered at Václavské náměstí 1 in Prague with the word 'technology' in its name."
The response was polite, but the substance was: "I can't. I don't have access to current data from Czech government registers."
That conversation perfectly illustrates the paradox of today's AI models. They're extraordinarily intelligent — they write code, analyse complex texts, and carry on expert-level conversations. But when it comes to data from the real, specific world — like the Czech ARES business register, the insolvency registry, or the list of sanctioned individuals — they're blind. And that's a serious problem.
The pain called manual research
If you work in compliance, KYC (Know Your Customer), or AML (Anti-Money Laundering), you know this process intimately. Every new client, every new transaction means another round of manual work. Open five browser tabs: Justice.cz, ARES, ISIR, the VAT non-payer registry, international sanctions lists. Copy the IČO, paste it in. Check the director's name, paste it in. Click through the history, verify connections.
A single company takes an average of 20–30 minutes of careful work. When you have fifty companies to vet in a week, you're looking at dozens of hours of monotonous clicking. It's work that is critically important and simultaneously extraordinarily inefficient and prone to human error. Work that was made for automation.
But how do you automate it when language models are cut off from the source data?
The solution: a USB port for AI agents
The answer is called MCP (Model-Context Protocol). It's an open standard that Anthropic introduced last autumn, which has quickly become the de facto standard for connecting AI agents to external tools. It's now stewarded by the Linux Foundation under the AAIF (Artificial Intelligence Interoperability Foundation) project.
Think of MCP as a USB port for language models. Just as you can plug a keyboard, mouse, or printer into USB, you can "plug" any tool into Claude or ChatGPT via MCP: a company database, an internal API, or a suite of servers for accessing Czech government data.
The AI agent then knows it has a lookup_company_by_ico tool available, and when you ask it about an IČO, instead of hallucinating or apologising, it simply calls that tool.
And that's exactly what I decided to build.
First look at cz-agents: an open-source toolkit
The result is the cz-agents project. It's an ecosystem of open-source MCP servers that expose key Czech data to any AI agent that speaks the MCP protocol.
Everything is available on GitHub under the MIT licence. The open-source part currently consists of seven packages, running on cz-agents.dev and free to use with a reasonable rate limit (30 requests/minute):
@czagents/ares: Search ARES by IČO, DIČ, name, and check transparent bank accounts.@czagents/cnb: Daily CNB exchange rates for accounting operations.@czagents/sanctions: Screening against EU and OFAC sanctions lists, including fuzzy search and Cyrillic transliteration.@czagents/isir: Search the insolvency register.@czagents/adis: VAT payer reliability check.@czagents/dd: A basic due-diligence aggregator that combines ARES, ISIR, sanctions, and ADIS into a single call.@czagents/realestate: Anonymised district-level statistics on distressed properties (ISIR insolvencies + auctions) — an aggregate with k≥5 anonymity. Property detail, owner data, and bulk search are part of the hosted paidrealestate-pro(see Open-core below).
Plus 2 hosted paid add-ons — dev.cz-agents/ddplus and dev.cz-agents/realestate-pro (both listed in MCP Registry, Bearer token authentication). More in the Open-core section.
Adding these tools to your AI agent is a matter of a few lines in your config. If you use Claude.ai, for example, you just add a Custom Connector:
{
"name": "Czech Business Register (ARES)",
"description": "Lookup Czech companies by IČO (ID number) or name.",
"url": "https://ares.cz-agents.dev/mcp"
}
That's it. Your Claude just learned to work with the Czech business register.
An unexpected signal in the logs: the first organic user
I built it, put it on GitHub, and left the public endpoints running. No marketing, no announcement. I wanted to see whether there was any interest. And then it happened.
On the third of May this year, I was scanning through the server's access logs. Among the usual traffic and bot scans, I noticed something unusual. Repeated requests to the endpoint https://dd.cz-agents.dev/mcp. Source IP address: 160.79.106.x, belonging to Anthropic's load balancer. User-Agent: Claude-User.
Someone (= a single user behind Anthropic's load balancer; 4 different IP addresses within the /24 prefix means one person, not four) had found my @czagents/dd server through the official MCP Registry, added it as a Custom Connector, and started using it for real company vetting.
153 calls arrived over the previous six days. I could see progressive call sequences matching a real-world workflow: initialisation, listing available tools, then specific due-diligence queries. Access logs don't store request bodies, so I don't know the exact parameters — but the time pattern plus status codes (200 OK, no errors) suggest production usage, not an ad-hoc test.
For me, that was the strongest possible signal. Someone had exactly the problem I was trying to solve. And they found the solution organically, simply because an open standard and a public tool registry exist. No email, no advertising, no sales call. The infrastructure worked.
Why open-core? On data and algorithms
That initial success put a fundamental question in front of me: what next? Leave everything open-source and rely on sponsors, or build a sustainable business model?
I chose the path blazed by companies like Sentry, GitLab, and HashiCorp: open-core.
The idea is simple. The foundational building blocks — access to raw data from public registers and anonymised aggregates — remain and will always remain open-source (MIT). That's the seven packages I described above. You can self-host them, use my free endpoints, whatever you like.
The paid add-ons live in a closed repo, as hosted endpoints only — no self-hosting, no chance of exposing the code. Currently there are two:
ddplus.cz-agents.dev— Compliance / Agency tiers for KYC due diligence. Advanced detection of non-standard patterns in statutory bodies and ownership structures, a timeline of a company's risk events, deep analysis of connected persons across registries, continuous portfolio monitoring with email alerts on changes.realestate-pro.cz-agents.dev— Real Estate Professional / Business tiers for distressed real estate. Property detail, ownership data, and bulk search with filters (versus anonymised district statistics in the open-source version).
This model feels fair to me. I give the community valuable tools for free, and I protect my IP and revenue in areas where years of real-world compliance and real estate experience live.
A practical example: what the AI agent actually does
What does this look like in practice? Imagine a compliance officer enters the following prompt into Claude:
"Conduct a deep-dive due diligence on Acme Imports s.r.o., IČO 00000000. Focus on risks associated with the directors and ownership structure."
With ddplus connected, in roughly 15 seconds the system accomplishes what would take 30–60 minutes of manual work and skill across five different registries:
- Claude traverses public sources across all directors, shareholders, and connected companies.
- It applies advanced pattern recognition for red flags that ARES or ISIR alone wouldn't surface — typically things that start slipping past a manual researcher after twenty minutes of clicking.
- It generates a concise, human-readable report with specific findings and links to source documents.
The compliance officer sees the result in the chat as plain text — not JSON, not a table. Something like: "two of the three directors show a non-standard pattern in their history (detail below), the ownership structure leads to a company currently in active insolvency". If they want to go deeper, they click the source and verify it manually.
Second example: a real estate agent and distressed property
A real estate agent asks:
"Find me distressed properties in the Beroun district with a starting bid under 3 million CZK, preferably single-family homes, and tell me something about the owners."
With realestate-pro, Claude returns a list of available opportunities filtered by those criteria, plus a brief due diligence on the owners (a cross-check via the DD aggregator). Output: 3–5 properties with specific addresses, planned auction dates, and notes on the owner — ready for a decision, not for more clicking.
A few notes on architecture
For the technically inclined — no infra blueprint, just what's worth mentioning:
- DNS-verified namespace — so anyone can verify that the
dev.cz-agents/*servers in the official MCP Registry actually belong to me, I use a DNS-verified namespace via an ed25519 keypair (public key in a TXT record oncz-agents.dev, server manifest signed with the private key). Standard Registry practice, but worth noting — because how else can an MCP server consumer know they're calling what they think they're calling? - Open-source stack — Next.js, MCP TypeScript SDK, Stripe, Resend for transactional emails. No custom-rolled crypto, no complex cluster. A single mainstream VPS, Docker, reverse proxy. Sufficient for a solo dev model — more complex infrastructure would create more problems than it solves.
Roadmap and limits
Where to next? There are plenty of plans, but I try to keep my feet on the ground.
What I plan to do:
- Expand
realestate-prowith additional analytical tools (portfolio aggregation, property watchlists, alerts on new auctions in a district). - Cross-vertical reuse: apply the pattern detection tools from ddplus to pre-purchase property checks in realestate-pro (= vet the owner before you buy).
- Connect data across verticals (e.g. identify risks in properties owned by companies with high-risk directors).
What I consciously will NOT do (at least in the foreseeable future):
- EU expansion: I'm focusing 100% on the Czech Republic. The local legislation and data sources are complex enough to keep someone fully occupied.
- Replacing Bisnode/CRIF: My goal is not to compete with large data providers.
cz-agentsis not a database — it's a bridge. It's an integration layer that lets AI agents work with data that already exists.
Conclusion
cz-agents is an experiment. It's a bet that the future of software lies not just in prettier UIs, but in intelligent agents that handle the boring, repetitive work for us. And to do that, they need eyes and ears — they need access to real-world data.
If this project caught your attention, whether you're a compliance professional or an AI engineer, go explore it.
- All open-source packages are on github.com/martinhavel/cz-agents-mcp.
- Documentation and an overview of all tools are at cz-agents.dev.
- The full offering including Compliance / Agency / Real Estate tiers is at cz-agents.dev/pricing.
There's no "Buy Now" button here. There's an invitation to explore. If it makes sense to you, you know where to find me.