> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tendy.by/llms.txt
> Use this file to discover all available pages before exploring further.

# Tendy MCP Tools: Complete Reference for All 5 Tools

> Complete reference for Tendy's five MCP tools: parameters, accepted values, and return shapes for every tool your AI assistant can call.

The Tendy MCP server exposes five tools that your AI assistant can call to interact with your procurement data. Two tools cover discovery and detail retrieval (`search_tenders`, `get_tender`), two work with your saved search templates (`list_saved_searches`, `run_saved_search`), and one surfaces your bookmarked tenders (`list_saved_tenders`). All tools require an authenticated session — see [Connect](/integrations/mcp-connect) to set up credentials.

***

### search\_tenders

Search Belarusian public-procurement tenders in the Tendy database by keyword, status, source, region, OKRB code, amount range, publish date, and urgency. Returns a compact, paginated list.

#### Parameters

<ParamField query="search" type="string">
  A keyword, UUID, or external ID to search for. Leave empty to browse without a keyword filter.
</ParamField>

<ParamField query="status" type="array">
  Filter by tender status. Accepted values: `active`, `closed`, `cancelled`. Pass multiple values to include more than one status.
</ParamField>

<ParamField query="source" type="array">
  Limit results to one or more procurement platforms. Accepted values: `goszakupki`, `icetrade`, `butb`, `ppt_butb`.
</ParamField>

<ParamField query="region" type="string">
  Filter by region using a substring match — for example, `Минск` returns tenders in the Minsk region and city.
</ParamField>

<ParamField query="okrb" type="string">
  Filter by OKRB commodity code prefix — for example, `45.2` matches all construction-related codes under that branch.
</ParamField>

<ParamField query="procedure" type="string">
  Filter by procedure type using a substring match.
</ParamField>

<ParamField query="amount_min" type="number">
  Return only tenders with a contract value at or above this amount.
</ParamField>

<ParamField query="amount_max" type="number">
  Return only tenders with a contract value at or below this amount.
</ParamField>

<ParamField query="include_no_price" type="boolean">
  When `true`, include tenders that have no published contract value alongside priced results.
</ParamField>

<ParamField query="published_from" type="string">
  Return tenders published on or after this date. Format: `YYYY-MM-DD`.
</ParamField>

<ParamField query="published_to" type="string">
  Return tenders published on or before this date. Format: `YYYY-MM-DD`.
</ParamField>

<ParamField query="urgent" type="boolean">
  When `true`, return only tenders whose deadline falls within the next 3 days.
</ParamField>

<ParamField query="page" type="number" default="1">
  Page number for paginated results.
</ParamField>

<ParamField query="pageSize" type="number" default="20">
  Number of results per page. Maximum: `50`.
</ParamField>

#### Returns

<ResponseField name="total" type="number">
  Total number of tenders matching the query across all pages.
</ResponseField>

<ResponseField name="page" type="number">
  The current page number.
</ResponseField>

<ResponseField name="pageSize" type="number">
  The page size used for this request.
</ResponseField>

<ResponseField name="count" type="number">
  Number of tender objects returned on this page.
</ResponseField>

<ResponseField name="tenders" type="array">
  Array of compact tender objects. Each object includes: `id`, `external_id`, `title`, `amount`, `currency`, `deadline`, `status`, `source`, `region`, `company_name`, `procedure_type`, `published_at`, `url`.
</ResponseField>

#### Example

> "Find active IT-related tenders in Minsk published since 1 January 2025 with a value above 100,000 BYN, sorted by the most urgent deadlines."

***

### get\_tender

Fetch the full details of a single tender by its Tendy UUID. Returns all available information: title, description, amount, deadline, procuring entity, OKRB codes, lots, documents, events, and requirements.

#### Parameters

<ParamField query="id" type="string" required>
  The Tendy tender UUID. Obtain this from the `id` field in `search_tenders` results.
</ParamField>

#### Returns

The full tender record including:

<ResponseField name="title" type="string">Human-readable tender title.</ResponseField>
<ResponseField name="description" type="string">Full tender description and scope of work.</ResponseField>
<ResponseField name="amount" type="number">Contract value.</ResponseField>
<ResponseField name="currency" type="string">Currency code, e.g. `BYN`.</ResponseField>
<ResponseField name="deadline" type="string">Submission deadline in ISO 8601 format.</ResponseField>
<ResponseField name="company_name" type="string">Name of the procuring entity (contracting authority).</ResponseField>
<ResponseField name="company_unp" type="string">Tax identification number (УНП) of the procuring entity.</ResponseField>
<ResponseField name="contact_person" type="string">Name and contact details of the responsible officer.</ResponseField>
<ResponseField name="okrb_codes" type="array">List of OKRB commodity classification codes attached to this tender.</ResponseField>
<ResponseField name="lots" type="array">Individual lots, each with its own description, amount, and requirements.</ResponseField>
<ResponseField name="documents" type="array">Attached procurement documents with download URLs.</ResponseField>
<ResponseField name="events" type="array">Timeline of key events such as publication, clarification deadlines, and award.</ResponseField>
<ResponseField name="requirements" type="array">Qualification and technical requirements for participating suppliers.</ResponseField>

#### Example

> "Get the full details for the tender with id `3f2a1b4c-…`, including all attached documents and lot breakdowns."

***

### list\_saved\_searches

List the authenticated user's saved search templates, including the filters stored in each template and how often Tendy notifies you of new matches.

#### Parameters

This tool requires no parameters.

#### Returns

<ResponseField name="count" type="number">
  Total number of saved searches in your account.
</ResponseField>

<ResponseField name="saved_searches" type="array">
  Array of saved search objects. Each object includes:

  <Expandable title="saved search fields">
    <ResponseField name="id" type="string">Unique identifier for the saved search. Pass this to `run_saved_search`.</ResponseField>
    <ResponseField name="name" type="string">The label you gave the search when you saved it.</ResponseField>
    <ResponseField name="filters" type="object">The full set of filter parameters stored in this template.</ResponseField>
    <ResponseField name="notification_frequency" type="string">How often Tendy sends you email alerts for new matches — for example, `daily` or `instant`.</ResponseField>
    <ResponseField name="created_at" type="string">ISO 8601 timestamp of when the search was saved.</ResponseField>
  </Expandable>
</ResponseField>

#### Example

> "Show me all my saved searches so I can see which procurement categories I'm monitoring."

***

### run\_saved\_search

Execute one of your saved search templates by its id and return matching tenders. Optionally override the page or page size to paginate through results.

#### Parameters

<ParamField query="id" type="string" required>
  The saved search id. Retrieve available ids by calling `list_saved_searches` first.
</ParamField>

<ParamField query="page" type="number">
  Page number to retrieve. Defaults to `1`.
</ParamField>

<ParamField query="pageSize" type="number">
  Number of results per page. Maximum: `50`.
</ParamField>

#### Returns

Returns the same paginated tender list as `search_tenders`, applying the filters stored in the saved search template.

#### Example

> "Run my saved search called 'Road construction Grodno' and show me the latest matching tenders."

***

### list\_saved\_tenders

List the tenders you have bookmarked in Tendy, returned in reverse chronological order so your most recently saved opportunities appear first.

#### Parameters

<ParamField query="page" type="number">
  Page number to retrieve. Defaults to `1`.
</ParamField>

<ParamField query="pageSize" type="number">
  Number of bookmarked tenders per page. Maximum: `50`.
</ParamField>

#### Returns

<ResponseField name="page" type="number">Current page number.</ResponseField>
<ResponseField name="pageSize" type="number">Number of results on this page.</ResponseField>
<ResponseField name="count" type="number">Number of bookmarked tender objects returned on this page.</ResponseField>

<ResponseField name="tenders" type="array">
  Array of compact tender objects in the same format returned by `search_tenders`.
</ResponseField>

#### Example

> "List the tenders I've bookmarked so I can review the ones I flagged earlier this week."
