Evidence-backed RFP responses, reviewed together.
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.
Run a bid/no-bid fit check on a solicitation: five questions scored 0 to 2, for a fit read of Strong fit, Worth a closer look, or Likely pass. This is a fit score, never a win prediction. Needs the solicitation text or file plus a short title, source, and the five answers. Starts an analysis job and returns a result token; call get_bid_check_result with the token to read the verdict. Free, no sign-in.
Short title for the bid, up to 200 characters.
Where the solicitation came from, up to 500 characters.
Must be true: confirms the source may be processed.
Solicitation text, 40 to 100000 characters. Provide text or file.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tendercrest-ai https://www.tendercrestai.com/mcp
Run a bid/no-bid fit check on a solicitation: five questions scored 0 to 2, for a fit read of Strong fit, Worth a closer look, or Likely pass. This is a fit score, never a win prediction. Needs the solicitation text or file plus a short title, source, and the five answers. Starts an analysis job and returns a result token; call get_bid_check_result with the token to read the verdict. Free, no sign-in.
| Argument | Type | Description |
|---|---|---|
| file | object | |
| text | string | Solicitation text, 40 to 100000 characters. Provide text or file. |
| title* | string | Short title for the bid, up to 200 characters. |
| source* | string | Where the solicitation came from, up to 500 characters. |
| answers* | object | |
| processingConsent* | boolean | Must be true: confirms the source may be processed. |
{
"type": "object",
"required": [
"title",
"source",
"answers",
"processingConsent"
],
"properties": {
"file": {
"type": "object",
"required": [
"name",
"extension",
"data"
],
"properties": {
"data": {
"type": "string",
"description": "Base64 file contents, up to 2 MB."
},
"name": {
"type": "string",
"description": "File name, ending in .pdf or .docx."
},
"extension": {
"enum": [
"pdf",
"docx"
],
"type": "string"
}
},
"additionalProperties": false
},
"text": {
"type": "string",
"description": "Solicitation text, 40 to 100000 characters. Provide text or file."
},
"title": {
"type": "string",
"description": "Short title for the bid, up to 200 characters."
},
"source": {
"type": "string",
"description": "Where the solicitation came from, up to 500 characters."
},
"answers": {
"type": "object",
"required": [
"deadline",
"hours",
"eligibility",
"performance",
"evidence"
],
"properties": {
"hours": {
"type": "number",
"description": "Team hours available, 0 to 100000."
},
"deadline": {
"type": "string",
"description": "Response deadline, YYYY-MM-DD."
},
"evidence": {
"enum": [
"most",
"some",
"little"
],
"type": "string"
},
"eligibility": {
"enum": [
"yes",
"no",
"unsure"
],
"type": "string"
},
"performance": {
"enum": [
"similar",
"related",
"none"
],
"type": "string"
}
},
"additionalProperties": false
},
"processingConsent": {
"type": "boolean",
"description": "Must be true: confirms the source may be processed."
}
},
"additionalProperties": false
}Read the result of a check_bid_fit job using its result token. Returns the status and, when complete, the fit verdict, the score out of 10, the factor breakdown, the top reasons, and the top gaps. Free, no sign-in.
| Argument | Type | Description |
|---|---|---|
| token* | string | Result token returned by check_bid_fit. |
| resume | boolean | Set true to restart a stalled job. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Result token returned by check_bid_fit."
},
"resume": {
"type": "boolean",
"description": "Set true to restart a stalled job."
}
},
"additionalProperties": false
}Read one SAM.gov opportunity by its notice URL or 32-character notice ID, including the notice description text when SAM.gov returns it. Descriptions are not complete solicitation packages; attachments are not imported. Free, no sign-in.
| Argument | Type | Description |
|---|---|---|
| notice* | string | SAM.gov notice URL or 32-character notice ID. |
{
"type": "object",
"required": [
"notice"
],
"properties": {
"notice": {
"type": "string",
"description": "SAM.gov notice URL or 32-character notice ID."
}
},
"additionalProperties": false
}Read one saved revision of the signed-in user's own proposal. Read-only. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| revision* | integer | Revision number, 0 or higher. |
| projectId* | string | Proposal ID from list_proposals. |
{
"type": "object",
"required": [
"projectId",
"revision"
],
"properties": {
"revision": {
"type": "integer",
"description": "Revision number, 0 or higher."
},
"projectId": {
"type": "string",
"description": "Proposal ID from list_proposals."
}
},
"additionalProperties": false
}Read the result of a shred_rfp job using its result token. Returns the status and, when complete, the numbered requirements, the gap preview, and any warnings. Free, no sign-in.
| Argument | Type | Description |
|---|---|---|
| token* | string | Result token returned by shred_rfp. |
| resume | boolean | Set true to restart a stalled job. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Result token returned by shred_rfp."
},
"resume": {
"type": "boolean",
"description": "Set true to restart a stalled job."
}
},
"additionalProperties": false
}List the signed-in user's own company evidence for one organization: uploaded source documents and saved answers with their approval state. Only returns evidence the user's organization owns. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| orgId* | string | Organization ID from list_organizations. |
{
"type": "object",
"required": [
"orgId"
],
"properties": {
"orgId": {
"type": "string",
"description": "Organization ID from list_organizations."
}
},
"additionalProperties": false
}List the knowledge organizations (company evidence libraries) the signed-in TenderCrest user belongs to. Needs a TenderCrest account.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List saved records for one of the signed-in user's own proposals: jobs, files, activity, notifications, assessments, or approvals. Read-only. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| page | integer | Results page, 0 to 1000. Default 0. |
| projectId* | string | Proposal ID from list_proposals. |
{
"type": "object",
"required": [
"projectId",
"kind"
],
"properties": {
"kind": {
"enum": [
"jobs",
"files",
"activity",
"notifications",
"assessments",
"approvals"
],
"type": "string"
},
"page": {
"type": "integer",
"description": "Results page, 0 to 1000. Default 0."
},
"projectId": {
"type": "string",
"description": "Proposal ID from list_proposals."
}
},
"additionalProperties": false
}List the signed-in TenderCrest user's own proposals (projects), newest first. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| page | integer | Results page, 0 to 1000. Default 0. |
| query | string | Title search, up to 200 characters. |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Results page, 0 to 1000. Default 0."
},
"query": {
"type": "string",
"description": "Title search, up to 200 characters."
}
},
"additionalProperties": false
}Read one evidence source document and its extracted text chunks, for the signed-in user's own organization. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| orgId* | string | Organization ID from list_organizations. |
| documentId* | string | Document ID from list_evidence. |
{
"type": "object",
"required": [
"orgId",
"documentId"
],
"properties": {
"orgId": {
"type": "string",
"description": "Organization ID from list_organizations."
},
"documentId": {
"type": "string",
"description": "Document ID from list_evidence."
}
},
"additionalProperties": false
}Read one of the signed-in user's own proposals in full: project state, sections, requirements, evidence decisions, jobs, files, activity, approvals, and readiness. Read-only. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| projectId* | string | Proposal ID from list_proposals. |
{
"type": "object",
"required": [
"projectId"
],
"properties": {
"projectId": {
"type": "string",
"description": "Proposal ID from list_proposals."
}
},
"additionalProperties": false
}Search the signed-in user's own company evidence for one organization by meaning, using the same semantic search as the web app. Returns matching evidence with citations. Needs a TenderCrest account.
| Argument | Type | Description |
|---|---|---|
| orgId* | string | Organization ID from list_organizations. |
| query* | string | Search text, up to 2000 characters. |
{
"type": "object",
"required": [
"orgId",
"query"
],
"properties": {
"orgId": {
"type": "string",
"description": "Organization ID from list_organizations."
},
"query": {
"type": "string",
"description": "Search text, up to 2000 characters."
}
},
"additionalProperties": false
}Search live SAM.gov federal opportunities from the past 364 days. Returns up to 25 notices per page with title, agency, deadline, NAICS, PSC, set-aside, and the canonical SAM.gov link. Federal notices only; no contract value bands are published. Free, no sign-in. Limited to 10 searches per day, shared with the web feed.
| Argument | Type | Description |
|---|---|---|
| psc | string | 4-character product service code. |
| page | integer | Results page, 0 to 9. Default 0. |
| naics | string | 6-digit NAICS code. |
| keyword | string | Keyword search, up to 100 characters. |
| setAside | string | Set-aside type code, up to 12 characters. |
{
"type": "object",
"properties": {
"psc": {
"type": "string",
"description": "4-character product service code."
},
"page": {
"type": "integer",
"description": "Results page, 0 to 9. Default 0."
},
"naics": {
"type": "string",
"description": "6-digit NAICS code."
},
"keyword": {
"type": "string",
"description": "Keyword search, up to 100 characters."
},
"setAside": {
"type": "string",
"description": "Set-aside type code, up to 12 characters."
}
},
"additionalProperties": false
}Shred an RFP or solicitation into a numbered requirement list with a gap preview. Paste text or upload a PDF or DOCX. AI extraction can miss requirements and every requirement needs human review. This starts an analysis job and returns a result token; call get_shred_result with the token to read the requirements. Free, no sign-in. Limited to 3 shreds per day, shared with the web shredder.
| Argument | Type | Description |
|---|---|---|
| file | object | |
| text | string | Solicitation text, 40 to 100000 characters. Provide text or file. |
| title | string | Short title for the solicitation, up to 200 characters. |
| source | string | Where the solicitation came from, up to 500 characters. |
| processingConsent* | boolean | Must be true: confirms the source may be processed to extract requirements. |
{
"type": "object",
"required": [
"processingConsent"
],
"properties": {
"file": {
"type": "object",
"required": [
"name",
"extension",
"data"
],
"properties": {
"data": {
"type": "string",
"description": "Base64 file contents, up to 2 MB."
},
"name": {
"type": "string",
"description": "File name, ending in .pdf or .docx."
},
"extension": {
"enum": [
"pdf",
"docx"
],
"type": "string"
}
},
"additionalProperties": false
},
"text": {
"type": "string",
"description": "Solicitation text, 40 to 100000 characters. Provide text or file."
},
"title": {
"type": "string",
"description": "Short title for the solicitation, up to 200 characters."
},
"source": {
"type": "string",
"description": "Where the solicitation came from, up to 500 characters."
},
"processingConsent": {
"type": "boolean",
"description": "Must be true: confirms the source may be processed to extract requirements."
}
},
"additionalProperties": false
}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 13, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.