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-onlyWhat shipped in Polytender: new features, improvements and fixes, newest first. Does not touch the What's new badge.
Parameters (5)
sincestringOnly entries published on or after this date (YYYY-MM-DD).category"new" | "improved" | "fixed"Filter by category.majorbooleanOnly the major highlights.limitintegerMax entries (default 10).locale"de" | "en"Language of the entries (default 'de', like the tender data).
search_tendersRead-onlySearch tenders with filters: country, region, source, CPV, keywords, stage, status, deadline and value.
Parameters (17)
querystringKeyword matched against the tender title (case-insensitive substring).countrystring[]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.cpvDivisionstring[]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.publishedSincestringOnly notices published on/after this date (YYYY-MM-DD or ISO datetime).deadlineFromstringOnly notices whose submission deadline is on/after this date (YYYY-MM-DD).valueMinnumberMinimum contract value (in the notice currency, mostly EUR).buyerstringCase-insensitive substring match on the buyer/contracting-authority name.lotGroupstringLot 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.regionsstring[]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.keywordsstring[]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.cpvstringExact 8-digit CPV code (use lookup_cpv to find it). Finer than cpvDivision.includeUnclassifiedbooleanWith cpvDivision/cpv: also return notices that carry no CPV code at all.pageintegerPage number (default 1).limitintegerResults per page (default 20, max 50).
get_tenderRead-onlyEverything we hold on one tender: description, buyer contact, dates, classifications and the source link.
Parameters (3)
idstringrequiredThe 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).descriptionMaxCharsintegerTruncate the description to this many characters. Default 20000; at most 40000 (0 = that maximum). A `descriptionNote` says when it was shortened.
get_tender_documentsRead-onlyThe list of procurement documents attached to a tender, with a note when a portal requires a login.
Parameters (3)
idstringrequiredThe Polytender tender id (UUID).offsetintegerIndex of the first document to return (default 0). `pagingNote` gives the next offset when more exist.limitintegerDocuments per call (default 40, max 80).
read_tender_documentRead-onlyThe text inside one document, addressed by its position in the document list. Paged for long files.
Parameters (5)
idstringrequiredThe Polytender tender id (UUID).indexintegerrequiredPosition of the document in the list returned by get_tender_documents.zipEntrystringFor ZIP archives: the name of the entry to read (from the `entries` list).offsetintegerStart reading at this character offset (use `nextOffset` from the previous page).maxCharsintegerCharacters to return (default 20000, at most 40000; 0 = that maximum). Longer documents are paged.
semantic_searchRead-onlySearch by meaning instead of exact words, across languages. Good for "something like X" questions.
Parameters (3)
querystringrequiredWhat the user is looking for, in natural language (any language).countrystring[]Optional ISO country codes to restrict results.limitintegerMax results (default 10).
get_facetsRead-onlyThe country and source codes that actually occur in the data, plus open and closing-soon counts.
lookup_cpvRead-onlyFind CPV codes by text or code prefix, and resolve a code to its label.
Parameters (3)
querystringFree text ("Gebäudereinigung", "software") or a code prefix ("4521"). Up to 20 hits.codesstring[]Codes to resolve to labels (label is null for codes not in the catalog).lang"de" | "en"Label language (default de).
lookup_companyRead-onlyThe award history of a company by name: what it won, where, and when it last won.
Parameters (1)
namestringrequiredCompany name or a distinctive part of it.
list_sourcesRead-onlyEvery 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-onlyYour 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-onlyYour organization's search profiles with a summary of their matches.
get_search_profile_matchesRead-onlyThe stored ranked matches of one search profile. Fast, because nothing is re-run.
Parameters (1)
idstringrequiredThe search profile id (from list_search_profiles).
refresh_search_profileRe-run the match for one search profile. Limited to once per profile per day.
Parameters (1)
idstringrequiredThe search profile id (from list_search_profiles).
match_companyRead-onlyFind winnable tenders for your company. Uses your saved profile when no website is given.
Parameters (1)
websitestringCompany website URL of an existing search profile. Omit to use the organization's newest profile.
get_search_profileRead-onlyThe definition of one search profile: countries, regions, keywords, CPV codes and negative keywords.
Parameters (1)
idstringrequiredThe search profile id (from list_search_profiles).
update_search_profileRename a search profile or change its countries, regions, keywords and CPV codes. Does not re-run the match.
Parameters (5)
idstringrequiredThe search profile id.namestringNew display name.countrystring[]Target countries as ISO-2 codes (["DE","AT"]); ["ALL"] = worldwide; [] = Europe default (only when no regions are set). OR-ed with regions.regionsstring[]Target regions as NUTS prefixes or synthetic US state codes (["DE2","AT13","USCA"]); [] clears. OR-ed with country.refinementsobject
preview_company_profileRead-onlyRead a website and show the profile we would derive from it, without saving anything.
Parameters (2)
websitestringrequiredCompany website URL.lang"de" | "en"Language for CPV labels (default de).
create_search_profileCreate a search profile from a website, or manually from a summary, keywords and CPV codes, and run the first match.
Parameters (6)
websitestringCompany website URL. Omit to create a MANUAL profile from `name` + `refinements` only (no crawl).namestringDisplay name (default: the website). REQUIRED when no website is given.countrystring[]Target countries as ISO-2 codes; ["ALL"] = worldwide; omit = Europe.regionsstring[]Target regions as NUTS prefixes / US state codes ("DE2", "USCA"). OR-ed with country.refinementsobjectOverrides for the crawled profile (each key replaces the crawled value). REQUIRED, with at least one of summary/keywords/cpvCodes, when no website is given.allowDuplicatebooleanCreate even if a profile for this website already exists.
delete_search_profileAsks for confirmation before it actsArchive a search profile. Asks for confirmation first.
Parameters (2)
idstringrequiredThe search profile id (from list_search_profiles).confirmbooleanSet 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-onlyWhy one tender ended up in a match list: region gate, CPV hits, keyword hits.
Parameters (3)
profileIdstringrequiredThe search profile id.tenderIdstringrequiredThe tender id of the match (from get_search_profile_matches).lang"de" | "en"CPV label language (default de).
dismiss_matchAsks for confirmation before it actsHide one match and optionally teach the profile why. Asks for confirmation first.
Parameters (6)
profileIdstringrequiredThe search profile id.tenderIdstringrequiredThe tender id of the match to dismiss.negativeKeywordsstring[]Terms to add as hard excludes to the profile.removeKeywordsstring[]Positive keywords to remove from the profile (as listed by explain_match `profileKeywords`).removeCpvCodesstring[]CPV codes to remove from the profile.confirmbooleanSet 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_feedbackUndo a dismissal, including the profile edits it made.
Parameters (3)
profileIdstringrequiredThe search profile id.tenderIdstringrequiredThe tender id that was dismissed.feedbackIdstringrequiredThe feedbackId returned by dismiss_match.
list_bookmarksRead-onlyYour 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.querystringText 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.countrystringCountry 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).pageintegerlimitintegerRows per page (default 25, max 50).
bookmark_tenderStar a tender so it shows up in your favorites.
Parameters (1)
tenderIdstringrequiredPolytender tender id (UUID from search_tenders, semantic_search or a search profile match).
unbookmark_tenderRemove the star from a tender. A note on it is kept.
Parameters (3)
tenderIdstringrequiredPolytender tender id.organizationIdunknownOnly for rows outside the active organization: the row's organization id (null = deleted organization).workspaceIdunknownDeprecated alias of organizationId.
set_tender_noteAdd to or replace your private note on a tender. Only you can see it.
Parameters (5)
tenderIdstringrequiredPolytender tender id.notestringrequiredThe note text (plain text).mode"append" | "replace"'append' (default) or 'replace'.organizationIdunknownOnly for rows outside the active organization (then mode must be 'replace').workspaceIdunknownDeprecated alias of organizationId.
track_tenderTrack a tender: email and in-app updates when the deadline moves, documents or Q&A change, or it is cancelled or awarded.
Parameters (1)
tenderIdstringrequiredPolytender tender id (UUID from search_tenders, semantic_search or a search profile match).
untrack_tenderStop tracking a tender. Past updates stay in your feed.
Parameters (1)
tenderIdstringrequiredPolytender tender id.
list_tracked_tendersRead-onlyThe tenders you track, soonest deadline first, with days left and the latest update.
get_notification_settingsRead-onlyWhich emails you receive: the account switch, the per-organization switch and your daily alerts.
set_daily_alertsAsks for confirmation before it actsSubscribe to or unsubscribe from the daily email for one search profile. Unsubscribing asks for confirmation.
Parameters (5)
profileIdstringrequiredThe search profile id.organizationIdstringOnly for a profile in another organization (see get_notification_settings).workspaceIdunknownDeprecated alias of organizationId.enabledbooleanrequiredtrue = receive the daily alert email, false = stop it.confirmbooleanSet 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 actsTurn 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).organizationIdstringFor level 'organization': the organization id (default: the active one).workspaceIdunknownDeprecated alias of organizationId.enabledbooleanrequiredconfirmbooleanSet 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-onlyThe organization the connector is acting in: name, member count and your role in it.
list_membersRead-onlyThe members of your organization with their role and when they joined.
list_pending_invitationsRead-onlyInvitations 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 actsInvite 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)
emailstringrequiredEmail address of the person to invite.role"admin" | "member"Role they get on joining (default 'member'). Admins can invite and manage people.confirmbooleanSet 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 actsRevoke a pending invitation and free its seat. Owners and admins only; asks for confirmation first.
Parameters (2)
invitationIdstringrequiredThe invitation id (from list_pending_invitations).confirmbooleanSet 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 actsChange a member's role. Owner only; promoting someone to owner transfers ownership. Asks for confirmation first.
Parameters (3)
memberIdstringrequiredThe member id (from list_members — not the user id).role"owner" | "admin" | "member"requiredThe new role.confirmbooleanSet 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-onlyAll lots of one procurement as one series, from a lot group id or any tender id in it.
Parameters (2)
lotGroupIdstringThe lot group id from a search result or get_tender.tenderIdstringA 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.