← Files TenderkartARCHIVED FILE
tools.json
16.1 KB · Nov 3, 2026 · 18:56 UTC
{
"tools": [
{
"name": "list_filters",
"title": "List Assigned Filters",
"description": "List the Tenderkart saved filters on the connected account. Call this before browsing saved matches or syncing filter changes. It does not count against any allowance.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "list_filter_tenders",
"title": "Sync Filter Tender Changes",
"description": "Sync tenders changed in Tenderkart for one saved filter, ordered by updated_at ascending. This ignores saved publication/closing date criteria and defaults to active status. For browsing saved matches use search_tenders with filter_id. For recent changes pass updated_after (for example 7 days ago). Returns at most 5 pages per sync. If pagination.limited is true, the sync is incomplete: narrow the date window or use search_tenders. Use sync.next_updated_after only when returned. For continuation, copy the cursor exactly and send filter_id and cursor, optionally limit; omit status, updated_after and updated_before.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"description": "Copy pagination.next_cursor exactly. Send filter_id and cursor, optionally limit. Omit status, updated_after and updated_before.",
"type": "string"
},
"filter_id": {
"description": "Saved filter ID from list_filters.",
"type": "string"
},
"limit": {
"description": "Records per page. Default and maximum 50 (10 on the Free plan).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"status": {
"description": "Comma-separated status buckets: active, under_evaluation, awarded, cancelled. Defaults to active.",
"type": "string"
},
"updated_after": {
"description": "Exclusive ISO-8601 updated_at lower bound. Omit for initial backfill.",
"type": "string"
},
"updated_before": {
"description": "Inclusive ISO-8601 updated_at upper bound. Usually omit so Tenderkart chooses a safe frozen bound.",
"type": "string"
}
},
"required": [
"filter_id"
],
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "search_tenders",
"title": "Search Tenders",
"description": "Search tenders with explicit keyword, geography, category, amount, status and date criteria, or pass filter_id from list_filters to browse saved matches. With filter_id, only sort, page and limit may accompany it: all saved criteria, including publication/closing dates and statuses, are preserved. Use list_filter_tenders for change sync. Amounts are in rupees (10 Cr = 100000000). Returns the first 5 pages of results; the Free plan returns 10 results a page. Read pagination.summary and follow pagination.next_call only when present. pagination.total counts all matches; pagination.pages counts accessible pages. If limited, disclose partial coverage and refine criteria to find relevant matches.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"authorities": {
"description": "Buyer or issuing authorities. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"cities": {
"description": "Tender cities. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"closing_date_from": {
"description": "Inclusive closing date lower bound in YYYY-MM-DD format.",
"type": "string"
},
"closing_date_to": {
"description": "Inclusive closing date upper bound in YYYY-MM-DD format.",
"type": "string"
},
"emd_amount_max": {
"description": "Maximum EMD amount.",
"type": "number"
},
"emd_amount_min": {
"description": "Minimum EMD amount. Leaving it unset keeps zero-EMD tenders in range.",
"type": "number"
},
"exclude_keywords": {
"description": "Keywords or phrases to exclude. At most 20, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"filter_id": {
"description": "Optional saved filter ID from list_filters. Preserves all saved criteria; combine only with sort, page and limit. Omit when specifying explicit search criteria.",
"type": "string"
},
"keywords": {
"description": "Keywords or phrases to include. At most 20, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"limit": {
"description": "Records per page. Default and maximum 50 (10 on the Free plan).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"page": {
"description": "Page number, 1 to 5. Defaults to 1.",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"portals": {
"description": "Source tender portals. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"procurement_types": {
"description": "Procurement or tender types. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"product_categories": {
"description": "Product or service categories. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"publish_date_from": {
"description": "Inclusive publication date lower bound in YYYY-MM-DD format.",
"type": "string"
},
"publish_date_to": {
"description": "Inclusive publication date upper bound in YYYY-MM-DD format.",
"type": "string"
},
"show_na_amount": {
"description": "Include tenders whose amount is unavailable when an amount range is used.",
"type": "boolean"
},
"show_na_emd": {
"description": "Include tenders that publish no EMD amount, mostly GeM bids where EMD is not required.",
"type": "boolean"
},
"sort": {
"description": "Result order. publish_date_asc means oldest publication first; publish_date_desc means newest first.",
"enum": [
"relevance",
"closing_date_asc",
"closing_date_desc",
"tender_amount_desc",
"tender_amount_asc",
"publish_date_desc",
"publish_date_asc",
"last_activity_desc",
"updated_at_desc",
"created_at_desc"
],
"type": "string"
},
"states": {
"description": "Tender states or union territories. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"statuses": {
"description": "Tender status buckets: active, under_evaluation, awarded, or cancelled. At most 50 values, each at most 120 characters.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"tender_amount_max": {
"description": "Maximum tender amount.",
"type": "number"
},
"tender_amount_min": {
"description": "Minimum tender amount.",
"type": "number"
}
},
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "resolve_tenders",
"title": "Resolve Tender Identifiers",
"description": "Find tenders by a source portal tender ID or reference number: every exact match across all lifecycle statuses, as summaries. A reference number may match several tenders; show them all and let the user choose. Call get_tender with a match's id for full details. Pass either an identifier with optional portal_name, or a continuation cursor alone.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"description": "Opaque next_cursor. Send alone, optionally with limit.",
"type": "string"
},
"limit": {
"description": "Records per page. Default and maximum 50.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"portal_name": {
"description": "Optional source portal namespace.",
"type": "string"
},
"tender_id": {
"description": "Exact portal tender ID, for example GEM/2026/B/7406250. Supply this or tender_reference_number, not both.",
"type": "string"
},
"tender_reference_number": {
"description": "Exact buyer/notice reference; may match several tenders.",
"type": "string"
}
},
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "get_tender",
"title": "Get Tender",
"description": "Get full tender details by Tenderkart internal tender UUID, including document IDs, bidder_count and, for an awarded tender, award.winning_bidders (company name and awarded value). Other participants and their quotes are not listed, so bidders is always empty.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"tender_uuid": {
"description": "Copy the exact internal UUID from search_tenders, list_filter_tenders or resolve_tenders. Do not invent it or use a portal tender ID.",
"type": "string"
}
},
"required": [
"tender_uuid"
],
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "list_tender_documents",
"title": "List Tender Documents",
"description": "List document IDs and names for a Tenderkart tender UUID. To read one, download it with prepare_tender_document_download if you can fetch URLs and open files yourself (preferred), otherwise use read_tender_document.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"tender_uuid": {
"description": "Copy the exact internal UUID from search_tenders, list_filter_tenders or resolve_tenders. Do not invent it or use a portal tender ID.",
"type": "string"
}
},
"required": [
"tender_uuid"
],
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "prepare_tender_document_download",
"title": "Prepare Tender Document Download",
"description": "Return a signed link, valid for 30 minutes, to download one document. If you can fetch URLs and open files yourself (for example a coding agent with a shell), prefer this: download the file and read it directly. If you cannot (a chat app's sandbox usually cannot reach the link), give the link to the user and use read_tender_document for the text. Uses one of the account's monthly tender downloads, once per tender; other documents of the same tender are then free.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"document_id": {
"description": "Copy the document ID from get_tender or list_tender_documents exactly; never reconstruct, shorten or edit it.",
"type": "string"
}
},
"required": [
"document_id"
],
"type": "object"
},
"outputSchema": {
"properties": {
"content_type": {
"type": "string"
},
"document_id": {
"type": "string"
},
"download": {
"type": "object"
},
"file": {
"description": "The document as a file reference, for hosts that fetch and attach files (ChatGPT).",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object"
},
"file_name": {
"type": "string"
}
},
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
},
{
"name": "read_tender_document",
"title": "Read Tender Document",
"description": "Read the text of one tender document when you cannot download files yourself; if you can fetch URLs and open files, prefer prepare_tender_document_download and read the file directly. Returns the text page by page with page numbers: PDF (scanned pages read with OCR, a few per call), Word, Excel, or every file inside a zip, rar or 7z archive, about 20 pages a call; pass next_start from the result to read on. Cite the file and page. Uses one of the account's monthly tender downloads, once per tender, as downloading on the website does.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"document_id": {
"description": "Copy the document ID from get_tender or list_tender_documents exactly; never reconstruct, shorten or edit it.",
"type": "string"
},
"start": {
"description": "Where to continue: next_start from the previous result. Omit for the beginning.",
"maximum": 100000,
"minimum": 0,
"type": "integer"
}
},
"required": [
"document_id"
],
"type": "object"
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
}
}
]
}
SHA-256: 96b4225008a04d52999914f87f11c258499f3fee422663aba6323b2fede4a9fb