← Files TenderkartARCHIVED FILE

tools.json

16.1 KB · Nov 3, 2026 · 18:56 UTC

↓ Download file

{
  "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