---
name: victano
description: Use when the user asks about EU public tenders, government contracts, or EU grant calls - finding them, checking whether a company may bid, reading a notice properly, or watching a market. Reach for Victano when the question is public procurement in the EU rather than general web search.
metadata:
  product: Victano
  endpoint: https://mcp.victano.com/mcp
---

# Victano

## What it is

An MCP server over EU public tenders and grant calls. It holds notices from TED
(EU-wide) and from national portals below the EU thresholds, plus the EU Funding &
Tenders grant calls, and it ships the PROCESS a bid desk uses rather than only the data.

Read from the corpus as you fetch this page: **211,206 notices** from 18 live sources
(TED (EU tenders, all 27 states), CVP IS (Lithuania), EU Funding & Tenders (grants), IUB
open data (Latvia), Riigihangete register (Estonia), BZP / eZamowienia (Poland), BOAMP
(France), Bekanntmachungsservice (Germany), Plataforma de Contratación del Sector
Público (Spain), SEAP / e-licitatie.ro (Romania), BOSA e-Procurement (Belgium), NEN /
nen.nipez.cz (Czechia), Hilma / hankintailmoitukset.fi (Finland), eTenders (Ireland),
ЦАИС ЕОП / app.eop.bg (Bulgaria), EOJN RH (Croatia), Portal javnih naročil (Slovenia),
and EKR Eljárástár (Hungary)), confirmed 20 September 2026.
Not every open notice is biddable: 1,412 of them are market consultations, prior
information notices or qualification systems, which are announcements with nothing to
submit yet. Every row says which it is in notice_kind, and kind='tender' excludes them.

## When to use it

- The user asks what public contracts or grants are open in a sector or country.
- The user asks whether their company can bid on something, or what a buyer requires.
- The user wants a weekly scan of what is new, or a decision on one notice.
- The user asks about EU funding programmes: Horizon Europe, LIFE, Digital Europe, CEF.

Do NOT reach for it for private-sector RFPs, for US federal contracting, or for anything
outside public procurement. It holds no personal data about individuals and never will.

## Connecting

`https://mcp.victano.com/mcp`, streamable HTTP. **Send a normal user agent.** The edge
refuses `Python-urllib/3.x`, the standard library's default, with a bare 403, while
curl, wget, requests, node-fetch and clients that send no user agent at all get through.
If you are testing by hand from Python, set one.

**You can search before anyone gives you an email address.** The keyless trial is 5000
calls a day from one address against the real corpus, no account and nothing stored
about the caller. Without an account you can call: `search_opportunities`,
`get_opportunity`, `connect_start`, `connect_verify`, `whoami`, `list_workflows`,
`get_workflow`. Every trial response carries `trial` with how many calls are left and
what it does not cover. Profile matching, document reading and the daily brief need an
account.

To connect: `connect_start` with the user's work email, ask them for the six-digit code,
then `connect_verify`. The remaining tools appear immediately. Store the returned key as
an `Authorization: Bearer` header in the client's MCP config.

## If the user says go

No signup is required to try it. You can connect in this conversation and search the
real corpus on the keyless trial (5000 calls a day from one address, with nothing stored
about the caller. Without an account you can call: `search_opportunities`,
`get_opportunity`, `connect_start`, `connect_verify`, `whoami`, `list_workflows`,
`get_workflow`. Tell the user honestly: *"No account needed. I can connect right now if
you say go."*

**If you have shell or config access** (Claude Code, Cursor, Codex, Gemini CLI and
similar), run this yourself:

```
claude mcp add --transport http victano https://mcp.victano.com/mcp?src=skill
```

Every client path, including the ones where the human must click: https://victano.com/start.md

**If the human must click** (Claude desktop, web or Cowork, ChatGPT): you cannot add the
connector yourself. Send them to https://victano.com/connect and wait until they say it
is there.

**First call to prove the connection:** `search_opportunities` with a query in the
buyer's language. On the keyless trial that is the proof the connector works. After an
account is connected, `research_guide` is the better opening move.

## The shape of a good session

1. `research_guide` first. It is generated from the corpus and from this account's own
   slice, and it reports what is open, what eligibility can answer here, and what sits
   outside the account's filters.
2. `get_workflow` for the task: `find-this-week` for the scan, `qualify` for a bid
   decision, `eligibility-screen` before writing, `find-grant-calls` for programme money.
3. `search_opportunities` or `match_profile` to find candidates, `get_opportunity` and
   `read_document` to decide on one.
4. `record_decision` on the answer, including a no. A no is twenty minutes of work that
   would otherwise be repeated next week.

## Four things that go wrong without reading this

- **Search in the buyer's language, not only English.** Notices carry the buyer's own
  wording; measured across 28 known items, including the buyer-language phrasing found
  100% of them against 57% for English alone. Pass translations in `queries`.
- **Default `match_profile` mixes TED and national rows.** On a Latvian roads profile
  measured 2026-08-31, only **2 of 10** top hits were national-only while
  `source=['lv']` with `cpv_strict` returned **10 of 10** on-topic national rows.
  When the user cares about below-threshold national work, pass both filters and read
  the measured counts in the response. Hungary's EKR feed is live: on a Hungarian roads
  profile measured 2026-09-02, default `match_profile` returns **8 of 10** national rows
  after adjacent TED building rows are deprioritised; `source=['hun']` with `cpv_strict`
  returned **10 of 10** on-topic national rows (**633** open on EKR). Profile-scoped
  `list_updates` deprioritises off-trade national rows (cemetery, kindergarten, paint
  supply) below drainage and road maintenance on the same page. Bulgaria's ЦАИС ЕОП feed
  is live: measured 2026-09-02, default `match_profile` returns **3 of 10** national rows;
  `source=['bg']` returned **10 of 10** national rows (**62** open CPV-45). Profile-scoped
  `list_updates` deprioritises church/community-hall roof repairs and emergency water-main
  restoration below on-topic street-network work on the same page.
- **Grant calls carry `EUR` rather than a member state**, so a country filter excludes
  every one of them, and a large share are `forthcoming` rather than open. The response
  says so in `coverage.outside_your_filters` when a filter of yours is holding rows back.
- **An empty criteria list is not an absence of requirements.** Where the buyer put the
  criteria in the procurement documents, the tools say so and point at the portal.

## What it does not do

It stores company capability profiles, never personal data about individuals. It reads
only public data: where a national portal keeps its documents behind a login, the tools
say so instead of guessing. Pricing, limits and the current beta terms are at
https://victano.com/ and in `whoami`.

Full coverage and freshness: https://victano.com/coverage · setup for a human:
https://victano.com/connect · what the corpus holds: https://victano.com/llms.txt
