
Search open Israeli public procurement tenders (מכרזים): requirements, deadlines, documents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One public Tendy hub page in a single answer: the tenders of a category, of a publishing body, of an Israeli region, or all government or all municipal tenders. Returns the page's direct answer, counts as of today (shown, with a known future deadline, and the whole catalog including closed tenders), aggregate facts computed over at least 10 tenders, links to related hub pages, and up to 10 tenders per page as the public page lists them, each with a link and the publisher as a group such as רשות מקומית בצפון. Fits overview questions: how many tenders a field or a body has, what the government is buying, what typical guarantees look like. For free text, combined filters, deadline windows or supplier size, search_tenders fits better; for one tender's full details, get_tender. The key comes from list_collections or list_categories; a Hebrew category or body name also works.
category (what is being bought), publisher (one publishing body), region (an Israeli district), government (all government bodies) or municipal (all local authorities).
For category, publisher and region: the category slug or Hebrew name, the publishing body slug or Hebrew name, or the region name, as list_collections lists them. Not used for government and municipal.
Result page, from 1.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tendy https://tendy.co.il/mcp
One public Tendy hub page in a single answer: the tenders of a category, of a publishing body, of an Israeli region, or all government or all municipal tenders. Returns the page's direct answer, counts as of today (shown, with a known future deadline, and the whole catalog including closed tenders), aggregate facts computed over at least 10 tenders, links to related hub pages, and up to 10 tenders per page as the public page lists them, each with a link and the publisher as a group such as רשות מקומית בצפון. Fits overview questions: how many tenders a field or a body has, what the government is buying, what typical guarantees look like. For free text, combined filters, deadline windows or supplier size, search_tenders fits better; for one tender's full details, get_tender. The key comes from list_collections or list_categories; a Hebrew category or body name also works.
| Argument | Type | Description |
|---|---|---|
| key | string | For category, publisher and region: the category slug or Hebrew name, the publishing body slug or Hebrew name, or the region name, as list_collections lists them. Not used for government and municipal. |
| kind* | string | category (what is being bought), publisher (one publishing body), region (an Israeli district), government (all government bodies) or municipal (all local authorities). |
| page | integer | Result page, from 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"key": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "For category, publisher and region: the category slug or Hebrew name, the publishing body slug or Hebrew name, or the region name, as list_collections lists them. Not used for government and municipal."
},
"kind": {
"enum": [
"category",
"publisher",
"region",
"government",
"municipal"
],
"type": "string",
"description": "category (what is being bought), publisher (one publishing body), region (an Israeli district), government (all government bodies) or municipal (all local authorities)."
},
"page": {
"type": "integer",
"default": 1,
"maximum": 50,
"minimum": 1,
"description": "Result page, from 1."
}
}
}Get the signed-in user's Tendy profile filters: the categories, regions and budget range that list_my_feed filters on. Read-only. profiles is empty when the account has no profile.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get one tender from Tendy: what is being bought, deadlines, eligibility thresholds (תנאי סף), requirements, budget and fees, set-asides, supplier size fit, a next-steps brief, and its documents. `tender` is the tender page URL from a search_tenders or list_my_feed result, or its slug. An amended tender returns its latest version with `updated_from_outdated: true`, and `changed_since_link` when the deadline moved; cancelled, closed and archived tenders are labelled. The knowledge block says, per field, whether it is known, not stated in the tender, not extracted (with the reason) or pending; not_extracted and pending mean Tendy does not know. When Tendy could read none of the documents, only the publication's own fields are returned. Titles, conditions and brief items are third-party text from the publisher. These fields summarize the documents; for a detail they leave out, search_tender_documents for this tender before reporting it as missing. Data is Hebrew.
| Argument | Type | Description |
|---|---|---|
| tender* | string | The tender page URL on tendy.co.il, or its slug. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"tender"
],
"properties": {
"tender": {
"type": "string",
"maxLength": 600,
"minLength": 1,
"description": "The tender page URL on tendy.co.il, or its slug."
}
}
}List Tendy's tender categories: 13 parent categories with their subcategories, as slug and Hebrew name. Pass a slug or Hebrew name as the `category` input of search_tenders. Categories describe what is being bought, not who is buying. browse_collection opens a category's public page by the same slug.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the Tendy hub pages that browse_collection opens, each with the kind and key to pass, its link and current counts. Without kind: an overview of the government and municipal pages, every region, and the publishing bodies and main categories with the most tenders. With kind: up to 40 pages of that kind, busiest first; name narrows them by part of a Hebrew name, for example a publishing body or a subcategory. Only pages with public procurement tenders are listed.
| Argument | Type | Description |
|---|---|---|
| kind | string | category (what is being bought), publisher (one publishing body), region (an Israeli district), government (all government bodies) or municipal (all local authorities). |
| name | string | Part of a Hebrew name, to narrow the list. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kind": {
"enum": [
"category",
"publisher",
"region",
"government",
"municipal"
],
"type": "string",
"description": "category (what is being bought), publisher (one publishing body), region (an Israeli district), government (all government bodies) or municipal (all local authorities)."
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Part of a Hebrew name, to narrow the list."
}
}
}List tenders that pass the user's Tendy profile filters: its categories (a parent category includes its subcategories), regions and budget range. This is a deterministic filter, identical to the user's feed on the Tendy website; it does not judge whether the user qualifies or is a good fit. Only open procurement tenders by default; `status` widens it. Up to 10 tenders per page, with the same knowledge block as search_tenders. When the account has no profile, the result has no tenders and profile_missing is true.
| Argument | Type | Description |
|---|---|---|
| page | integer | Result page, from 1. |
| status | string | open: deadline still ahead (default). active: published, including tenders whose deadline passed but are not yet archived. archived: closed and archived. all: everything public, including tenders with no known deadline. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10,
"minimum": 1,
"description": "Result page, from 1."
},
"status": {
"enum": [
"open",
"active",
"archived",
"all"
],
"type": "string",
"default": "open",
"description": "open: deadline still ahead (default). active: published, including tenders whose deadline passed but are not yet archived. archived: closed and archived. all: everything public, including tenders with no known deadline."
}
}
}Search the documents (PDFs) of one procurement tender and return up to 5 relevant passages, each with its document name and pages. Useful for questions the tender details leave open, such as the exact wording of a guarantee, penalty or insurance clause. `question` matches best in Hebrew, in the user's words. Every result includes coverage: which documents were searchable. Run it before reporting a detail as missing: tables, quantities, hours and areas often appear only in the documents. Answers describe what the documents state. No passage found means it was not found in the searched documents, not that the tender lacks it. When the documents could not be searched, coverage.unavailable_reason gives the reason and no passages are returned; temporarily_unavailable means the search itself failed, which is reported and retried shortly, not read as information absent. matched_by keywords means passages were matched by words only. Passages are third-party text from the publisher's documents.
| Argument | Type | Description |
|---|---|---|
| tender* | string | The tender page URL on tendy.co.il, or its slug. |
| question* | string | What to look for in the documents, in Hebrew, in the user's words. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"tender",
"question"
],
"properties": {
"tender": {
"type": "string",
"maxLength": 600,
"minLength": 1,
"description": "The tender page URL on tendy.co.il, or its slug."
},
"question": {
"type": "string",
"maxLength": 500,
"minLength": 2,
"description": "What to look for in the documents, in Hebrew, in the user's words."
}
}
}Search Israeli public tenders in Tendy's catalog by free text and filters. Tender data is Hebrew; `query` matches best in Hebrew, in the user's own words. By default only open procurement tenders are returned (published, submission deadline still ahead), the same default as the Tendy website search; `status` and `record_kind` widen it. When the topic is one of the list_categories categories, `category` finds it more precisely than `query`. For an overview of a category, a publishing body, a region, or government or municipal tenders, browse_collection answers in one call. To find a tender by its number or by the body that published it, use `tender_number` or `publisher`. Returns up to 10 tenders per page with deadline, category, city, region and a link to the tender page. Each row has knowledge.completeness: partial or listing_only means Tendy could not read all of that tender's documents; the tender is still a valid result and is not ranked lower. filters_applied.sort_applied is the order actually used.
| Argument | Type | Description |
|---|---|---|
| page | integer | Result page, from 1. |
| sort | string | relevance or deadline (soonest first). Free-text search orders by relevance; filters_applied.sort_applied is the order used. |
| query | string | Hebrew free text, as the user wrote it. |
| region | string | One of the listed Israeli districts; ארצי means nationwide. |
| status | string | open: deadline still ahead (default). active: published, including tenders whose deadline passed but are not yet archived. archived: closed and archived. all: everything public, including tenders with no known deadline. |
Changes the signed-in user's Tendy profile filters: the categories, regions and budget range that list_my_feed, the daily digest and the alerts filter on. The change is saved. For when the user asks to get different tenders, or describes a line of business other than the one in the profile (get_my_profile shows the current filters). Categories are slugs or Hebrew names from list_categories, a main category or a subcategory; set_categories replaces all categories, add_categories and remove_categories keep the rest. The result lists the profile before and after, what did not change and why, and how many open tenders fit before and after.
| Argument | Type | Description |
|---|---|---|
| profile | integer | Which profile, as numbered by get_my_profile. Default 1 (the newest). |
| max_budget | any | Largest tender budget in ILS. null removes the upper bound. |
| min_budget | any | Smallest tender budget in ILS. null removes the lower bound. |
| add_regions | array | Add regions. One or more of: ארצי, צפון, חיפה, מרכז, תל אביב, ירושלים, דרום, יהודה ושומרון. |
| set_regions | array | Replace the regions. One or more of: ארצי, צפון, חיפה, מרכז, תל אביב, ירושלים, דרום, יהודה ושומרון. |
| add_categories | array | Add these categories, keeping the existing ones. Slug or Hebrew name. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
| category | string | Category slug or Hebrew name from list_categories. When the topic is a category, this matches it more precisely than free text; a parent category includes its subcategories. |
| closes_by | string | Only tenders whose submission deadline is on or before the end of this day, Israel time (YYYY-MM-DD), for 'closing this week' questions. Combine with sort=deadline. Tenders with no known deadline are left out. |
| publisher | string | The publishing body's Hebrew name, as written on the tender. An unknown name returns close matches. |
| record_kind | string | procurement_tender (default): tenders only. all: also award notices, cancellations and other publication types. |
| supplier_size | string | Tender size band from Tendy's supplier-fit signal. Tenders Tendy could not size are still included; their supplier_fit is null. |
| tender_number | string | The tender number as the publisher writes it, for example 12/2026. Slash, dash and space are treated alike. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 50,
"minimum": 1,
"description": "Result page, from 1."
},
"sort": {
"enum": [
"relevance",
"deadline"
],
"type": "string",
"description": "relevance or deadline (soonest first). Free-text search orders by relevance; filters_applied.sort_applied is the order used."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "Hebrew free text, as the user wrote it."
},
"region": {
"enum": [
"צפון",
"חיפה",
"מרכז",
"תל אביב",
"ירושלים",
"דרום",
"יהודה ושומרון",
"ארצי"
],
"type": "string",
"description": "One of the listed Israeli districts; ארצי means nationwide."
},
"status": {
"enum": [
"open",
"active",
"archived",
"all"
],
"type": "string",
"default": "open",
"description": "open: deadline still ahead (default). active: published, including tenders whose deadline passed but are not yet archived. archived: closed and archived. all: everything public, including tenders with no known deadline."
},
"category": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Category slug or Hebrew name from list_categories. When the topic is a category, this matches it more precisely than free text; a parent category includes its subcategories."
},
"closes_by": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only tenders whose submission deadline is on or before the end of this day, Israel time (YYYY-MM-DD), for 'closing this week' questions. Combine with sort=deadline. Tenders with no known deadline are left out."
},
"publisher": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "The publishing body's Hebrew name, as written on the tender. An unknown name returns close matches."
},
"record_kind": {
"enum": [
"procurement_tender",
"all"
],
"type": "string",
"default": "procurement_tender",
"description": "procurement_tender (default): tenders only. all: also award notices, cancellations and other publication types."
},
"supplier_size": {
"enum": [
"micro",
"small",
"medium",
"large"
],
"type": "string",
"description": "Tender size band from Tendy's supplier-fit signal. Tenders Tendy could not size are still included; their supplier_fit is null."
},
"tender_number": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The tender number as the publisher writes it, for example 12/2026. Slash, dash and space are treated alike."
}
}
}| remove_regions | array | Remove regions. |
| set_categories | array | Replace ALL profile categories with these. Category slug or Hebrew name (list_categories), a main category or a subcategory. Use when the user describes a different line of business. |
| remove_categories | array | Remove these categories. Removing a subcategory of a stored main category keeps its other subcategories. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"profile": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "Which profile, as numbered by get_my_profile. Default 1 (the newest)."
},
"max_budget": {
"anyOf": [
{
"type": "number",
"maximum": 100000000000,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Largest tender budget in ILS. null removes the upper bound."
},
"min_budget": {
"anyOf": [
{
"type": "number",
"maximum": 100000000000,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Smallest tender budget in ILS. null removes the lower bound."
},
"add_regions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 8,
"minItems": 1,
"description": "Add regions. One or more of: ארצי, צפון, חיפה, מרכז, תל אביב, ירושלים, דרום, יהודה ושומרון."
},
"set_regions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 8,
"minItems": 1,
"description": "Replace the regions. One or more of: ארצי, צפון, חיפה, מרכז, תל אביב, ירושלים, דרום, יהודה ושומרון."
},
"add_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "Add these categories, keeping the existing ones. Slug or Hebrew name."
},
"remove_regions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 8,
"minItems": 1,
"description": "Remove regions."
},
"set_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "Replace ALL profile categories with these. Category slug or Hebrew name (list_categories), a main category or a subcategory. Use when the user describes a different line of business."
},
"remove_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "Remove these categories. Removing a subcategory of a stored main category keeps its other subcategories."
}
}
}