Sell to State
Government tenders, contract awards, buyers and suppliers from official sources in 60+ countries.
我該用這個嗎
品質與安全性
發現項目(4)
- LOW在 get_tender 中
- LOW在 list_buyers 中
- LOW在 list_suppliers 中
- LOW在 list_sectors 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"mcp": {
"url": "https://app.selltostate.com/api/mcp"
}
}
}遠端端點
https://app.selltostate.com/api/mcpstreamable-http它能做什麼
工具清單
工具(26)
⚪whoami
Self-introspection: resolve the caller's identity + entitlement + granted scopes. Returns {subject, type, active, plan, scopes, export_cap}. Works even when inactive (active:false) so an agent can verify auth and decide whether to pay before doing work.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢search_awards(country, q, agency, agency_slug, supplier, ...)
Search awarded tenders in one country (Postgres), largest amount first, stable paging. Every filter is a property of this schema; country omitted means singapore. A bad value or an unknown argument is an invalid-params error whose data lists every problem (errors[]). Returns {rows, total, page, pageSize}.
輸入結構描述
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Country slug. Omitted means singapore."
},
"q": {
"type": "string",
"description": "Text in the tender description (substring)."
},
"agency": {
"type": "string",
"description": "Buyer slug, or text in the buyer name (substring)."
},
"agency_slug": {
"type": "string",
"description": "Buyer slug, exact match."
},
"supplier": {
"type": "string",
"description": "Text in the supplier name (substring)."
},
"supplier_slug": {
"type": "string",
"description": "Supplier slug, exact match."
},
"category": {
"type": "string",
"description": "Sector slug, for example it-software."
},
"year": {
"type": "integer",
"description": "Award year (publication year when the award date is missing)."
},
"amount_min": {
"type": "number",
"description": "Minimum awarded amount."
},
"amount_max": {
"type": "number",
"description": "Maximum awarded amount."
},
"published_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Published in the last N days (UTC days)."
},
"awarded_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Awarded in the last N days (UTC days)."
},
"date_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Published or awarded in the last N days (UTC days)."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number, from 1."
},
"page_size": {
"type": "integer",
"minimum": 1,
"description": "Rows per page, from 1. Default 100; the plan cap and 1,000 apply."
}
}
}🟢get_supplier(supplier)
All awards for one supplier (by display-name match).
輸入結構描述
{
"type": "object",
"properties": {
"supplier": {
"type": "string"
}
},
"required": [
"supplier"
]
}🟢get_agency(agency)
All awards for one agency (by slug or display-name match).
輸入結構描述
{
"type": "object",
"properties": {
"agency": {
"type": "string"
}
},
"required": [
"agency"
]
}🟡export(country, q, agency, supplier, category, ...)
Export a filtered award set as CSV. country omitted means singapore. A bad country is an error, not a Singapore file.
輸入結構描述
{
"type": "object",
"properties": {
"country": {
"type": "string"
},
"q": {
"type": "string"
},
"agency": {
"type": "string"
},
"supplier": {
"type": "string"
},
"category": {
"type": "string"
},
"year": {
"type": "integer"
},
"amount_min": {
"type": "integer"
},
"amount_max": {
"type": "integer"
}
}
}🟢get_buyer(slug, sup_page)
Buyer (agency) detail by slug: summary stats, yearly spend trend, sector breakdown, and top suppliers.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"sup_page": {
"type": "integer"
}
},
"required": [
"slug"
]
}🟢get_buyer_detail(slug, sup_page)
Alias of get_buyer (back-compat). Buyer (agency) detail by slug: summary stats, yearly spend trend, sector breakdown, and top suppliers.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"sup_page": {
"type": "integer"
}
},
"required": [
"slug"
]
}🟢get_supplier_detail(slug, buyer_page)
Supplier detail by slug: summary stats, yearly awarded trend, sector breakdown, and top buyers.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"buyer_page": {
"type": "integer"
}
},
"required": [
"slug"
]
}🟢get_tender(id)
Single tender (award) detail by numeric award_id OR public tender page id, with related awards (same tender / same buyer).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟢get_sector(slug, kind, page)
Sector detail by slug: summary stats, yearly trend, and active partners (kind=buyers|suppliers).
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"buyers",
"suppliers"
]
},
"page": {
"type": "integer"
}
},
"required": [
"slug"
]
}🟢search(q, scope, country, sector, type, ...)
Faceted full-text search over one collection (scope). Every filter is a property of this schema, the same params as REST GET /api/v1/search; values of a fixed list are matched in any case. A bad value or an unknown argument is an invalid-params error whose data lists every problem (errors[]). Tender hits carry lifecycle, deadline_at, accepts_bids and source_url when the source gives them. Returns {hits, found, page, per_page, facets}.
輸入結構描述
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text, at most 120 characters."
},
"scope": {
"type": "string",
"enum": [
"suppliers",
"tenders",
"buyers",
"sectors",
"countries"
],
"description": "The collection to search. Default tenders."
},
"country": {
"type": "string",
"description": "Country slug, or comma-separated slugs (OR)."
},
"sector": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sector slugs (OR), for example it-software."
},
"type": {
"type": "string",
"description": "Procurement type, for example works, goods or services. Only some countries have it."
},
"status": {
"type": "string",
"enum": [
"data",
"coming_soon"
],
"description": "Countries scope only: data (the country has data) or coming_soon."
},
"year_min": {
"type": "integer",
"description": "Earliest year (award year, else publication year)."
},
"year_max": {
"type": "integer",
"description": "Latest year (award year, else publication year)."
},
"amount_min": {
"type": "number",
"description": "Minimum amount."
},
"amount_max": {
"type": "number",
"description": "Maximum amount."
},
"lifecycle": {
"type": "array",
"items": {
"type": "string",
"enum": [
"open",
"awarded",
"cancelled",
"planned"
]
},
"description": "Tender lifecycle values (OR)."
},
"lifecycle_mode": {
"type": "string",
"enum": [
"is",
"is_not"
],
"description": "is (default) keeps the lifecycle values; is_not leaves them out."
},
"has_amount": {
"type": "boolean",
"description": "true: only rows with an amount. false: only rows without one."
},
"published_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Published in the last N days (UTC days)."
},
"awarded_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Awarded in the last N days (UTC days)."
},
"date_days": {
"type": "integer",
"enum": [
7,
30,
90,
365
],
"description": "Published or awarded in the last N days (UTC days)."
},
"accepts_bids": {
"type": "boolean",
"description": "true: only open tenders whose bid deadline is still ahead."
},
"sort": {
"type": "string",
"enum": [
"relevance",
"deadline"
],
"description": "relevance (default) or deadline (the nearest bid deadline first)."
},
"match": {
"type": "string",
"enum": [
"awards",
"name"
],
"description": "Text match mode for the suppliers and buyers scopes."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number, from 1."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Results per page, 1 to 50. Default 25."
}
}
}🟢list_buyers(limit)
Top buyers (agencies) by total spend.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"type": "integer"
}
}
}🟢list_suppliers(limit)
Top suppliers by total awarded.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"type": "integer"
}
}
}🟢list_sectors
The curated sector taxonomy (slug + name).
輸入結構描述
{
"type": "object",
"properties": {}
}🟢get_lists
List every saved award list the caller (x-api-key owner) can see. Each list has itemCount (tender items only), buyerCount, supplierCount and totalCount (all items). Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {}
}🟡create_list(name)
Create a new saved award list (personal). Body: name. Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}🟢get_list(id, page, page_size)
One saved list with paginated items joined to award data (description/buyer/supplier/amount/date). Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"page": {
"type": "integer"
},
"page_size": {
"type": "integer"
}
},
"required": [
"id"
]
}🟢rename_list(id, name)
Rename a saved list. Body: id, name. Requires a user API key (creator or workspace owner).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}🔴delete_list(id)
Delete a saved list (and its items). Body: id. Requires a user API key (creator or workspace owner).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟡add_to_list(id, tender_no, award_id)
Add a tender to a saved list. Body: id (list id) + tender_no OR award_id. Idempotent. Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tender_no": {
"type": "string"
},
"award_id": {
"type": "string"
}
},
"required": [
"id"
]
}🔴remove_from_list(id, tender_no)
Remove a tender from a saved list. Body: id (list id) + tender_no. Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tender_no": {
"type": "string"
}
},
"required": [
"id",
"tender_no"
]
}🟢get_saved_searches
List every saved search the caller (x-api-key owner) can see (personal + shared workspace). Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {}
}🟡save_search(name, query, kind)
Save a search under a name. Body: name, query (filter set), kind? ('atlas' → unified-search shape, else legacy Explorer filters). Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"query": {
"type": "object"
},
"kind": {
"type": "string",
"enum": [
"atlas"
]
}
},
"required": [
"query"
]
}🟢get_saved_search(id)
One saved search by id (visible to the caller, else not_found). Requires a user API key.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟢rename_saved_search(id, name)
Rename a saved search. Body: id, name. Requires a user API key (creator or workspace owner).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}🔴delete_saved_search(id)
Delete a saved search. Body: id. Requires a user API key (creator or workspace owner).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}社群
證據