Skip to content

MCP Tools

Full parameter reference for all 20 tools exposed by the MCP server. Each tool is a thin wrapper over the corresponding v1 use case, so responses match the REST API contracts.

Tools are grouped by scope:

  • Public tools (6) read public procurement data and are available to any key with MCP enabled.
  • Account tools (10) read data belonging to the account that owns the API key. The account is resolved from the key — never passed as a parameter.
  • Account write tools (4) modify that account's data. See Writing data for the confirmation rules.

Where a parameter accepts a "reference", you can pass the ID from a previous tool's references block or a Tendios URL copied from the browser.


Public tools

search_tenders

Search tenders by text and filters (status, CPVs, locations, budget, date ranges).

ParameterTypeDescription
textstring?Full-text search query
pagenumber?Page number (1-based, default 1)
pageSizenumber?Results per page (default 10, max 100)
sortstring?Sort field — see sort values (default by-published-date)
isDescendentboolean?Sort descending (default true)
statusstring[]?Filter by tender status
cpvsstring[]?Filter by CPV codes, e.g. ["45000000-7"]
locationsstring[]?Filter by location: country/<ISO-2> or town/<name>, e.g. ["country/ES"]
proceduresstring[]?Filter by procedure types
contractTypesstring[]?Filter by contract types
minBudgetnumber?Minimum budget (no tax)
maxBudgetnumber?Maximum budget (no tax)
minPublicationDatestring?Minimum publication date (ISO 8601)
maxPublicationDatestring?Maximum publication date (ISO 8601)
minDeadlineDatestring?Minimum submission deadline (ISO 8601)
maxDeadlineDatestring?Maximum submission deadline (ISO 8601)

Returns a { data, pagination } envelope. Equivalent to POST /v1/tenders/search.

get_tender

Retrieve the full details of a single tender by its id.

ParameterTypeDescription
idstringThe tender id

Equivalent to GET /v1/tenders/{id}.

get_tender_sheets

List the sheets (documents) attached to a tender by tender id.

ParameterTypeDescription
idstringThe tender id

Returns document metadata only. To download a file, use GET /v1/tenders/sheets/{sheetId}/download — binary streams are not exposed as MCP tools.

get_cpv

Get the details of a CPV (Common Procurement Vocabulary) code.

ParameterTypeDescription
codestringThe CPV code, e.g. 72000000

Returns the code's type (division, group, class, category) and its name in each supported language. Equivalent to GET /v1/cpv/{code}.

get_organization

Get an organization profile by its id or slug.

ParameterTypeDescription
idOrSlugstringThe organization id (e.g. the contractingOrganizationId of a tender) or slug, e.g. altia-consultores-sa

Works for both bidders and public contracting institutions. Equivalent to GET /v1/organizations/{idOrSlug}.

get_organization_award_stats

Get award statistics by year for an organization, identified by its id or slug.

ParameterTypeDescription
idOrSlugstringThe organization id (e.g. the contractingOrganizationId of a tender) or slug, e.g. altia-consultores-sa

Returns yearly totals plus a CPV sector breakdown. Equivalent to GET /v1/organizations/{idOrSlug}/awards.


Account tools

These tools read data scoped to the account that owns the API key.

whoami

Get the authenticated principal, account, linked organization, and active Bid plan.

Takes no parameters.

Use it as an orientation call — it tells an assistant which account it is acting on before it reads or changes anything. Equivalent to GET /v1/whoami.

list_alerts

List every alert configured for the account, with references for retrieving their results.

ParameterTypeDescription
textstring?Filter alerts by title
isArchivedboolean?Filter archived or non-archived alerts
pagenumber?Page number (1-based, default 1)
pageSizenumber?Alerts per page (default 20, max 100)
sortstring?Sort field — see alert sort values (default by-update-date)
sortDirectionstring?asc or desc (default desc)

Returns references.alerts[] for use with get_alert, update_alert, and get_alert_results. Equivalent to GET /v1/alerts.

get_alert

Get the current configuration of one alert.

ParameterTypeDescription
alertstringAlert reference from list_alerts, or its Tendios URL

Equivalent to GET /v1/alerts/{alertId}.

get_alert_results

Get the tenders matching one of your saved alerts, by alert id. The alert's own criteria are applied first; text filters further on top of them.

ParameterTypeDescription
alertIdstringThe alert id
textstring?Additional text filter on top of the alert criteria
pagenumber?Page number (1-based, default 1)
pageSizenumber?Results per page (default 10, max 100)
sortstring?Sort field — see sort values (default by-published-date)
isDescendentboolean?Sort descending (default true)

Returns a paginated result. This is the tool to use for building automated tender feeds from an alert you already maintain in Bid.

list_pipelines

List the opportunity pipelines and stages configured for your account, including the IDs the kanban and opportunity tools need.

ParameterTypeDescription
pagenumber?Page number (1-based, default 1)
pageSizenumber?Pipelines per page (default 20, max 100)

Returns references.pipelines[], each with a pipeline reference and its statuses references. Start here — every other pipeline tool accepts the UUIDs or the exact names this returns. Equivalent to GET /v1/pipelines.

get_kanban_status_totals

Get the opportunity totals per pipeline status for a kanban board in your account.

ParameterTypeDescription
pipelineIdstringPipeline UUID or exact pipeline name from list_pipelines
responsiblestring[]?Filter by responsible user ids
teamResponsiblestring[]?Filter by responsible team ids

Useful as a first call — it gives an assistant the shape of the board (which statuses exist and how many opportunities sit in each) before drilling into a column.

get_kanban_opportunities_by_status

Get a paginated list of opportunities in a specific pipeline status (kanban column).

ParameterTypeDescription
pipelineIdstringPipeline UUID or exact pipeline name from list_pipelines
statusIdstringStage UUID or exact stage name from list_pipelines
pagenumber?Page number (1-based, default 1)
pageSizenumber?Results per page (default 10, max 100)
sortstring?Sort order — see opportunity sort values
sortDirectionstring?asc or desc (default asc)

search_kanban_opportunities

Search opportunities within a pipeline, grouped by status. Returns up to limit opportunities per status.

ParameterTypeDescription
pipelineIdstringPipeline UUID or exact pipeline name from list_pipelines
limitnumber?Max opportunities per status (default 10, max 50)
searchstring?Search term to filter opportunities
sortstring?Sort order — see opportunity sort values
sortDirectionstring?asc or desc (default asc)
responsiblestring[]?Filter by responsible user ids
teamResponsiblestring[]?Filter by responsible team ids

Unlike the other paginated tools, this one returns a map of statusId → array of opportunities rather than a { data, pagination } envelope — it reads a whole board in one call.

get_opportunity_workflow_actions

Get the current workflow action records for an opportunity, grouped by workflow step.

ParameterTypeDescription
opportunitystringOpportunity UUID or Tendios opportunity URL

Shows which qualification steps are done and which are outstanding. Equivalent to GET /v1/opportunities/{opportunityId}/workflow-actions.

list_opportunity_tasks

List tasks associated with an opportunity, optionally filtered by status.

ParameterTypeDescription
opportunitystringOpportunity UUID or Tendios opportunity URL
statusstring?Filter by task status
pagenumber?Page number (1-based, default 1)
pageSizenumber?Tasks per page (default 20, max 100)

Equivalent to GET /v1/opportunities/{opportunityId}/tasks.


Account write tools

These four tools modify your account. Read Writing data first — two of them refuse to act until you confirm.

create_alert

Create an alert. The tool is designed to be driven conversationally: it expects the assistant to gather the configuration, summarize it, and get your explicit approval before committing.

ParameterTypeDescription
titlestringReadable alert name
eventsobject[]Tender events that trigger the alert (min 1) — see below
descriptionstring?Free-text description
criteriaobject?Tender matching criteria — see below
notificationobject?Delivery schedule — see below
responsibleUserIdsstring[]?Account user IDs that receive alert emails; omit for no recipients
isActiveboolean?Active immediately (default true)
isPublicboolean?All account users can access it (default true)
confirmedboolean?Required to actually create. Set true only after the user confirms

Called without confirmed: true, the tool returns an error result asking the assistant to summarize and confirm first.

events[]

FieldTypeDescription
eventstringpublication, award, or deadline
expirationOffsetnumber?Days before the deadline to notify — deadline only (default 1)
withExtensionboolean?Use the extended deadline — deadline only (default false)

These friendlier names map onto the REST API's windowsSearch fields (expedientPublishedAt, expedientAdjudicationDate, expedientExpirationDate).

criteria — every field optional:

FieldTypeDescription
keywordsobject{ include: string[], exclude: string[] }
cpvCodesobject{ include: string[], exclude: string[] }
countriesobject{ include: string[], exclude: string[] }
provincesobject{ include: string[], exclude: string[] }
budgetobject{ min, max }
statusesstring[]Tender status values (min 1 when present)
contractTypesstring[]Contract type values
proceduresstring[]Procedure type values
inDeadlinebooleanOnly tenders still open for submission

notification — every field optional:

FieldTypeDescription
frequencystringdaily or weekly
weekdaysnumber[]Days for a daily schedule, 1 = Monday … 7 = Sunday
weeklyDaynumberDay for a weekly schedule, 1–7
hournumberDelivery hour, 0–23
timezonestringIANA zone, e.g. Europe/Madrid
includeModificationsbooleanInclude modified tenders, not just new ones
sendWithoutItemsbooleanSend the email even when nothing matched

Supplying weeklyDay alone implies a weekly schedule; weekdays alone implies daily.

update_alert

Update selected fields of an existing alert. Omitted fields stay unchanged; empty include/exclude arrays clear those filters.

ParameterTypeDescription
alertstringAlert reference from list_alerts/get_alert, or its Tendios URL
titlestring?New title
descriptionstring?New description
eventsobject[]?Replace the triggering events — same shape as create_alert
criteriaobject?Replace criteria — same shape as create_alert
notificationobject?Replace schedule — same shape as create_alert
responsibleUserIdsstring[]?Replace email recipients
isActiveboolean?Pause or resume
isPublicboolean?Change visibility
isArchivedboolean?Archive or unarchive

Unlike create_alert, this one needs no confirmation flag — it is idempotent and reversible. Changing only hour keeps an existing weekly schedule weekly. Equivalent to PATCH /v1/alerts/{alertId}.

change_opportunity_status

Move an opportunity to another stage in its current pipeline.

ParameterTypeDescription
opportunitystringOpportunity UUID or Tendios opportunity URL
targetStatusstringTarget stage UUID or exact stage name from list_pipelines
confirmTerminalboolean?Required for terminal stages. Set true only after the user confirms

Behaviour worth knowing:

  • If the opportunity is already in the target stage, the tool says so and changes nothing.
  • If the target stage is terminal and confirmTerminal is not true, it returns an error result asking for confirmation, because reaching a terminal stage may close the opportunity.
  • It is the only tool annotated as destructive.

Equivalent to PUT /v1/opportunities/{opportunityId}/status.

create_opportunity_task

Create a task on an opportunity, gathering the details conversationally first.

ParameterTypeDescription
opportunitystringOpportunity UUID or Tendios opportunity URL
titlestringReadable task title
descriptionstring?Additional instructions
statusstring?Task status (default to-do)
prioritystring?Task priority (default medium)
responsibleUserIdsstring[]?Account user IDs assigned to the task
deadlineAtstring?ISO 8601 deadline
confirmedboolean?Required to actually create. Set true only after the user confirms

Equivalent to POST /v1/opportunities/{opportunityId}/tasks.


Enum values

Tender sort values

Accepted by search_tenders and get_alert_results. Default is by-published-date.

ValueSorts by
by-relevanceFull-text relevance score
by-published-datePublication date
by-update-dateLast update date
by-due-dateSubmission deadline
by-budgetBudget without tax
by-prorated-budgetProrated budget
by-expiration-dateExpiration date
by-awarding-dateAwarding date
by-last-significant-changeLast significant change

Direction is controlled by isDescendent (default true).

Opportunity sort values

Accepted by get_kanban_opportunities_by_status and search_kanban_opportunities.

ValueSorts by
customThe manual order set on the board
by-update-dateLast update date
by-due-dateDue date
by-budgetBudget
by-prorated-budgetProrated budget

Direction is controlled by sortDirection (asc or desc, default asc).

Alert sort values

Accepted by list_alerts. Default is by-update-date.

ValueSorts by
by-nameAlert title
by-update-dateLast update date
by-creation-dateCreation date
by-last-notified-dateLast time the alert matched
by-last-notification-sent-dateLast time an email was sent
by-statusActive/inactive state

Direction is controlled by sortDirection (asc or desc, default desc).

Task status and priority values

Accepted by list_opportunity_tasks (status) and create_opportunity_task (status, priority).

statusMeaning
to-doNot started (the default)
in-progressBeing worked on
doneCompleted
priorityMeaning
highHigh priority
mediumMedium (the default)
lowLow priority

© Tendios