AI connector (MCP)

Tool reference

Every tool the AI connector exposes, what it does, and which ones ask for confirmation.


This list is generated from the connector itself, so it always matches what your assistant actually sees.

Your assistant picks the tools on its own; you do not call them by name. The list is here so you know what is possible and what is not.

Public tools

Available to every signed-in caller: search and reading, plus the changelog.

get_changelogRead-only

What shipped in Polytender: new features, improvements and fixes, newest first. Does not touch the What's new badge.

Parameters (5)
  • since string
    Only entries published on or after this date (YYYY-MM-DD).
  • category "new" | "improved" | "fixed"
    Filter by category.
  • major boolean
    Only the major highlights.
  • limit integer
    Max entries (default 10).
  • locale "de" | "en"
    Language of the entries (default 'de', like the tender data).
search_tendersRead-only

Search tenders with filters: country, region, source, CPV, keywords, stage, status, deadline and value.

Parameters (17)
  • query string
    Keyword matched against the tender title (case-insensitive substring).
  • country string[]
    ISO country codes, e.g. ["DEU","AUT"]. Note: the corpus stores ISO-3 for most sources.
  • source "TED_EU" | "SAM_GOV" | "UK_CONTRACTS_FINDER" | "UK_FIND_A_TENDER" | "AT_KDQ" | "AT_KDQ_XML" | … (41 values)[]
    Restrict to specific source portals.
  • cpvDivision string[]
    Two-digit CPV division filters, e.g. ["45"] construction, ["72"] IT services.
  • stage "tender" | "award" | "planning" | "amendment" | "cancellation" | "other" | "all"
    Notice lifecycle stage. Default 'tender' = biddable calls for competition. 'award' = contract award notices.
  • status "open" | "soon" | "closed" | "unknown"
    For stage 'tender' only: 'open' = deadline in the future, 'soon' = closing within 14 days, 'unknown' = no deadline published.
  • publishedSince string
    Only notices published on/after this date (YYYY-MM-DD or ISO datetime).
  • deadlineFrom string
    Only notices whose submission deadline is on/after this date (YYYY-MM-DD).
  • valueMin number
    Minimum contract value (in the notice currency, mostly EUR).
  • buyer string
    Case-insensitive substring match on the buyer/contracting-authority name.
  • lotGroup string
    Lot family id (the `lotGroupId` on a result). Returns every notice that is a lot of the SAME procurement. These are NOT duplicates: each lot is awarded and bid for separately, so evaluate them individually.
  • regions string[]
    Region filter: NUTS prefixes ("DE2" = Bayern, "AT13" = Wien, "DE" + digits at any depth) or synthetic US state codes ("USCA"). OR-ed with `country`. Coverage is ~100% on TED-fed countries but only ~73% in Germany, so for "all of Germany" use country, not a region.
  • keywords string[]
    Full-text terms or phrases matched in title AND description (OR-ed; a multi-word entry is a phrase), e.g. ["SAP", "Microsoft 365"]. Complements `query`, which only matches the title.
  • cpv string
    Exact 8-digit CPV code (use lookup_cpv to find it). Finer than cpvDivision.
  • includeUnclassified boolean
    With cpvDivision/cpv: also return notices that carry no CPV code at all.
  • page integer
    Page number (default 1).
  • limit integer
    Results per page (default 20, max 50).
get_tenderRead-only

Everything we hold on one tender: description, buyer contact, dates, classifications and the source link.

Parameters (3)
  • id stringrequired
    The Polytender tender id (UUID).
  • include "documents" | "lifecycle" | "raw"[]
    Extra blocks to include. 'documents' = the attached procurement documents IF already cached (otherwise a hint to call get_tender_documents, which may hit the source portal). 'lifecycle' = every notice about this procurement across sources and stages (planning → tender → award), oldest first. 'raw' = the untouched payload as published by the source portal (large; only when the shaped fields are not enough).
  • descriptionMaxChars integer
    Truncate the description to this many characters. Default 20000; at most 40000 (0 = that maximum). A `descriptionNote` says when it was shortened.
get_tender_documentsRead-only

The list of procurement documents attached to a tender, with a note when a portal requires a login.

Parameters (3)
  • id stringrequired
    The Polytender tender id (UUID).
  • offset integer
    Index of the first document to return (default 0). `pagingNote` gives the next offset when more exist.
  • limit integer
    Documents per call (default 40, max 80).
read_tender_documentRead-only

The text inside one document, addressed by its position in the document list. Paged for long files.

Parameters (5)
  • id stringrequired
    The Polytender tender id (UUID).
  • index integerrequired
    Position of the document in the list returned by get_tender_documents.
  • zipEntry string
    For ZIP archives: the name of the entry to read (from the `entries` list).
  • offset integer
    Start reading at this character offset (use `nextOffset` from the previous page).
  • maxChars integer
    Characters to return (default 20000, at most 40000; 0 = that maximum). Longer documents are paged.
semantic_searchRead-only

Search by meaning instead of exact words, across languages. Good for "something like X" questions.

Parameters (3)
  • query stringrequired
    What the user is looking for, in natural language (any language).
  • country string[]
    Optional ISO country codes to restrict results.
  • limit integer
    Max results (default 10).
get_facetsRead-only

The country and source codes that actually occur in the data, plus open and closing-soon counts.

lookup_cpvRead-only

Find CPV codes by text or code prefix, and resolve a code to its label.

Parameters (3)
  • query string
    Free text ("Gebäudereinigung", "software") or a code prefix ("4521"). Up to 20 hits.
  • codes string[]
    Codes to resolve to labels (label is null for codes not in the catalog).
  • lang "de" | "en"
    Label language (default de).
lookup_companyRead-only

The award history of a company by name: what it won, where, and when it last won.

Parameters (1)
  • name stringrequired
    Company name or a distinctive part of it.
list_sourcesRead-only

Every portal we aggregate, with its tender count and when it was last synced.

Organization tools

Available with a personal API key, or with an OAuth connection that was granted organization access. These act on your organization's search profiles, members and plan, and on your personal favorites and alerts. Member management follows the same roles as the app: inviting needs owner or admin, changing a role needs the owner.

When the organization has no active plan (trial ended, subscription ended), the assistant only sees get_subscription_status and get_changelog until a plan is chosen in the app.

get_subscription_statusRead-only

Your organization's plan: trial or active, days left, seats and search profiles used vs included, renewal date, and who may change it.

list_search_profilesRead-only

Your organization's search profiles with a summary of their matches.

get_search_profile_matchesRead-only

The stored ranked matches of one search profile. Fast, because nothing is re-run.

Parameters (1)
  • id stringrequired
    The search profile id (from list_search_profiles).
refresh_search_profile

Re-run the match for one search profile. Limited to once per profile per day.

Parameters (1)
  • id stringrequired
    The search profile id (from list_search_profiles).
match_companyRead-only

Find winnable tenders for your company. Uses your saved profile when no website is given.

Parameters (1)
  • website string
    Company website URL of an existing search profile. Omit to use the organization's newest profile.
get_search_profileRead-only

The definition of one search profile: countries, regions, keywords, CPV codes and negative keywords.

Parameters (1)
  • id stringrequired
    The search profile id (from list_search_profiles).
update_search_profile

Rename a search profile or change its countries, regions, keywords and CPV codes. Does not re-run the match.

Parameters (5)
  • id stringrequired
    The search profile id.
  • name string
    New display name.
  • country string[]
    Target countries as ISO-2 codes (["DE","AT"]); ["ALL"] = worldwide; [] = Europe default (only when no regions are set). OR-ed with regions.
  • regions string[]
    Target regions as NUTS prefixes or synthetic US state codes (["DE2","AT13","USCA"]); [] clears. OR-ed with country.
  • refinements object
preview_company_profileRead-only

Read a website and show the profile we would derive from it, without saving anything.

Parameters (2)
  • website stringrequired
    Company website URL.
  • lang "de" | "en"
    Language for CPV labels (default de).
create_search_profile

Create a search profile from a website, or manually from a summary, keywords and CPV codes, and run the first match.

Parameters (6)
  • website string
    Company website URL. Omit to create a MANUAL profile from `name` + `refinements` only (no crawl).
  • name string
    Display name (default: the website). REQUIRED when no website is given.
  • country string[]
    Target countries as ISO-2 codes; ["ALL"] = worldwide; omit = Europe.
  • regions string[]
    Target regions as NUTS prefixes / US state codes ("DE2", "USCA"). OR-ed with country.
  • refinements object
    Overrides for the crawled profile (each key replaces the crawled value). REQUIRED, with at least one of summary/keywords/cpvCodes, when no website is given.
  • allowDuplicate boolean
    Create even if a profile for this website already exists.
delete_search_profileAsks for confirmation before it acts

Archive a search profile. Asks for confirmation first.

Parameters (2)
  • id stringrequired
    The search profile id (from list_search_profiles).
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
explain_matchRead-only

Why one tender ended up in a match list: region gate, CPV hits, keyword hits.

Parameters (3)
  • profileId stringrequired
    The search profile id.
  • tenderId stringrequired
    The tender id of the match (from get_search_profile_matches).
  • lang "de" | "en"
    CPV label language (default de).
dismiss_matchAsks for confirmation before it acts

Hide one match and optionally teach the profile why. Asks for confirmation first.

Parameters (6)
  • profileId stringrequired
    The search profile id.
  • tenderId stringrequired
    The tender id of the match to dismiss.
  • negativeKeywords string[]
    Terms to add as hard excludes to the profile.
  • removeKeywords string[]
    Positive keywords to remove from the profile (as listed by explain_match `profileKeywords`).
  • removeCpvCodes string[]
    CPV codes to remove from the profile.
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
undo_match_feedback

Undo a dismissal, including the profile edits it made.

Parameters (3)
  • profileId stringrequired
    The search profile id.
  • tenderId stringrequired
    The tender id that was dismissed.
  • feedbackId stringrequired
    The feedbackId returned by dismiss_match.
list_bookmarksRead-only

Your starred tenders and private notes, filterable by status, source, country and text.

Parameters (9)
  • scope "org" | "all"
    'org' (default) = active organization only; 'all' = all of the user's organizations.
  • tab "starred" | "noted"
    'starred' (default) or 'noted' (has a private note).
  • status "open" | "closingSoon" | "expired"
    Filter by submission deadline.
  • query string
    Text search over note, title and buyer.
  • source "TED_EU" | "SAM_GOV" | "UK_CONTRACTS_FINDER" | "UK_FIND_A_TENDER" | "AT_KDQ" | "AT_KDQ_XML" | … (41 values)
    Restrict to one source portal.
  • country string
    Country code as stored on the tender (ISO-2 or ISO-3 depending on source).
  • sort "starredAt" | "deadline"
    'starredAt' (default, newest first) or 'deadline' (soonest first).
  • page integer
  • limit integer
    Rows per page (default 25, max 50).
bookmark_tender

Star a tender so it shows up in your favorites.

Parameters (1)
  • tenderId stringrequired
    Polytender tender id (UUID from search_tenders, semantic_search or a search profile match).
unbookmark_tender

Remove the star from a tender. A note on it is kept.

Parameters (3)
  • tenderId stringrequired
    Polytender tender id.
  • organizationId unknown
    Only for rows outside the active organization: the row's organization id (null = deleted organization).
  • workspaceId unknown
    Deprecated alias of organizationId.
set_tender_note

Add to or replace your private note on a tender. Only you can see it.

Parameters (5)
  • tenderId stringrequired
    Polytender tender id.
  • note stringrequired
    The note text (plain text).
  • mode "append" | "replace"
    'append' (default) or 'replace'.
  • organizationId unknown
    Only for rows outside the active organization (then mode must be 'replace').
  • workspaceId unknown
    Deprecated alias of organizationId.
track_tender

Track a tender: email and in-app updates when the deadline moves, documents or Q&A change, or it is cancelled or awarded.

Parameters (1)
  • tenderId stringrequired
    Polytender tender id (UUID from search_tenders, semantic_search or a search profile match).
untrack_tender

Stop tracking a tender. Past updates stay in your feed.

Parameters (1)
  • tenderId stringrequired
    Polytender tender id.
list_tracked_tendersRead-only

The tenders you track, soonest deadline first, with days left and the latest update.

get_notification_settingsRead-only

Which emails you receive: the account switch, the per-organization switch and your daily alerts.

set_daily_alertsAsks for confirmation before it acts

Subscribe to or unsubscribe from the daily email for one search profile. Unsubscribing asks for confirmation.

Parameters (5)
  • profileId stringrequired
    The search profile id.
  • organizationId string
    Only for a profile in another organization (see get_notification_settings).
  • workspaceId unknown
    Deprecated alias of organizationId.
  • enabled booleanrequired
    true = receive the daily alert email, false = stop it.
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
set_digest_enabledAsks for confirmation before it acts

Turn the digest on or off for your whole account or one organization. Turning it off asks for confirmation.

Parameters (5)
  • level "account" | "organization" | "workspace"required
    'account' = master switch, 'organization' = one organization's digest ('workspace' is the deprecated spelling).
  • organizationId string
    For level 'organization': the organization id (default: the active one).
  • workspaceId unknown
    Deprecated alias of organizationId.
  • enabled booleanrequired
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
get_organizationRead-only

The organization the connector is acting in: name, member count and your role in it.

list_membersRead-only

The members of your organization with their role and when they joined.

list_pending_invitationsRead-only

Invitations that were sent but not yet accepted, with who sent them and when they expire. Each one holds a seat.

invite_memberAsks for confirmation before it acts

Invite someone to your organization by email. Owners and admins only; asks for confirmation first because it sends an email and uses a seat.

Parameters (3)
  • email stringrequired
    Email address of the person to invite.
  • role "admin" | "member"
    Role they get on joining (default 'member'). Admins can invite and manage people.
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
cancel_invitationAsks for confirmation before it acts

Revoke a pending invitation and free its seat. Owners and admins only; asks for confirmation first.

Parameters (2)
  • invitationId stringrequired
    The invitation id (from list_pending_invitations).
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
update_member_roleAsks for confirmation before it acts

Change a member's role. Owner only; promoting someone to owner transfers ownership. Asks for confirmation first.

Parameters (3)
  • memberId stringrequired
    The member id (from list_members — not the user id).
  • role "owner" | "admin" | "member"required
    The new role.
  • confirm boolean
    Set to true ONLY after the user explicitly confirmed the preview returned by a previous call of this tool. Never set it on the first call.
get_lot_familyRead-only

All lots of one procurement as one series, from a lot group id or any tender id in it.

Parameters (2)
  • lotGroupId string
    The lot group id from a search result or get_tender.
  • tenderId string
    A tender id instead: its lot series is resolved for you.

Reading the table

  • Read-only tools never change anything.
  • Asks for confirmation means the tool refuses to act on the first call and returns a preview instead, see Safety, confirmations and fair use.
  • Parameter names and values are always English, in both languages of these docs, because that is what the assistant sends.
Was this page helpful?

On this page