Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Victano: EU tenders and grant calls

REMOTE · MCP.VICTANO.COM · SCANNED OCT 4

EU tenders and grant calls, matched to your company and qualified, inside the AI you already use

Available components

0 this week 78 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability72
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9855 tokens (~447/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage75
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 26% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Victano: EU tenders and grant calls MCP server?

Victano: EU tenders and grant calls is a hosted endpoint at https://mcp.victano.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.victano.com

# add to Claude Code
claude mcp add --transport http com-victano-victano 'https://mcp.victano.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-victano-victano": {
      "url": "https://mcp.victano.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-victano-victano": {
      "type": "http",
      "url": "https://mcp.victano.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-victano-victano]
url = "https://mcp.victano.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-victano-victano": {
      "type": "remote",
      "url": "https://mcp.victano.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-victano-victano --url 'https://mcp.victano.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-victano-victano:
    url: "https://mcp.victano.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-victano-victano": {
      "Transport": "http",
      "Url": "https://mcp.victano.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-victano-victano -t streamable-http -u 'https://mcp.victano.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-victano-victano": {
      "type": "http",
      "url": "https://mcp.victano.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 1 Oct 26 +7
    • Judged manipulation: unverified → pass ▲ security
    • Schema quality: unverified → excellent ▲ functional
  • 30 Sept 26 −7
    • Judged manipulation: pass → unverified ▼ security
    • Schema quality: excellent → unverified ▼ functional
    • “submit_feedback” reworded the description of “tool” cosmetic
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 +43
    • Authorization: fail → unverified ▼ security
    • Transport: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • Stability: unverified → pass ▲ security
    • HSTS header: fail → pass ▲ security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “connect_start” rewrote its description, which is the text the model reads security
    • Tool “connect_verify” rewrote its description, which is the text the model reads security
    • Tool “list_workflows” rewrote its description, which is the text the model reads security
    • Endpoint reachability: behind authorisation → reachable ▲ functional
    • Schema quality: 753 → 450 ▲ functional
    • Tool coverage: 0% → 9% ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • Destructive annotations: pass → 0 functional
    • New prompt “job-grant-match” functional
    • New prompt “job-bid-ready-pack” functional
    • New prompt “job-monday-pipeline” functional
    • New tool “build_profile” functional
    • New tool “delete_account” functional
    • New tool “explore_slice” functional
    • New tool “get_account” functional
    • New tool “list_decisions” functional
    • New tool “list_updates” functional
    • New tool “match_profile” functional
    • New tool “read_document” functional
    • New tool “record_decision” functional
    • New tool “remember” functional
    • New tool “research_guide” functional
    • New tool “search_multi_angle” functional
    • New tool “set_account” functional
    • New tool “submit_feedback” functional
    • New tool “survey_opportunities” functional
    • “connect_start” added an optional parameter “language” cosmetic
    • “get_opportunity” added an optional parameter “session” cosmetic
    • “get_workflow” added an optional parameter “session” cosmetic
    • “list_workflows” added an optional parameter “session” cosmetic
    • “search_opportunities” added an optional parameter “session” cosmetic
    • “whoami” added an optional parameter “session” cosmetic
    • “connect_verify” made “code” optional cosmetic
    • Tool “connect_start” changed its title: Start connecting an account → Sign in (step 1 of 2) cosmetic
  • 23 Sept 26 −43
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Authorization: unverified → fail ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.93 → unverified ▼ security
    • Transport: pass → unverified ▼ security
    • HSTS header: pass → fail ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Oct 2026 · Probed https://mcp.victano.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=victano.com CN=WE1,O=Google Trust Services,C=US 24 Aug 2026 22 Nov 2026 ECDSA 256 ECDSA-SHA256 767f27a08107be990eb08539f8c53070
SANs: victano.com, *.victano.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.victano.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
victano.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), geolocation=(), microphone=(), payment=(), usb=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.victano.com/mcp Verified 200
http (plaintext) http://mcp.victano.com/mcp HTTPS enforced 301 https://mcp.victano.com/mcp
MCP tools · 22 exposed · ~6,043 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
build_profile ~415

Stores what this company can actually deliver, which everything else matches against. Read the company's website and ask them the rest first: Victano never crawls a customer's site. Run get_workflow('build-profile') for what to gather: a vague profile produces vague matches. Fields: name/company_name, description, countries, nuts (service area), cpv_hints (cpv or cpv_divisions ok), keywords (stored in description), languages, past_contracts (stored for the bid, not searched; string or brief-shaped object OK), certifications, turnover_eur (annual_turnover_eur ok), headcount (staff_count/staff ok), exclusions, min_value_eur, max_value_eur. Only `countries`, `nuts` and `cpv_hints` narrow it. The value bounds warn on each result instead of hiding rows, and `exclusions` comes back in `your_exclusions` for you to apply.

NameTypeReqDescription
annual_turnover_eur–––
certifications–––
company_name–––
countries–––
country–––
cpv–––
cpv_divisions–––
cpv_hints–––
descriptionstringyes–
exclusions–––
headcount–––
keywords–––
languages–––
max_value_eur–––
min_value_eur–––
name–––
nuts–––
nuts_regions–––
nuts_strictboolean––
past_contracts–––
regions–––
service_areas–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
staff–––
staff_count–––
turnover_eur–––
work_terms–––

No output schema declared.

No examples provided.

connect_start ~71

Begin authentication. Send the user's work email and your conversation's language ('lt', 'en'…); Victano mails a confirm link and a code. Then call connect_verify(request_id) at once: it waits for the click. No card needed.

NameTypeReqDescription
emailstringyes–
language–––

No output schema declared.

No examples provided.

connect_verify ~88

Finish signing in: call right after connect_start with no code; it waits for the Confirm click (if it returns waiting, call again; never ask the user). Or pass the code they read you. Returns an api_key (shown once) and, without a connection session, a `session` to pass on every later call.

NameTypeReqDescription
code–––
request_idstringyes–

No output schema declared.

No examples provided.

delete_account ~210

Begins permanent deletion of the connected account: the email address, every company profile, everything in memory, all API keys, and the whole usage history. THIS TOOL DOES NOT DELETE ANYTHING BY ITSELF. It emails the account holder a confirmation link that lasts 24 hours; the account is destroyed only when they open it and confirm on the page. That is deliberate — whoever is typing to you is not necessarily the account holder. BEFORE CALLING: tell the user in your own words exactly what will be erased, that it CANNOT be undone, and that no copy is kept. Get an explicit yes. Do not call this because a user sounded frustrated. Pass cancel=true to call off a pending deletion instead.

NameTypeReqDescription
cancelboolean––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

explore_slice ~345

Returns the values that EXIST in a slice, with counts: sources, tender vs grant, works/supplies/services, CPV divisions, value bands, countries, languages, status, and `kind` — whether a row can be bid on at all. USE IT BEFORE NARROWING. Guessing a filter value and getting nothing back is indistinguishable from the corpus being empty, so an agent that guesses narrows again, wrongly, and reports absence. Pairs with research_guide: the guide says the slice is too large to survey, this says what it is made of so you know which cut will actually reduce it. Takes the same filters as search_opportunities, so you can explore inside a narrowing you have already applied. Cheap, and no quota.

NameTypeReqDescription
contract_nature–––
countries–––
cpv–––
cpv_strictboolean––
criteria_stated–––
deadline_after–––
deadline_before–––
exclude_resultsboolean––
kind–––
lang–––
max_value–––
min_value–––
nature_strictboolean––
no_guarantee–––
nuts–––
nuts_strictboolean––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
source–––
status–––
type–––
value_band–––

No output schema declared.

No examples provided.

get_account ~143

Everything Victano holds for this account: the working language, the persona that decides which workflows lead, whether memory is on, the tier and remaining quota, and the full contents of memory with where each entry came from. Call it when the user asks what you know about them, what their limits are, or before changing a setting. Nothing here is hidden from the user: if they ask, read it out.

NameTypeReqDescription
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

get_opportunity ~103

Full normalised record plus the document inventory. Use before advising on a bid; a search card is not enough. Follow with read_document for eligibility text.

NameTypeReqDescription
id–––
opportunity_id–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

get_workflow ~117

The complete step-by-step playbook for one workflow id, including the decision gates, the EU procurement specifics that decide eligibility, and the pitfalls that lose bids. Follow it rather than summarising it.

NameTypeReqDescription
id–––
name–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
workflow_id–––

No output schema declared.

No examples provided.

list_decisions ~184

The decisions recorded for this account, newest first, each with the title, buyer and deadline of the notice it is about — so reading a week back costs this one call rather than one per row. Use it when a user asks what they have already looked at.

NameTypeReqDescription
detail––'compact' (default) or 'full'.
limitinteger––
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

list_updates ~352

What is new or changed since a time (`since` or `since_days`, default 7 days). Scoped to the stored profile by default; scope='all' ranks across everything in the filters. Use it for the weekly check. Search in the notice's own language; research_guide returns the trade lexicon per country.

NameTypeReqDescription
contract_nature–––
countries–––
cpv–––
cpv_strictboolean––
criteria_stated–––
deadline_after–––
deadline_before–––
detail––'compact' (default) or 'full'.
exclude_resultsboolean––
kind–––
lang–––
limitinteger––
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
max_value–––
min_value–––
name–––
nature_strictboolean––
no_guarantee–––
nuts–––
nuts_strictboolean––
profile_id–––
scope–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
since–––
since_days–––
source–––
status–––
type–––
value_band–––

No output schema declared.

No examples provided.

list_workflows ~221

The playbook library: how bid professionals actually run this work, from the weekly scan through qualification, eligibility screening, reading a specification, clarification questions, and the proposal skeleton. READ A WORKFLOW BEFORE IMPROVISING A PROCESS. Whole jobs (`jobs`) come first. Pass persona='consultant' to see the multi-client ones. Follow with get_workflow.

NameTypeReqDescription
detail––'compact' (default) or 'full'.
limit––How many playbooks to list (jobs always lead); default all.
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
persona–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

match_profile ~353

Rank open tenders and grant calls against the company profile stored with build_profile. Use it to answer 'what fits us'; each result says why it matched (with a NUTS caveat where the region is uncertain) and `coverage` counts the slice. Profile keywords match best in the notices' own language; research_guide returns the trade lexicon per country.

NameTypeReqDescription
contract_nature–––
countries–––
cpv–––
cpv_strictboolean––
criteria_stated–––
deadline_after–––
deadline_before–––
detail––'compact' (default) or 'full'.
exclude_resultsboolean––
horizon_daysinteger––
kind–––
lang–––
limitinteger––
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
max_value–––
min_value–––
name–––
nature_strictboolean––
no_guarantee–––
nuts–––
nuts_strictboolean––
profile_id–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
source–––
status–––
type–––
value_band–––

No output schema declared.

No examples provided.

read_document ~227

Paged text for one opportunity. Ask for ONE page first: measured over the whole corpus, 95% of notices are a single page and the median holds under 600 characters, because what we store is the notice, not the tender pack. The response tells you `total_pages` and whether there is `more`; ask for the rest only when it says so. Each page is about 4000 characters, and you are charged for pages RETURNED, not pages requested. Page 1 also returns `qualification` where published: selection and award criteria, exclusion grounds and lots — on Lithuanian skelbimas apie pirkimą notices, in the buyer's language.

NameTypeReqDescription
from_pageinteger––
id–––
opportunity_id–––
page–––
pagesinteger––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

record_decision ~180

Records that this company decided about a tender, so it is not re-qualified from scratch next week. Call it whenever the user reaches a conclusion — including a NO, which is the one worth keeping, because a no is twenty minutes of work that would otherwise be repeated. decision: 'bid', 'no_bid', 'watch' or 'conditional'. reason: one of the structured reasons the tool lists. Free text is refused: pick the closest reason and say the detail to the user.

NameTypeReqDescription
decision–––
id–––
opportunity_id–––
reason–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

remember ~131

Stores a preference the user has STATED and will hold next week, from the closed list in get_account.storable_keys. Never free text and never about a person. ASK BEFORE STORING, and never store a one-off. forget=['key'] drops keys; forget=[] with nothing else drops everything.

NameTypeReqDescription
forget–––
preferences–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

research_guide ~218

Read this FIRST in a new conversation, before choosing a search strategy. It is generated from the corpus as it stands and from this account's own slice — how many notices are open in their countries today — and the advice CHANGES with that number. Eleven open tenders and four thousand are not the same problem. Also what the relevance score does and does not mean — not a confidence score. Cheap: one call, no quota. Grants: type='grant', countries=['EUR']. Also returns `lexicon`: the trade terms buyers use per country, so you can search in the notice's own language.

NameTypeReqDescription
countries–––
cpv–––
cpv_divisions–––
name–––
profile_id–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
type–––

No output schema declared.

No examples provided.

search_multi_angle ~495

Runs 2-5 phrasings of the SAME question and fuses them into one deduplicated ranking. Use it when the right wording is uncertain, which is most of the time here: buyers write in their own language and their own trade terms, so 'school renovation' and 'refurbishment of educational buildings' reach different notices. Each result carries `angles_matched`. A notice found by EVERY phrasing is a strong match; one found by a single phrasing is often a keyword coincidence and worth checking before you recommend it — a distinction you cannot recover by running the searches separately and concatenating them. Give genuinely different angles, not synonyms of one word: the trade term, the plain description, and what the buyer's own department would call it. COST, re-measured 2026-08-29: a median 0.8 s over six calls against 1.5 s for one search, and roughly the same tokens back. Worth it when the wording is genuinely uncertain, wasteful as a default, and it counts one search against your quota per angle.

NameTypeReqDescription
contract_nature–––
countries–––
cpv–––
cpv_strictboolean––
criteria_stated–––
deadline_after–––
deadline_before–––
detail––'compact' (default) or 'full'.
exclude_resultsboolean––
fieldsstring––
kind–––
lang–––
limitinteger––
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
max_value–––
min_value–––
nature_strictboolean––
no_guarantee–––
nuts–––
nuts_strictboolean––
queriesarrayyes–
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
source–––
status–––
type–––
value_band–––

No output schema declared.

No examples provided.

search_opportunities ~757

Search open public tenders and EU grant calls by subject, ranked by relevance, with filters for country, CPV, status, deadline, value and region. Use it to find notices worth a decision, then get_opportunity or read_document. Cards are compact (`summary_cut` marks a cut summary). Search in the notice's own language; research_guide returns the trade lexicon per country.

NameTypeReqDescription
contract_nature––'works', 'supplies', 'services'. Sources that publish none are included unless nature_strict=true.
countries––ISO3 ('LTU') or ISO2 ('LT'). Scope by country when you can: EU-wide is ~10x slower.
cpv––Any CPV prefix: '45', '452' or a full code. Results show cpv_labels, not codes.
cpv_divisions–––
cpv_strictboolean–Sources that publish no CPV (Lithuanian CVP notices, EU grant calls) are INCLUDED and ranked by default; true excludes them.
criteria_stated––true returns only notices whose SELECTION CRITERIA the buyer published (about half of TED).
deadline_after––ISO date.
deadline_before––ISO date.
detail––'compact' (default) or 'full'.
exclude_resultsboolean–true drops award notices for things already decided.
expand_languagesboolean––
fieldsstring–'compact' (default) or 'full' for raw codes and a longer summary. Multi-lot procurements collapse to one entry (`lots`, `lot_ids`): report it once.
kind–––
lang–––
limitinteger––
max_chars––Hard cap on the answer's size in characters (default 8000). Over it, cards shrink to the essentials, then rows are dropped from the end, and `truncated` says how to get the rest.
max_value––In EUR, converted from the buyer's currency; notices we cannot price in euros are excluded from a value filter rather than guessed at.
min_value––In EUR, converted from the buyer's currency; notices we cannot price in euros are excluded from a value filter rather than guessed at.
nature_strictboolean––
no_guarantee––true returns only notices that state no bid bond is required.
nuts––NUTS2 regions below country level ('DE30', 'LT01'); notices without a NUTS code are excluded.
nuts_strictboolean––
queries––The same question in the notices' own languages, one phrasing per country in scope; each is ADDED to `query` and fused as its own ranking. Translate the distinctive trade terms, not the sentence (res…
query––What the user is looking for, as they typed it.
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
source––'ted', 'cvp', 'ft', 'ee', 'lv', 'hun', … (research_guide lists them).
status––'open' (default), 'forthcoming' for not-yet-open, 'any' adds expired.
type––'tender' or 'grant' (use 'grant' when the user asks for grant calls).
value_band–––

No output schema declared.

No examples provided.

set_account ~200

Sets the working language ('en' or 'lt'), the persona ('supplier', 'bid-writer' or 'consultant', which decides the workflows offered first), and memory ('on', 'paused' or 'off'). ASK THE USER BEFORE CHANGING ANY OF THESE. They are the user's choices, not yours to infer: a user writing one Lithuanian sentence has not asked you to switch their working language. memory='paused' keeps what is stored but stops using it; memory='off' DELETES it immediately and cannot be undone. Say which one you are about to do before you do it.

NameTypeReqDescription
memory–––
persona–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
working_language–––

No output schema declared.

No examples provided.

submit_feedback ~645

Send feedback about Victano to the team that builds it: a bug, a wrong answer, missing data, a missing feature, a workflow idea, or praise. Every item is read by a person. When to offer it: an answer came back empty or wrong; the user corrected you or the result; a workflow was missing a step the user needed; the user repeats a manual step the service could do for them; the user says they need something the service does not do. Offer once, in one sentence; the user's task comes first. Ask first. Show the user what you will send and send it only after they agree. Their own words, and any client, case, company or personal detail, go only with their explicit OK; then set confirmed=true. With authored_by='agent' you may report your own observation of the service (the tool, what you expected, what came back) without asking, as long as it holds none of the user's words or confidential content. Fill kind and what (the task, and what went wrong or what is needed). For a wrong answer add expected and got. Add tool and query for context (the query only with the user's OK), severity, and contact_email only when the user wants a reply. The reply carries a reference id. Tell the user it reached the team; do not promise a reply or a date.

NameTypeReqDescription
authored_by––user (their words) | agent_drafted (you wrote it, they approved) | agent (your own observation)
confirmedboolean–true once the user approved sending this; required for authored_by user or agent_drafted
contact_email––Only if the user wants a reply: the address to reply to
expected––For a wrong answer: what the right answer or result would have been
got––For a wrong answer: what came back instead
kindstringyesOne of: bug (something failed or errored), wrong_answer (an answer was returned but it was wrong or misleading), missing_data (a document, record or source the user expected is not covered), missing_…
message––Older name for `what`, kept so earlier callers still work; prefer `what`
query––The query or arguments that produced it; only with the user's OK
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
severity––low | normal | high | blocking (blocking: the user cannot do their work)
tool––The tool the feedback is about, if one (e.g. the tool that answered wrongly); several: comma-separated
what––The task and what went wrong or what is needed (3-2000 characters)

No output schema declared.

No examples provided.

survey_opportunities ~472

Answers 'what is actually out there?' rather than 'what are the best few?'. Returns ONE COMPACT LINE per notice matching the filters — id, title, buyer, deadline — across the whole filtered set rather than a ranked top ten. A survey row costs about a seventh of a search result, so 150 notices here are cheaper than 25 from search_opportunities. USE THIS FIRST when the user's question is about coverage rather than about the best match: 'what is open in our sector', 'is there anything we are missing', 'how much is out there'. Then search_opportunities or get_opportunity on the specific ones worth a decision. Same filters as search_opportunities. The query is optional: with one, rows come back by relevance; without one, by soonest deadline, which is the order a worklist wants. If the scope is larger than the survey can carry, the response says so explicitly and tells you to narrow — it never silently shows you part of the picture. COST, measured 2026-08-25 so you can budget rather than guess: about 50 tokens a row against 349 for a search result. Cheaper PER ROW, not in total — 150 rows is roughly 7,600 tokens, more than a ten-result search. Ask for the breadth you will actually read.

NameTypeReqDescription
contract_nature–––
countries–––
cpv–––
cpv_strictboolean––
criteria_stated–––
deadline_after–––
deadline_before–––
exclude_resultsboolean––
kind–––
lang–––
limitinteger––
max_value–––
min_value–––
nature_strictboolean––
no_guarantee–––
nuts–––
nuts_strictboolean––
query–––
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…
source–––
status–––
type–––
value_band–––

No output schema declared.

No examples provided.

whoami ~116

The connected account: tier, persona, corpus freshness, and every limit — what is left in the current window, and the caps that do not renew. Call it when a user asks about limits, when you are unsure whether you are authenticated, or to confirm a setting took.

NameTypeReqDescription
sessionstring–The `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OA…

No output schema declared.

No examples provided.

Common questions

What is the Victano: EU tenders and grant calls MCP server?

Victano: EU tenders and grant calls is an MCP server listed in the public MCP registry as com.victano/victano. EU tenders and grant calls, matched to your company and qualified, inside the AI you already use. This page covers its hosted endpoint (https://mcp.victano.com/mcp).

Is the Victano: EU tenders and grant calls MCP server safe to use?

Victano: EU tenders and grant calls scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Victano: EU tenders and grant calls MCP server expose?

Victano: EU tenders and grant calls exposes 22 tools: connect_start, connect_verify, get_account, set_account, remember, and 17 more. Their descriptions and schemas cost roughly 6,043 tokens of context every time the server is loaded.

Does the Victano: EU tenders and grant calls MCP server require authentication?

No. We connected to Victano: EU tenders and grant calls without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Victano: EU tenders and grant calls MCP server still maintained?

Victano: EU tenders and grant calls is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.