Winquill
Server Details
Public tenders and contract awards in the UK, US, Canada and EU, and help preparing bids.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 44 tools
Most tools target distinct resources or actions, and many descriptions include explicit cross-references such as 'do not use X, use Y'. However, several clusters remain easy to confuse: setup/profile/settings tools (set_up_tenda, finish_setup, save_company_profile, get_tenda_settings, update_tenda_settings), bid drafting tools (start/continue/get/draft/review/rewrite), and automation/watch/alert tools. With 44 tools, an agent must disambiguate many adjacent workflow concepts.
Nearly all tools use snake_case and a predictable verb_noun pattern, such as search_tenders, get_tender_details, record_bid_call, and turn_on_automation. There are minor deviations like open_tenda, tenda_changes, open_bid_panel, and the set_up_tenda/finish_setup pair, but the convention remains readable and mostly consistent.
At 44 tools, this is well beyond the typically well-scoped 3–15 range and into the 'too many' band. The domain is rich, but the surface includes internal UI helpers, multiple setup flows, and many adjacent bid/automation/watch operations that make the server heavy for an agent to navigate.
The surface covers tender search, details, awards, coverage, pipeline lifecycle, bid calls, sprint steps, drafting/review/rewrite, readiness/fit checks, documents, watches, alerts, automations, settings, and company profile setup. Some lifecycle gaps remain, such as no update/delete company profile, no edit automation rules, and no update watch operation, but most are workaroundable.
Available Tools
44 toolsadd_automationAdd an automationAInspect
Use this when the user wants Winquill to do something on its own, again and again: add strong fits to the pipeline, remind people of sprint steps, check a bid before it closes, say what a buyer changed, or send a morning shortlist or a report. Makes one from the library, saved off. Read its rules back to the user; it runs only once turned on with turn_on_automation. Automations never submit a bid, write to a buyer or email anyone outside the team. Needs a Winquill account. Example: {"template":"morning_shortlist"}
| Name | Required | Description | Default |
|---|---|---|---|
| asked | No | What the user asked for, in their words. | |
| changes | No | What the user asked to change from the library's version. | |
| template | Yes | The library automation to make: morning_shortlist (Morning shortlist: Each weekday, the best new fits, each with a line on why it fits.); strong_fit (Strong fit to pipeline: Adds strong fits to the pipeline, checks readiness and gives out the bid call.); change_guard (Change guard: Says what a buyer changed and moves the sprint's dates to a new deadline.); renewals (Certificates and renewals: 60, 30 and 7 days before a certificate, policy or registration runs out.); sprint_autopilot (Sprint on autopilot: Reminds whoever has a step two working days before it's due, and says when one is late.); pre_submission (Pre-submission check: 72 hours out: word limits, gaps and open steps. 24 hours out: is it in?); award_debrief (Award and debrief: Says who won when the award is published, and drafts a request for feedback.); weekly_report (Weekly pipeline report: Mondays: pipeline value, bids due, results and anything overdue.). | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the created automation is inert until enabled via turn_on_automation, its rules should be read back to the user for confirmation, and there are hard safety boundaries ("never submit a bid, write to a buyer or email anyone outside the team"). These details directly address the risk profile of a non-destructive but state-creating mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, which is good, but the five-item example list ("add strong fits to the pipeline, remind people of sprint steps, check a bid...") largely restates the template enum descriptions already in the schema, spending words on redundancy rather than new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers activation state, safety limits, account prerequisite, and confirmation behavior. An agent has everything needed to call this correctly, including the follow-up turn_on_automation step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the template enum itself carries per-template explanation, so the schema does the heavy lifting. The description contributes only a minimal invocation example ({"template":"morning_shortlist"}) and the idea that changes are deltas from the library version, adding little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the trigger condition clearly ("when the user wants Winquill to do something on its own, again and again") and the action ("Makes one from the library, saved off"), which is a specific verb+resource. It is distinguishable from turn_on_automation and list_automations, though the core verb "add" is only implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger scenario with several concrete examples of what users ask for, and names the sibling that follows: the automation "runs only once turned on with turn_on_automation." It also states a prerequisite ("Needs a Winquill account"), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tender_documentsRead tender documentsADestructiveInspect
Use this when the user shares text from a tender's documents, or wants Winquill to read the files the buyer published with the notice (read_published, signed in). Returns a checklist of everything the bid must include, each with its file, page and the buyer's own words, and the requirements the notice leaves out, such as turnover, insurance and certifications. When the workspace can use Winquill's AI, it also returns the questions the buyer scores and how they're marked. Not for documents unrelated to a tender. Example: {"tender_reference":"012345-2026","read_published":true}
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | The document text the user shared, not a file link: an invitation to tender, selection questionnaire, specification or instructions to bidders. Needed unless read_published is true. Signed in, later fit and readiness checks for the tender include what Winquill reads; signed out, it keeps nothing. | |
| title | No | The document name, e.g. "Invitation to Tender Part 2". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| read_published | No | true to have Winquill fetch and read the files the buyer published with the notice, up to 8 (PDF, Word, Excel, web pages and ZIPs of them). Needs sign-in. Reading the scored questions with Winquill's AI uses a check's worth of the workspace's usage. | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| files | No | |
| found | No | |
| notRead | No | |
| scoring | No | How the buyer marks answers: its marks and what earns each, the pass mark, and how the award is split. |
| summary | Yes | |
| signedIn | No | |
| tenderId | No | |
| checklist | No | Everything the bid must have, each with the file and page it's in, what to provide, and the buyer's own words (at most 280 characters). |
| questions | No | The questions the buyer scores, with word limits and weights in per cent. Read by Winquill's AI; absent when it wasn't, and note says why. |
| reference | No | |
| requirementsFound | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Going beyond the annotations, it discloses sign-in requirements, that fetching published files pulls up to a limited set of external documents, and that scored questions only appear when the workspace has AI enabled and consume usage. It does not explain the persistent side of the operation implied by destructiveHint=true (that readings are stored and later reused), leaving the mutation profile partly implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a 'Use this when' trigger, followed by return content and an exclusion, ending with a compact example. The middle sentences are long and stack several conditions at once, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and annotations already carrying safety signals, the description covers triggers, return content and the AI-conditional path. The one material gap is the persistence/overwrite behavior implied by destructiveHint=true, which the agent would need to warn the user about.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3; the description adds real value by showing a worked example object and tying read_published to its behavioral consequence ('signed in'). It still does not clarify the relationship between providing text and read_published (mutually exclusive vs additive) beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read the files the buyer published with the notice', 'text from a tender's documents') and names exactly what comes back: a checklist of bid requirements plus the notice's omissions. An agent can tell this apart from get_tender_details or assess_tender_fit because the output shape (per-item file, page, buyer's words) is spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear triggering conditions ('when the user shares text from a tender's documents, or wants Winquill to read the files the buyer published') and an exclusion ('Not for documents unrelated to a tender'), plus a concrete example call. It never names an alternative sibling tool for the adjacent cases (e.g. tender fit or readiness), so routing between siblings is still inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_pipelineAdd to pipelineAIdempotentInspect
Use this when the user wants to save a tender to their team's pipeline to consider bidding, e.g. "add this to our pipeline" or "let's track the Falkirk cleaning framework". Adds it in Watching, ready for the bid or no-bid call, and says which e-tendering portal the tender is run on. Until the team has said whether it has an account on that portal, the answer asks; pass the question on, and record the reply with record_portal_account. Needs a Winquill account and workspace. Do not use for alerts about new tenders (use watch_tenders) or to record a decision to bid (use record_bid_call).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| more_references | No | More tenders to add at the same time, by the same kind of reference, when the user asks for several, e.g. "add the two best fits". Up to 4. | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| added | No | |
| stage | No | |
| tender | No | |
| summary | Yes | |
| tenders | No | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotent, non-destructive, closed-world), the description discloses the initial pipeline state ('Watching'), that the response reports the e-tendering portal, and the follow-up loop when the portal account is unknown (ask, pass the question on, then record_portal_account). It also names the account/workspace prerequisite. It doesn't cover error cases such as an unknown reference, but the added behavioral context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the trigger condition and tightens toward exclusions at the end, with every sentence carrying routing or behavioral payload. It is dense and slightly run-on across the prerequisites and follow-up sentences, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values needn't be described; the description instead supplies the prerequisites, the resulting pipeline state, and the portal-account follow-up flow. For a one-required-parameter mutation, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented with examples of reference formats and the workspace-naming rule. The description adds nothing about parameter syntax or the multi-reference behavior, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: save a tender to the team's pipeline for consideration, landing it in the 'Watching' stage. It also distinguishes itself from the nearest siblings by name (watch_tenders for alerts, record_bid_call for decisions), so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger phrases ("add this to our pipeline", "let's track the Falkirk cleaning framework") plus two explicit exclusions that name the alternative tool for each case. The when/when-not split is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_winning_bidShare a winning bid with WinquillAInspect
Use this when the user shares a bid their company won, for Winquill to learn from, e.g. after Winquill offers to learn from winning bids. Winquill keeps it in the workspace's Library and learns what worked in it (structure, tone, the evidence it uses) for the bids it drafts. Pass the bid's text as the user shared it, not a link. Needs a Winquill account and workspace. Do not use for the buyer's questions for a new bid (use start_bid_draft or continue_bid_draft).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The winning bid's text: its answers, as the user shared them. | |
| title | No | What it was, e.g. "Glasgow schools cleaning, 2024". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| saved | No | |
| title | No | |
| words | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it says the bid is stored in the workspace's Library, that it is used to learn structure/tone/evidence for future drafts, and that it requires an account and workspace. The 'pass text, not a link' constraint is a real behavioral rule. It stops short of saying what happens on duplicate submissions or whether the upload is processed asynchronously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then effect, then constraint, then exclusions — good ordering. It is a dense sentence chain with several clauses, but no clause is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers trigger, storage effect, learning behavior, and prerequisites. Minor gap is what the agent should do if the account/workspace is missing, or how to handle content that fails the 200-char minimum.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds genuine meaning by specifying the text must be the bid's own content as the user shared it rather than a URL. The title and workspace params are only covered by the schema, which is acceptable at full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — the user shares a won bid so Winquill can learn from it — and immediately contrasts with the drafting siblings (start_bid_draft / continue_bid_draft). An agent can distinguish this from every other add_* sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger (the user shares a winning bid, often after Winquill offers to learn from one), an explicit exclusion (not for buyer questions on a new bid), the named alternatives to use instead, and the prerequisite of a Winquill account and workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_tender_fitAssess bid fitARead-onlyInspect
Use this when the user asks whether their business should bid for a public contract, or which open tenders suit them best. Compares the tender's conditions of participation (turnover, insurance levels, experience and certifications), location and lot sizes with the company's profile, and returns a fit score with reasons, likely disqualifiers and gaps. Omit tender_reference to rank the open tenders that suit the company. It does not predict or guarantee an award. Do not use for general business strategy or for private-sector sales leads.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | When ranking without a tender_reference: the kind of work to look for, e.g. "NHS cleaning". | |
| country | No | The country to look in, when the user names one, e.g. "Canada", "UK" or "Spain" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU. | |
| business_size | No | The company's size, e.g. "small" for under 50 staff. Use "vcse" for charities and social enterprises. | |
| company_summary | No | What the company does, its size, turnover, certifications, insurance, where it works and past contracts, in the user's words, e.g. "6-person electrical contractor in Leeds, £800k turnover, CHAS and Cyber Essentials". Optional when the user has a saved Winquill profile. | |
| more_references | No | More tenders to judge in the same call, by the same kind of reference, e.g. to compare a shortlist: up to 19, for 20 in all. Saves a call for each. | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fit | No | |
| found | No | |
| caveat | No | |
| credit | No | |
| tender | No | The same facts as a search_tenders result. |
| results | No | |
| summary | Yes | |
| notFound | No | The references asked for that Winquill has no notice for. |
| profileUsed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real behavioural bounds: the comparison basis, the returned judgement categories, and the explicit disclaimer that it does not predict or guarantee an award. It stops short of stating anything about profile prerequisites or latency, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the trigger, then the mechanism, then the ranking mode, then the exclusions. Nothing is repeated from the schema and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and annotations carry the return shape and safety profile, and the description covers what remains: when to select it, the two operating modes, what dimensions are judged, and the limits of the result. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds cross-parameter semantics the schema only hints at: omitting tender_reference switches the tool from single-tender assessment to ranking, and the 'more_references ... saves a call for each' framing comes from the schema. The profile-vs-company_summary relationship is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('assess... fit for a public contract'), enumerates exactly what is compared (turnover, insurance, experience, certifications, location, lot sizes) and what comes back (fit score with reasons, disqualifiers, gaps). This clearly separates it from search_tenders (find) and check_bid_readiness (prepare to bid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit user-intent trigger ('when the user asks whether their business should bid... or which open tenders suit them best'), gives the mode switch ('omit tender_reference to rank open tenders'), and states two exclusions ('not for general business strategy or private-sector sales leads'). An agent can route on this without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_taskGive out bid workADestructiveIdempotentInspect
Use this when the user gives work on a team bid to someone, or takes it on: "give the Bristol bid call to Sam". The work is the bid call while a tender waits in Watching or Qualifying, or a sprint step, the next one unless named. Says who has it and whether they heard in Slack. When the person's role can't do it, the answer says who can: ask the user before choosing one. Needs a Winquill account and workspace. Not for ticking off a step (use update_bid_sprint) or the call itself (use record_bid_call). Example: {"tender_reference":"012345-2026","person":"Sam","task":"review"}
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | The work: "call" (the bid or no-bid call), or a sprint step: "decode", "assign", "draft", "review", "checks" or "submit". Leave it out for the tender's next piece of work. | |
| person | Yes | Who gets it: their name as the team knows them, e.g. "Sam" or "Sam Okafor", their email, or "me" for the user. Owners, admins and bid leads give out work; anyone can take work their role can do. Someone not in the workspace yet is invited from Today in the Winquill dashboard. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stage | No | |
| tender | No | |
| summary | Yes | |
| assigned | No | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, destructive, closed-world, so the safety floor is set; the description adds real context beyond that — the account/workspace prerequisite, the role-based permission model, and the fallback behaviour when a role is insufficient. What it leaves unstated is the destructiveHint implication: whether assigning over an existing owner replaces the prior assignee, and that a Slack notification is apparently dispatched (only hinted at via "whether they heard in Slack").
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger scenario and closed with prerequisites and exclusions, so every sentence carries information. The one flaw is density: "The work is the bid call while a tender waits in Watching or Qualifying, or a sprint step, the next one unless named" is a run-on that takes a second pass to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be spelled out, and the description still summarizes the response (who has the work, Slack acknowledgement). Prerequisites, permissions, defaults, alternatives and an example are all covered; only the reassignment/overwrite behaviour implied by destructiveHint=true is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description still earns credit for explaining the default semantics of the omitted `task` param ("the next one unless named") and for tying the work types to tender state (bid call while a tender waits in Watching or Qualifying). The inline example JSON shows the interplay of tender_reference, person and task in a way the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource — giving (or taking) a piece of bid work to a person — and anchors it in an explicit user utterance ("give the Bristol bid call to Sam"). It also names the two nearest siblings it is NOT (update_bid_sprint, record_bid_call), so an agent can discriminate it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition, the scope of "work" (bid call while in Watching/Qualifying, or a sprint step defaulting to the next one unless named), the escalation path when the person's role can't do the work ("the answer says who can: ask the user before choosing one"), and explicit exclusions routing to update_bid_sprint and record_bid_call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_bid_readinessCheck bid documentsARead-onlyInspect
Use this when the user wants to know what they're missing before bidding, for one tender or in general: registrations, certifications, insurance, policies and each country's own documents, such as Cyber Essentials in the UK, SAM.gov registration in the US or the DUME in France. A general check follows the user's home country. Returns what is held, missing or expiring. It gives readiness guidance, not legal advice. Not for Companies House look-ups or tax questions. Example: {"tender_reference":"003344-2026","documents_held":["cyber_essentials","iso_9001"]}
| Name | Required | Description | Default |
|---|---|---|---|
| sector | No | The kind of work the company bids for, e.g. "construction", which changes the accreditations buyers expect. | |
| country | No | The country whose rules to check against, when the user names one, e.g. "Canada", "UK" or "Spain". Omit to use the user's home country. Each country has its own registrations, certificates and declarations, e.g. Central Digital Platform registration in the UK, the EEE in Germany or the Kbis in France. | |
| documents_held | No | Documents and certifications the user says they already have, e.g. ["cyber_essentials", "public_liability_insurance", "iso_9001"]. Add an expiry as "cyber_essentials:2026-11-30". | |
| tender_reference | No | Optional tender to check against, e.g. "003344-2026". Omit for a general readiness check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| caveat | No | |
| credit | No | |
| tender | No | The same facts as a search_tenders result. |
| covered | No | |
| summary | Yes | |
| checklist | No | |
| nextSteps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description still adds real context by disclosing the response shape (held/missing/expiring), the home-country fallback behavior, and the scope caveat 'readiness guidance, not legal advice'. It does not cover auth requirements or rate limits, so it stops short of a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger condition is front-loaded before the return description, exclusions and example. The first sentence is long and carries a list of country-specific examples that overlaps the schema's own country description, so it is slightly heavier than needed but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description only needs to supply the trigger, scope and routing caveats — all of which are present. Nothing an agent needs in order to select and invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including the sector enum and the country fallback rule) are already documented and the description largely restates them. Its country examples and the illustrative JSON add light invocation value, but not enough to exceed the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource (check bid readiness for one tender or in general) with a stated output ('Returns what is held, missing or expiring'). It explicitly carves out what it is not for (Companies House look-ups, tax questions), which separates it from siblings like find_company and avoids collisions with the bid-drafting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the user wants to know what they're missing before bidding'), covers both modes (single tender vs general check) and states that a general check falls back to the home country. It also gives clear when-not guidance ('Not for Companies House look-ups or tax questions'), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_alertsChoose where Winquill's alerts goADestructiveIdempotentInspect
Use this when the user wants to change which Slack and Teams channels get Winquill's alerts, or asks where they go: "stop the morning summary in Slack". Change only what the user asked for; with neither send nor stop it changes nothing and says where alerts go now. Owners and admins can change alerts. Needs a Winquill account and workspace. Not for connecting a channel (Winquill dashboard, Settings, Connections) or for email alerts (use watch_tenders). Example: {"app":"slack","stop":["morning_summary"]}
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | "slack" or "teams" for that app's channels. Leave out app and channel for every channel. | |
| only | No | true when what's sent here should go only here: every other channel stops getting it. An app or channel the user didn't mention otherwise keeps its alerts. | |
| send | No | Alerts to turn on in those channels: "new_tenders" (new tenders that fit the company), "changes" (changes to tenders in the pipeline), "morning_summary" (the weekday morning summary), "bid_work" (bid work nobody has yet), or "all". | |
| stop | No | Alerts to turn off in those channels: "new_tenders" (new tenders that fit the company), "changes" (changes to tenders in the pipeline), "morning_summary" (the weekday morning summary), "bid_work" (bid work nobody has yet), or "all". A channel with no alerts stays connected, so the team can still ask Winquill there. | |
| channel | No | One channel, by its name: e.g. "bids" or "#bids" in Slack, or "General" in Teams. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| summary | Yes | |
| channels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, but the description adds the crucial no-op read behavior (with neither send nor stop it changes nothing and reports current routing) and the permission prerequisite that only owners and admins can change alerts. It does not spell out what a 'stop' actually removes or that stopped alerts are reversible, leaving some of the destructive profile unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything is front-loaded: trigger first, then constraints, then exclusions, then an example. It is dense but each sentence carries routing, permission, or precondition information; the quoted user utterance is the only mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% schema coverage, the description need not explain return values, and it covers what structured fields cannot: the permissions model, account/workspace prerequisite, the no-op semantics, and where to go for adjacent tasks. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meaning is already documented; the description still adds value by supplying a concrete call example ({"app":"slack","stop":["morning_summary"]}) that shows how app, stop, and channel combine, and by stating the change-only-what-was-asked constraint that governs send/stop usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (change) and resource (which Slack and Teams channels get Winquill's alerts) and explicitly distinguishes itself from connecting a channel and from email alerts via watch_tenders. An agent can tell it apart from siblings like watch_tenders or turn_on_automation without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger (the user wants to change alert destinations or asks where they go), quotes a real utterance, and names two alternatives with routing instructions: the Winquill dashboard for connecting channels and watch_tenders for email alerts. It also states the no-op case when neither send nor stop is supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_bid_draftCarry on Winquill's bid draftADestructiveInspect
Use this to carry on a bid draft Winquill started with start_bid_draft: give it the buyer's questions it asked for, the team's answers to the questions Winquill asked, or the go-ahead to draft now with what it has (Winquill marks the gaps [TO CONFIRM]). Drafting starts once Winquill's questions are answered, or when draft_now is true. Pass each answer with the question's number or words. Needs a Winquill account. Do not use for a new bid (use start_bid_draft).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Anything else the team wants Winquill to use in the bid. | |
| answers | No | The team's answers to Winquill's questions. | |
| draft_id | No | The draft's ID, from start_bid_draft. Or give the tender's reference instead, or neither for the workspace's latest draft. | |
| draft_now | No | true to start drafting now, with any of Winquill's questions unanswered. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| questions_text | No | The buyer's questions, when Winquill asked for them. | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| tender | No | |
| draftId | No | |
| summary | Yes | |
| progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the definition says drafting starts only once the questions are answered or draft_now is true, that Winquill marks unanswered gaps as [TO CONFIRM], and that a Winquill account is required. It does not say what happens to answers already sent or whether resuming rewrites existing draft content, which is the notable gap for a destructiveHint=true tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition front-loads the purpose and the trigger, and every sentence is on-topic. Slightly repetitive: 'the go-ahead to draft now' and 'Drafting starts ... when draft_now is true' state the same rule twice, and the start_bid_draft exclusion appears at the end after being implied at the start.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven params, an output schema, and full annotations, the definition supplies the trigger logic, the account requirement, the gap-marking behavior, and the sibling boundary. What it leaves out is the state effect of resuming (what is overwritten or locked), the one area not covered by the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents draft_id, tender_reference, workspace, and the answers shape. The definition's 'Pass each answer with the question's number or words' repeats what the schema states. It adds mildly by linking answers, questions_text, and draft_now to the drafting trigger, but doesn't explain how they interact (e.g., answers plus draft_now).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition opens by naming the exact step it covers -- resuming a bid draft created by start_bid_draft -- and tells the agent what to pass (buyer questions, team answers, or a go-ahead). It explicitly distinguishes itself from start_bid_draft, so no schema comparison is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It covers all three call cases, including the partial-information case, and names the exclusion directly: 'Do not use for a new bid (use start_bid_draft).' The agent knows when to call this vs the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_bid_responseDraft a bid answerARead-onlyInspect
Use this when the user wants help writing part of a response to a public tender: a quality question answer, social value response, method statement, case study, company overview, cover letter or clarification question. Returns a drafting brief built from the tender's award criteria, word limits and the user's facts, so the draft answers what evaluators will score. Write the draft from the brief. Do not use for job applications, grant applications or private-sector sales proposals.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Facts the draft should use, e.g. "we cut response times by 30% for Bristol City Council in 2025". | |
| section | Yes | Which part of the bid to draft, e.g. "social_value". | |
| question | No | The buyer's question, word for word, when the user has it. | |
| word_limit | No | The buyer's word limit for this answer, e.g. 500. | |
| tender_reference | No | The tender being answered, e.g. "005566-2026". |
Output Schema
| Name | Required | Description |
|---|---|---|
| team | No | |
| brief | No | |
| found | No | |
| credit | No | |
| tender | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds genuinely non-obvious behavioral context beyond that: this tool does not emit the finished draft, it returns a drafting brief derived from award criteria, word limits and user facts, which is essential to using the result correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger scenario, then the return value, then the follow-on instruction, then the exclusions. Every sentence carries distinct information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety, so the description needn't explain the return shape, yet it still summarizes the brief's basis (award criteria, word limits, facts), which is helpful. Coverage of the multi-step draft workflow relative to its sibling tools is the only gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with descriptions and an enum for section, so the schema already carries the parameter burden. The description alludes to word limits and the user's facts (word_limit, notes) and lists the section values, adding only marginal meaning beyond the schema — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — drafting part of a response to a public tender — and enumerates the concrete artifact types (quality answer, social value, method statement, case study, etc.). It clearly separates itself from non-bid tools, but does not distinguish itself from close siblings such as start_bid_draft, continue_bid_draft, or rewrite_bid_answer, which could leave the agent uncertain which of the draft-family tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'use this when' trigger plus concrete 'do not use for' exclusions (job applications, grant applications, private-sector sales proposals), and hints at the follow-on action ('Write the draft from the brief'). Missing only an explicit routing statement to sibling tools for the alternative steps of the draft workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_companyFind a companyBRead-onlyInspect
Finds a UK company on Companies House by name, for Winquill's setup.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered and the bar is lower. The description usefully adds the external data source (Companies House) and geographic scope, but says nothing about what happens with zero or multiple matches, or about external-register rate limits, which matters for an openWorld tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the brevity comes at the cost of the missing behaviors noted elsewhere rather than from ruthless prioritization.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and full annotation coverage, the essentials are nearly there. The critical gap is return shape: 'Finds a company' does not reveal whether the agent gets one company or a list of candidates to disambiguate, which directly affects how it should call and follow up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, so the description must carry the meaning. 'By name' merely restates the schema property name 'name'; it does not say whether partial or fuzzy names are accepted, whether it must be an exact registered name, or how the 160-character limit relates to real inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Finds a UK company on Companies House by name.' The scope (UK register, name-keyed lookup) distinguishes it clearly from siblings like save_company_profile or search_contract_awards, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for Winquill's setup' implies this belongs to the onboarding flow, so an agent can infer when it is relevant. However, it never says what to do when the lookup fails or is ambiguous, nor points to the natural follow-on tool (save_company_profile) that consumes the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_setupFinish setupCDestructiveInspect
Saves what Winquill's setup was told, making the workspace for someone without one, and finds the open tenders that fit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| size | No | ||
| work | Yes | ||
| market | No | ||
| regions | Yes | ||
| workspace | No | ||
| company_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a destructive, non-read-only, open-world operation. The description adds that it creates a workspace and finds tenders, but it does not warn that the action is irreversible or describe what existing data might be overwritten or how matching tenders are selected. With annotations covering the safety profile, a 3 is fair but the destructive side effects remain undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the main action. The phrasing 'what Winquill's setup was told' is awkward and slightly obscures the three distinct effects, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex mutation tool with 7 parameters, no output schema, and a destructive annotation. The description omits parameter guidance, side-effect details, and return behavior, leaving significant gaps for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 7 parameters with 0% description coverage, and the description does not explain any of them. It says 'saves what Winquill's setup was told' but never clarifies what `name`, `regions`, `work`, `size`, `market`, `workspace`, or `company_number` mean or how they are used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a multi-step effect: saving setup data, creating a workspace, and finding matching tenders. However, it does not clearly distinguish this tool from the sibling `set_up_tenda`, and the phrase 'Winquill's setup was told' is vague about what exactly is being finalized.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for someone without an existing workspace ('making the workspace for someone without one'), which is a partial usage condition. But it provides no explicit guidance on when to call this versus `set_up_tenda` or other setup-related siblings, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_automation_historyShow what automations didARead-onlyInspect
Use this when the user asks what Winquill's automations did lately: the last 10 things they did, newest first, for one automation or all of them. Needs a Winquill account and workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| automation | No | One automation, by its name or id. Leave out for all of them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/closed-world, so safety is covered. The description adds real behavioral facts the annotations don't: the result is capped at the last 10 actions, ordered newest first, and requires a Winquill account plus workspace. It's silent on pagination or how to see older activity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence with the usage trigger front-loaded, followed by the result shape and the prerequisite. No filler, nothing repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers scope, ordering, cap, and auth requirements. The only meaningful gap is whether there is any way to retrieve activity beyond the last 10 items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the 'leave out for all of them' behavior. The description's 'for one automation or all of them' restates what the schema says rather than adding format or edge-case guidance (e.g., ambiguity when a name matches multiple automations). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('what Winquill's automations did lately') and pins the shape of the answer (last 10 actions, newest first, scoped to one automation or all). It's clearly a history/activity tool rather than a configuration tool, but it never distinguishes itself by name from siblings like list_automations or get_automation_library.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when the user asks what Winquill's automations did lately' gives a concrete triggering intent, which is more than most tools in this family offer. It stops short of naming alternatives or stating when not to use it (e.g., to see what automations exist, use list_automations).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_automation_libraryShow the automations libraryARead-onlyInspect
Use this when the user wants to know which automations Winquill can run for them, before making one with add_automation. Returns each one in Winquill's library, what it does and whether the workspace has it already. Needs a Winquill account and workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real context beyond them: what each result contains (what it does, whether the workspace has it) and the auth prerequisite (Winquill account and workspace). No pagination or response-size notes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler: trigger first, relationship to add_automation second, return shape third, prerequisite last. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be spelled out, yet the description still summarizes them. Prerequisites are stated, and the tool is a simple one-param read. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single optional parameter with 100% schema description coverage; the schema already explains that 'workspace' is the name to pass when the user has multiple. The description does not add meaning beyond that, which is acceptable at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Show the automations library' / 'which automations Winquill can run') and names the sibling it precedes, add_automation. It does not distinguish itself from other close siblings like list_automations or get_automation_history, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the user wants to know which automations Winquill can run') and a clear relative ordering ('before making one with add_automation'). No exclusion against list_automations/get_automation_history, so the agent must guess among the three automation-listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bid_draftCheck on Winquill's bid draftARead-onlyInspect
Use this when the user asks how a bid Winquill is drafting is going, or wants to read it: its progress in steps and answers written, each question with its word count and Winquill's mark out of 5, what's left for the team to confirm, and the check of the whole bid. Give question to read that answer in full. Once it's ready, it gives a Word file link that works for an hour, and a link to the draft in Winquill. Needs a Winquill account. Example: {"tender_reference":"012345-2026"}
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | No | The draft's ID, from start_bid_draft. Or give the tender's reference instead, or neither for the workspace's latest draft. | |
| question | No | One answer to read in full, by the buyer's number, e.g. "Q3". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | No | |
| status | No | |
| tender | No | |
| draftId | No | |
| summary | Yes | |
| progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, the description discloses that a Winquill account is required, that the Word file link is time-limited to one hour, and that a second link points into Winquill — all operationally relevant facts absent from the annotations. Scope of returned content is also spelled out, though it does not mention whether partial drafts are readable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger, then the payload, then the auth and link constraints, and it ends with a concrete example. One sentence is garbled ('Give question to read that answer in full'), which slightly blunts an otherwise dense, purposeful passage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't detail return values, and it still summarizes them well. It covers auth, link lifetime, and defaulting behavior context via example; only the relationship to sibling drafting/review tools is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so draft_id, question, workspace and tender_reference are already fully documented. The description only echoes the question-reading behavior and repeats an example tender_reference, adding no new semantics such as precedence between draft_id and tender_reference (that lives in the schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('check on / read a bid draft Winquill is drafting') and enumerates what it returns: step progress, answers with word counts and marks, outstanding team confirmations, and the whole-bid check. It stops short of distinguishing itself from sibling tools like review_bid_draft or continue_bid_draft, which an agent could easily confuse with this read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger is given ('when the user asks how a bid is going, or wants to read it'), and the 'once it's ready' condition gates the download link. No exclusion is stated against the nearby review/continue drafting tools, so the agent must infer which one applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coverageShow Winquill's coverageARead-onlyInspect
Use this to know where Winquill looks: the countries and sources it reads, how many open, upcoming and awarded notices each holds, and when each was last read. Use it before telling the user a tender isn't published anywhere Winquill reads, or to say how fresh results are. Not for searching (use search_tenders). Example: {"country":"Canada"}
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | One country, e.g. "Canada", "UK" or "Germany". Omit for every country Winquill covers. Winquill reads Find a Tender, Contracts Finder, Public Contracts Scotland, Sell2Wales, CanadaBuys, SEAO, Toronto Bids, SAM.gov, USAC E-Rate, City Record Online, RAMP LA, SF City Partner, DC PASS, oeffentlichevergabe.de, BOAMP, TED, PLACSP, IUB (Latvia) and KIMDIS (Greece). |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | No | |
| covered | Yes | |
| summary | Yes | |
| countries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context about what coverage data includes (countries, sources, open/upcoming/awarded counts, last read timestamps) and how that data should be interpreted for freshness claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose, usage condition, exclusion, and example are front-loaded with no wasted prose. Each sentence contributes to correct tool selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value details need not be repeated in the description. With read-only annotations, full parameter schema coverage, and clear sibling routing, the description gives everything an agent needs to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the country parameter is already documented thoroughly, including the full source list and omission behavior. The description adds only a concrete example, which is helpful but largely redundant with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: showing where Winquill looks, including countries, sources, notice counts, and last-read times. It explicitly distinguishes this coverage-inspection tool from searching by naming search_tenders as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: before saying a tender is not published anywhere Winquill reads, or when reporting freshness. It also gives an explicit when-not-to-use: 'Not for searching (use search_tenders).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_statusGet pipeline statusARead-onlyInspect
Use this when the user asks how their team's bids are going, for a status report, or what is due: how many tenders are in each stage of their Winquill pipeline, which bids are running with their next step and due date, which tenders still need the bid or no-bid call, and which bids are waiting on a result. Needs a Winquill account and workspace. Do not use to find new tenders (use search_tenders) or for alerts from saved watches (use get_tender_updates).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | No | |
| stages | No | |
| running | No | |
| summary | Yes | |
| workspace | No | |
| callsToMake | No | |
| awaitingResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it requires a Winquill account and workspace, and it scopes the report to the team's own pipeline. It doesn't discuss freshness or empty-state behavior, keeping it just shy of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use condition and content list, then closes with clear exclusions and alternatives. It is a fairly long multi-clause sentence, but nearly every clause carries distinct information; minor trimming of the return-content enumeration would tighten it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description nonetheless indicates the report's shape. With the only parameter documented at 100% coverage and annotations covering safety, an agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single workspace parameter is fully documented in the schema. The description confirms a Winquill workspace is needed but adds no syntax or selection detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (pipeline status) and enumerates what it reports: stage counts, running bids with next step and due date, tenders awaiting bid/no-bid call, and bids waiting on a result. This clearly distinguishes it from search_tenders and get_tender_updates named in the same breath.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('when the user asks how their team's bids are going, for a status report, or what is due') and explicit exclusions with the correct alternatives: 'Do not use to find new tenders (use search_tenders) or for alerts from saved watches (use get_tender_updates).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tenda_settingsWinquill settingsARead-onlyInspect
Use this when the user asks which Winquill workspace ChatGPT uses, or which countries' tenders it shows: returns Winquill's settings in ChatGPT, the workspace (for someone in more than one) and the workspace's countries. Needs a Winquill account. Do not use for the company profile (use save_company_profile).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| layout | No | |
| schema | Yes | |
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds context the annotations cannot: a Winquill account is required, and the returned settings are account/workspace-scoped. It stops short of noting whether settings can be absent for non-configured accounts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight block that front-loads the trigger condition, then states what is returned, the prerequisite, and the exclusion. Every clause carries distinct information with no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, full annotation coverage, and an output schema that documents the return shape, this description supplies exactly the missing layer: when to call it, what account is needed, and what it is not for. Nothing an agent needs in order to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly does not waste words on inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource and its constituents: Winquill settings in ChatGPT, the active workspace, and that workspace's countries. It clearly separates itself from save_company_profile, but says nothing about the obviously related sibling update_tenda_settings, leaving the read-vs-write distinction to the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete triggering condition ('when the user asks which Winquill workspace ChatGPT uses, or which countries' tenders it shows') and an explicit exclusion routing to save_company_profile. The missing piece is guidance against update_tenda_settings, the closest alternative for settings-related requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tender_detailsExplain a tenderARead-onlyInspect
Use this when the user asks about one tender, framework or standing offer, by notice ID, buyer reference or from earlier results: the deadline, the portal to submit through, lots, value, conditions, award criteria and what the buyer wants, in plain English. It also reads the competition: who holds the work now, what the buyer paid before, how many bids it drew, and whether the tender is worth chasing. Not for finding tenders (use search_tenders). Example: {"tender_reference":"012345-2026"}
| Name | Required | Description | Default |
|---|---|---|---|
| more_references | No | More tenders to read in the same call, by the same kind of reference, e.g. to compare a shortlist: up to 19, for 20 in all. Saves a call for each. | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lots | No | |
| buyer | No | |
| codes | No | |
| found | Yes | |
| rules | No | |
| awards | No | |
| credit | No | |
| tender | No | The same facts as a search_tenders result. |
| summary | Yes | |
| tenders | No | With more_references: each tender's own answer, in the order asked. |
| keyDates | No | |
| notFound | No | The references asked for that Winquill has no notice for. |
| conditions | No | |
| howItIsRun | No | |
| competition | No | |
| whatTheyWant | No | |
| howItIsScored | No | |
| notInTheNotice | No | |
| publishedDocuments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to argue safety; instead it spends its words on what the agent actually receives, including the less obvious competitive-intelligence payload (current holder, prior price paid, bid count). It doesn't discuss missing/not-found references or multi-reference partial failures, which is the only real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then the payoff list, then the exclusion, then the example — a sound order. The single long opening sentence carries a lot of enumerations and the phrase "whether the tender is worth chasing" is a touch editorial, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting is rightly omitted, and the description covers the trigger, the reference formats and the sibling boundary. The one omission is the batch path via more_references, which matters for the compare-a-shortlist use case the schema explicitly advertises.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both parameters with identical example references, so the description's inline example adds little beyond it. The second parameter (more_references, up to 19 for batch comparison) is never mentioned in the description, leaving batching discoverable only through the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (explain/read one tender) and enumerates exactly what comes back: deadline, portal, lots, value, conditions, award criteria, plus incumbent/price/bid-count intelligence. It also names the boundary against search_tenders, so an agent can pick it without opening the sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers (user asks about one tender, framework or standing offer; by notice ID, buyer reference, or from earlier results) and an explicit exclusion with the alternative: "Not for finding tenders (use search_tenders)." Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tender_updatesGet tender alertsAInspect
Use this when the user asks what's new from their Winquill watches: new matching tenders, pipeline notices, deadline changes, clarifications, cancellations and awards. Without since, it gives the updates not shown before and marks them seen. Agents that check on a schedule pass since, the nextSince from the answer before: it reads what was recorded after it, oldest first, and marks nothing. watch_id keeps to one watch. Needs a Winquill account. Not for searching (use search_tenders). Example: {"since":"eyJzZXEiOjQyfQ"}
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | The nextSince from an earlier answer, for the updates recorded after it. Leave it out for the updates not yet shown, which are then marked seen. | |
| watch_id | No | Only this watch's updates, by the id watch_tenders gave. |
Output Schema
| Name | Required | Description |
|---|---|---|
| more | No | |
| credit | No | |
| summary | Yes | |
| updates | Yes | |
| nextSince | No | Pass it back as since for the updates recorded after these. Reading with since marks nothing as seen, so it can be read again. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects that annotations alone don't convey: without since it marks updates seen, with since it 'marks nothing' and reads oldest first — which explains the readOnlyHint=false / idempotentHint=false pairing rather than contradicting it. Adds the account requirement ('Needs a Winquill account') and the ordering guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the trigger condition and packs the since/watch_id branches into compact sentences with an example at the end. Slightly dense and run-on, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be described, yet the description still explains how to consume nextSince on the next call. Auth requirement, ordering, side effects and the sibling exclusion are all covered for a 2-optional-param read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds the chaining protocol (pass the nextSince from the previous answer) and a concrete example value, which is meaningfully more than the schema's per-field docs. watch_id's link to watch_tenders is echoed rather than extended, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('what's new from their Winquill watches') and enumerates the update categories (new tenders, pipeline notices, deadline changes, clarifications, cancellations, awards). It explicitly distinguishes itself from search_tenders, so an agent can separate it from the search-oriented siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the triggering user question, the with/without-since branches (default marks seen; scheduled agents pass nextSince from the prior answer), the watch_id narrowing case, and an explicit exclusion ('Not for searching (use search_tenders)'). Alternatives and conditions are named rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_automationsList automationsARead-onlyInspect
Use this when the user asks what Winquill does on its own for their team: the workspace's automations, each with its rules as sentences, whether it's on and what it last did, and the ones Winquill suggests. Needs a Winquill account and workspace. Not for making one (use add_automation) or what one did (use get_automation_history).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds valuable context beyond annotations: it requires a Winquill account and workspace, and it describes the nature of the returned data (rules as sentences, on/off state, last activity, suggested automations).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: usage trigger first, then prerequisites, then exclusions. Each sentence earns its place with no filler, and the most important selection guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's read-only nature, full parameter schema coverage, annotations, and an output schema, the description covers all an agent needs: when to use it, what it returns at a high level, prerequisites, and what it is not for with explicit alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single workspace parameter, so the schema already documents its meaning and usage. The description mentions workspace scoping but adds no syntax or format details beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (list) and resource (automations), and enumerates what is returned: rules as sentences, on/off state, last activity, and suggested automations. It also distinguishes from siblings explicitly by naming add_automation and get_automation_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit when-to-use trigger (user asks what Winquill does on its own for their team) and explicit when-not-to-use conditions with named alternatives (not for making one, not for history). Alternatives are routed without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watchesList my watchesARead-onlyIdempotentInspect
Use this when the user asks which Winquill watches they have, or to find the one to stop: each watch with its ID, what it watches for, its countries and whether it posts to Slack or Teams. Needs a Winquill account. Do not use for what the watches found (use get_tender_updates). Example: {}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | Yes | |
| watches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds the real prerequisite an agent cannot get from annotations — a Winquill account is required. It does not mention scoping or pagination, but for an account-scoped list that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then return contents, prerequisite, and the exclusion — in that order of use. Three tight sentences with no filler; even the empty-args example earns its place by confirming the call shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure needn't be explained, and annotations carry the safety profile. Purpose, triggering conditions, the alternative tool, and the account prerequisite are all present for a zero-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; the description confirms this with 'Example: {}', signalling the tool takes no arguments. Nothing further is needed or possible here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('which Winquill watches they have') and enumerates the fields returned (ID, target, countries, Slack/Teams delivery). It explicitly separates itself from get_tender_updates, so an agent can pick it out of a 40-tool sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both a positive trigger ('when the user asks which watches they have') and a secondary one ('to find the one to stop'), plus an explicit negative case pointing at get_tender_updates. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_in_pipelineMove a tender in the pipelineADestructiveIdempotentInspect
Use this when the user wants to change where a tender stands in their team's Winquill pipeline: to Qualifying while they look into it, back to Watching, to Submitted, or to Won or Lost when the buyer announces the result. Moving to Bidding or No bid takes the bid or no-bid call (use record_bid_call). Needs a Winquill account and workspace. Do not use to take a tender off the pipeline (use remove_from_pipeline).
| Name | Required | Description | Default |
|---|---|---|---|
| stage | Yes | Where the tender goes: "watching", "qualifying", "bidding", "submitted", "won", "lost" or "no_bid". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moved | No | |
| stage | No | |
| tender | No | |
| summary | Yes | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this mutates state, is destructive, and is idempotent. The description adds the account/workspace prerequisite and stage-routing constraints, but it does not explain what the destructive effect is, such as whether the current stage is overwritten or whether the move can be reversed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary use case, then adds the stage-specific exceptions, prerequisites, and exclusion. It is dense but every sentence contributes routing or constraint information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with an output schema and annotations, the description covers the main usage, alternatives, prerequisites, and exclusion. The remaining gap is that it does not explain the practical consequence of the destructive stage change, though annotations signal that behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds lifecycle meaning for stage values, including when qualifying, watching, submitted, won, and lost apply, and routes bidding/no_bid to record_bid_call; tender_reference and workspace are already well documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: changing where a tender stands in the Winquill pipeline. It clearly distinguishes this tool from record_bid_call for bidding/no-bid calls and remove_from_pipeline for removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance by mapping stages to user situations, names the alternative tool for Bidding/No bid, and explicitly says not to use this for taking a tender off the pipeline. These are concrete selection rules, not implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_bid_panelBid panelCRead-onlyInspect
Opens the team's live bids beside a chat: each bid's steps and questions, what scores, and a way to work on one in the chat.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful content about what the panel surfaces (steps, questions, scores, in-chat work) and is consistent with a read-only 'open' action, but says nothing about side effects or state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is good. But the trailing clauses ('each bid's steps and questions, what scores') are loosely phrased and slightly rambling for the amount of real information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% parameter coverage, the description should carry more weight. It describes what the panel shows but leaves both parameters undefined and gives no guidance on invocation, so an agent cannot fully call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (path, workspace) have 0% schema description coverage and the description never mentions either one, so the agent gets no meaning, format, or example for them. The description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'opens' plus the resource 'bid panel' conveys a display action, and 'the team's live bids beside a chat' differentiates it from get_bid_draft or review_bid_draft. However phrases like 'what scores' and 'a way to work on one in the chat' are vague about what the tool actually does in an agent context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gestures at a chat-adjacent context but gives no explicit when-to-use, when-not, or alternatives (e.g., open_tenda, get_bid_draft). The agent has to infer when opening the panel is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_tendaWinquillCRead-onlyInspect
Opens Winquill's own app from ChatGPT's sidebar: Today, the team's board, Find and each tender, with the bid call. The app moves between its pages itself.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world, so safety is covered. The only added behavioral claim is "The app moves between its pages itself", which hints that no follow-up navigation calls are needed, but it is ambiguous and does not say what happens if the app is already open or what the caller receives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences and the action is front-loaded, so it is compact. But the second sentence is vague and the enumeration in the first reads as an unstructured list, limiting how much the brevity buys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two fully undocumented parameters, no output schema, and only annotations for safety, the description should explain what 'path' and 'workspace' select and what opening the app returns or does. Neither is covered, leaving the tool under-specified for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both 'path' and 'workspace'. The description lists page-like destinations that may correspond to 'path' values but gives no format, examples, or defaults, and never mentions 'workspace' at all, so the agent has no way to know what to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb ("Opens") and the resource ("Winquill's own app from ChatGPT's sidebar") are stated, and the enumerations (Today, team board, Find, tenders, bid call) sketch the destinations. However, the naming is inconsistent — the tool is 'open_tenda' but the title/description say 'Winquill' — and there is no differentiation from the sibling 'open_bid_panel', which sounds like it opens a similar surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the many data-retrieval siblings (get_tender_details, get_pipeline_status, search_tenders, open_bid_panel). The agent must infer that this is for showing the UI rather than fetching data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_bid_callRecord the bid callADestructiveInspect
Use this when the user's team has decided whether to bid: records the bid or no-bid call, the team's answers to Winquill's five questions and the reason. A bid moves the tender to Bidding and plans a six-step sprint back from the deadline; a tender not in the pipeline is added first. Confirm the decision with the user before calling. Needs a Winquill account and a role that makes bid calls. Not for judging fit before the call (use assess_tender_fit). Example: {"tender_reference":"012345-2026","decision":"bid","answers":{"fit":"yes"}}
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why, in the user's words, for the team to read later. | |
| answers | No | The team's answers to Winquill's five questions, each "yes", "unsure" or "no": fit (is this work we do well), eligibility (do we meet every must-have), capacity (can we deliver it and write the bid in time), competition (can we beat the other bidders) and value (is it worth winning). Leave out questions the user didn't answer. | |
| decision | Yes | "bid" when the team will bid, "no_bid" when it will not. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stage | No | |
| tender | No | |
| summary | Yes | |
| recorded | No | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-idempotent, destructive mutation, and the description adds real context beyond that: the tender moves to Bidding, a six-step sprint is planned back from the deadline, an off-pipeline tender is added first, and the caller needs a Winquill account with a role that permits bid calls. These are exactly the side effects and auth prerequisites an agent must know before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then side effects, then the exclusion, then the example — a sensible order with no filler sentences. It runs slightly long, since the six-step sprint detail and the example could be trimmed, but each sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation with a nested answers object, the description covers trigger, exclusions, prerequisites, side effects and an example, while annotations carry the safety profile and an output schema handles return values. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by including a concrete example payload showing how tender_reference, decision and the nested answers object fit together. It does not, however, add anything beyond the schema for the optional reason or workspace fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — records the bid or no-bid call plus the team's answers and reason — and names the sibling it is not (assess_tender_fit). An agent can distinguish it from adjacent pipeline tools like add_to_pipeline or check_bid_readiness without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger conditions ('when the user's team has decided whether to bid'), an explicit exclusion ('Not for judging fit before the call, use assess_tender_fit'), and a procedural precondition ('Confirm the decision with the user before calling'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_portal_accountNote a portal accountADestructiveIdempotentInspect
Use this when the user says whether their company has an account on the e-tendering portal a tender is run on, where suppliers get the tender pack and bid, often after Winquill asked as a tender joined the pipeline: "yes, we have an EU-Supply account" or "no, we're not on Atamis yet". Notes it for the whole team, so Winquill stops asking about that portal. Give the tender's reference, or the portal's name or the key Winquill gave (portal.key). Needs a Winquill account and workspace. Do not use to sign in to a portal: Winquill never handles portal passwords.
| Name | Required | Description | Default |
|---|---|---|---|
| portal | No | The portal, e.g. "EU-Supply" or "Public Contracts Scotland", or the key Winquill gave for it, e.g. "atamis:health-family.force.com". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| has_account | Yes | Whether the company has an account on the portal. | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tender | No | |
| summary | Yes | |
| recorded | No | |
| workspace | No | |
| hasAccount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: records are visible to the whole team, Winquill stops asking about that portal, and a Winquill account/workspace is required. It does not explain the destructive/overwrite implication that annotations flag with destructiveHint=true, so it falls short of full behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary usage condition and stays focused. It is somewhat long and could be tightened, but the extra examples and exclusion earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema and rich annotations, the description covers when to use the tool, the team-wide effect, account prerequisites, and the sign-in exclusion. It leaves the destructive/overwrite behavior to the annotations, which is a minor gap but not a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that the portal can be identified by tender reference, portal name, or Winquill portal key, but most of that information is already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource: noting whether the company has an account on a named e-tendering portal. It is clearly distinguishable from related tools such as sign-in or portal access, and the examples make the scope concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger conditions, including the user's exact-style statements such as "yes, we have an EU-Supply account" and the context of Winquill having asked after a tender joined the pipeline. It also gives an explicit exclusion: do not use this to sign in to a portal, because Winquill never handles portal passwords.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_pipelineTake a tender off the pipelineADestructiveIdempotentInspect
Use this when the user wants a tender taken off their team's Winquill pipeline, for good or until a change brings it back: "remove it until it gets a value". It deletes the tender's bid call, sprint and the files the team added; for one in Bidding, Submitted, Won or Lost the answer asks first, so confirm with the user and call again with confirmed. Needs a Winquill account and workspace. Not for moving a tender to another stage (use move_in_pipeline) or a no-bid call (use record_bid_call). Example: {"tender_reference":"012345-2026","return_when":"value"}
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | True once the user has confirmed taking off a tender with a bid under way or a result. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| return_when | No | Put it back in Watching when this happens, and tell the user: "value" when the buyer publishes or changes its value, "deadline" when the deadline moves, "opens" when a pipeline notice opens for bids, "any_change" for any change to the notice. Leave out to take it off for good. | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| from | No | |
| tender | No | |
| removed | No | |
| summary | Yes | |
| fromName | No | |
| workspace | No | |
| returnWhen | No | |
| needsConfirming | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes further by enumerating exactly what is destroyed — the bid call, the sprint, and the files the team added. It also discloses a non-obvious conditional gate (tenders in Bidding/Submitted/Won/Lost require a second confirmed call) and the account/workspace prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger, then behavior, prerequisites, alternatives, and an example example — a sensible ordering with little waste. It is dense in the middle (the 'for good or until a change brings it back' clause is slightly convoluted), keeping it just short of ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and it covers everything else an agent needs: destructive scope, the confirmation round-trip, workspace/auth requirements, and sibling routing. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the conditional semantics of 'confirmed' through the confirmation example and paraphrases return_when as 'remove it until it gets a value', tying the enum to user intent. The inline example invocation shows how tender_reference and return_when combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('taken off their team's Winquill pipeline') and immediately clarifies the two modes: permanent removal or conditional return. It explicitly names the siblings it is not (move_in_pipeline, record_bid_call), so an agent can separate it from adjacent pipeline operations without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the user wants a tender taken off...'), quotes the natural user phrasing ('remove it until it gets a value'), and names two alternatives with the condition that selects them. The confirmation path is spelled out as an instruction ('confirm with the user and call again with confirmed').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_bid_draftCheck a bid answer before submittingARead-onlyInspect
Use this when the user has a draft answer for a public tender and wants it checked before submission, the way an evaluator would: word limit, every part of the question answered, specific evidence, firm commitments, no unfinished placeholders or empty superlatives, and what the section type needs (mobilisation, KPIs, measurable social value). Returns checks plus the tender's scoring criteria and a 0 to 5 rubric to score it against. Do not use to write a new answer (use draft_bid_response).
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | The draft answer text. | |
| section | Yes | What the draft is, e.g. "method_statement". | |
| question | No | The buyer's question, word for word, so Winquill can check every part is answered. | |
| word_limit | No | The buyer's word limit for this answer. | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| credit | No | |
| review | No | |
| tender | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, non-destructive, and closed-world behavior. The description adds substantial value beyond that by explaining what the review checks (word limit, question coverage, evidence, commitments, placeholders, section-specific needs) and what is returned (checks, scoring criteria, and a 0-5 rubric).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the use condition, then the checks, then the return value, then the exclusion. It is dense but every clause contributes to correct selection and invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a review tool with an output schema and full parameter descriptions, the description is complete enough to call correctly. It covers purpose, routing, checks, and return shape without needing to duplicate schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning by tying parameters to concrete review behavior: word_limit drives a specific check, question enables part-by-part coverage checking, and section determines what requirements are applied. This goes beyond the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reviewing a draft tender answer before submission, evaluated like an evaluator would. It clearly distinguishes itself from draft_bid_response, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use condition (user has a draft answer for a public tender and wants it checked before submission) and an explicit when-not-to-use with a named alternative (do not use to write a new answer; use draft_bid_response). This is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rewrite_bid_answerHave Winquill rewrite an answerADestructiveInspect
Use this when the user wants Winquill to rewrite one answer in a bid it drafted, e.g. "make Q3 shorter" or "use the Glasgow contract as the example in 2.1". Winquill rewrites it in the background, marks it again and says when it's done. A bid's first ten rewrites are included; after that each uses a little of the workspace's allowance. Needs a Winquill account. Do not use before the draft is ready.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | No | The draft's ID, from start_bid_draft. Or give the tender's reference instead, or neither for the workspace's latest draft. | |
| question | Yes | The answer to rewrite, by the buyer's number, e.g. "Q3". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| instruction | Yes | What to change, in the user's words. | |
| tender_reference | No | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| status | No | |
| tender | No | |
| draftId | No | |
| summary | Yes | |
| progress | No | |
| rewriting | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the rewrite happens asynchronously in the background, the answer is re-marked, and the user is told when it's done. It also discloses the commercial model (first ten rewrites included, then draws on the workspace allowance) and the account requirement. It does not say whether the pre-rewrite answer is recoverable, which matters given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition and a concrete example, then the async behaviour, then cost and prerequisites, closing with the guard rail. Every sentence carries distinct information with no repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description still covers the async completion signal, the billing implication and the readiness precondition. For a five-parameter mutation tool this is as complete as an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so draft_id, question, workspace, instruction and tender_reference are all already documented, including the fallback behaviour when draft_id is omitted. The description's examples loosely illustrate what belongs in question and instruction but add no new semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and a tightly scoped resource: rewrite one answer in a bid Winquill drafted. The quoted example utterances ("make Q3 shorter", "use the Glasgow contract as the example in 2.1") make it unmistakable versus siblings like draft_bid_response, continue_bid_draft and review_bid_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger utterances and an explicit exclusion ("Do not use before the draft is ready"), plus the prerequisite of a Winquill account. It stops short of naming the sibling to use instead when the draft isn't ready or when the user wants a full redraft rather than a single-answer rewrite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_company_profileSave company profileADestructiveIdempotentInspect
Use this when the user wants Winquill to remember their business for searches, fit and readiness checks and drafting. Fill in only company facts the user has told you, leaving out anything unsure and any personal details, and show the user what you'll save so they can confirm or correct it first. Saves to their team's workspace and fills in more from Companies House (SAM.gov for a US company) and contracts the company has won. Needs a Winquill account. Not for personal profiles or CVs. Example: {"summary":"Office and school cleaning in Greater Manchester","company_number":"08123456"}
| Name | Required | Description | Default |
|---|---|---|---|
| staff | No | How many people work for the company. | |
| regions | No | Where the company works, e.g. ["North West", "Yorkshire and the Humber"] or ["Ontario", "Quebec"]. | |
| summary | No | What the company does, who for and where, in a few sentences. Leave it out to keep the description Winquill has, such as when only adding codes or a trading name; a new one replaces it. | |
| website | No | The company's website, e.g. "northbridge.co.uk". | |
| add_codes | No | CPV codes to add to the ones the company works under, 8 digits each, e.g. ["60130000"] when the user adds SEND transport. Pick the most specific codes that fit the work the user names; adding never takes codes off. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| nationwide | No | True when the company works anywhere in its country. | |
| buyer_types | No | Kinds of public buyer the company has worked for, e.g. ["local_authority", "education"]. | |
| company_name | No | The company's name, e.g. "Northbridge Services Ltd". | |
| remove_codes | No | CPV codes to take off, e.g. ["80500000"]. | |
| trading_name | No | The name the company bids under, when it isn't its registered name, e.g. "Plenda" for Eshmere Ltd. | |
| turnover_gbp | No | Annual turnover in the company's home currency (pounds for a UK company, Canadian dollars for a Canadian one), e.g. 2400000. | |
| business_size | No | The company's size, e.g. "small" for under 50 staff. Use "vcse" for charities and social enterprises. | |
| certifications | No | Certifications and accreditations it holds, e.g. ["iso_9001", "cyber_essentials", "chas"]. Add an expiry as "cyber_essentials:2026-11-30". | |
| company_number | No | The Companies House number, e.g. "08123456" or "SC123456", or for a US company its SAM.gov Unique Entity ID (UEI), e.g. "JX4M7Q2LK9C1". Winquill looks the company up and finds the public contracts it has won. | |
| largest_contract_gbp | No | The largest contract, a year, the company would take on, in its home currency. | |
| public_liability_gbp | No | Public liability (in Canada, commercial general liability) cover in the company's home currency, e.g. 5000000. | |
| employers_liability_gbp | No | Employer's liability cover in the company's home currency, e.g. 10000000. | |
| professional_indemnity_gbp | No | Professional indemnity cover in the company's home currency. |
Output Schema
| Name | Required | Description |
|---|---|---|
| saved | No | |
| summary | Yes | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation (readOnlyHint=false), destructiveHint=true, idempotentHint=true, openWorld=true; the description adds content the annotations cannot: data is written to the user's team workspace, enrichment from Companies House / SAM.gov and won contracts, and an account prerequisite. It does not spell out that existing summary/codes are replaced rather than appended in some cases (the schema does, and it implies confirm-before-write mitigates loss), so it stops short of full transparency on overwrite semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger and purpose, then constraints, then exclusions, then an example — a sensible order with no filler. It is a single dense paragraph of ~6 clauses, slightly heavier than needed, but every sentence carries either a rule or a behavioral fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter mutation with 100% schema coverage and an output schema, the description supplies exactly what structured fields cannot: the trigger, the confirmation workflow, the account prerequisite, the enrichment behavior, and the scope exclusion. Nothing needed to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds a cross-cutting population policy ('only company facts the user has told you... leaving out anything unsure and any personal details') plus a worked example object showing which keys a typical call contains. It does not explain individual fields (e.g. the home-currency convention on *_gbp), but the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('save company profile') and immediately explains the downstream purpose: 'so Winquill can remember their business for searches, fit and readiness checks and drafting'. It also names what it is not ('Not for personal profiles or CVs') and names the enrichment sources, so an agent can distinguish it from find_company or check_bid_readiness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the user wants Winquill to remember their business'), a data-collection rule ('fill in only company facts the user has told you, leaving out anything unsure and any personal details'), a confirmation step, and a hard exclusion ('Not for personal profiles or CVs'). Requirements are stated ('Needs a Winquill account'), which is the when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contract_awardsSearch past awards and re-tendersARead-onlyInspect
Use this to find who won public contracts in the UK, Canada, the United States, Germany, France and the rest of the EU, what a buyer paid last time, and which contracts end soon and may be re-tendered. Searches the user's own countries unless they name one. Answers give the total, pass nextCursor back as cursor for more, and summarise says who won most across every match. Not for tenders open now (use search_tenders) or a public body's total spending. Example: {"buyer":"Leeds City Council","query":"cleaning","summarise":"supplier"}
| Name | Required | Description | Default |
|---|---|---|---|
| buyer | No | Public body that awarded the contract, e.g. "Leeds City Council". | |
| codes | No | Only contracts with one of these classification codes, or a code under one: CPV in the UK and EU, e.g. "90910000" for cleaning or "909" for all cleaning and sanitation; NAICS or PSC on SAM.gov; UNSPSC or GSIN on CanadaBuys. | |
| limit | No | How many to show, up to 50. Defaults to 10. | |
| query | No | What the contract covers, e.g. "IT support" or "school cleaning". | |
| cursor | No | The nextCursor from an earlier answer, with the same search, for its next page. | |
| detail | No | "short" for just each result's IDs, title, buyer, value, dates and link, e.g. to go through many pages; "full", the default, for everything. | |
| region | No | Where the work or delivery happens: a UK nation or English region, e.g. "North West" for Manchester or Liverpool; a Canadian province or territory, e.g. "Ontario" for Toronto; a US state, e.g. "Virginia"; a German Land by its German name, e.g. "Bayern" for Munich; a French region, e.g. "Île-de-France" for Paris; or another EU member state, e.g. "Poland". Omit for nationwide contracts or when the user names no place. | |
| country | No | The country to look in, when the user names one, e.g. "Canada", "UK" or "Spain" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU. | |
| supplier | No | Company that holds or won the contract, e.g. a competitor's name. | |
| summarise | No | Adds overview, a summary of every matching award, not just this page: "buyer" for who wins a buyer's contracts, "supplier" for what a supplier wins and from which buyers. | |
| awarded_since | No | Only contracts awarded on or after this date, e.g. "2026-01-01". | |
| ending_within_months | No | Only contracts ending within this many months, e.g. 12 for "coming up for renewal next year". |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | How many awards match in all, across every page. |
| credit | No | |
| results | Yes | |
| summary | Yes | |
| overview | No | With summarise: a summary of every matching award, not just this page. |
| countries | No | |
| nextCursor | No | Pass it back as cursor, with the same search, for the next page. Absent on the last page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe, non-destructive read with closed-world scope, so the description focuses on operational traits: the pagination contract (pass nextCursor back as cursor), that summarise spans every match rather than the current page, and the default country fallback for unauthenticated users. It stops short of stating result caps or how filters combine, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose and coverage first, default scoping second, pagination/summary semantics third, then the single most valuable exclusion. The trailing example encodes a realistic call. No sentence is filler despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-param tool with a full schema and an output schema, the description covers the decisions the schema cannot: scope defaults, cross-page summarisation, and the sibling boundary. It omits how filters interact (e.g. query plus codes) and paging behaviour under summarise, leaving mild gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the bar is baseline 3. The description adds value on the two easiest-to-misuse controls: it names the output field (nextCursor) the cursor parameter expects and clarifies that summarise aggregates across all matches, not just the returned page. It also shows a concrete parameter combination in the example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search contract awards), the geographic coverage, and the three questions it answers: past winners, last price paid, and contracts ending soon. It explicitly separates itself from search_tenders ('Not for tenders open now').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use framing plus two named exclusions with the alternative tool (search_tenders for open tenders, and it is not for a body's total spending). Also explains the default scope ('Searches the user's own countries unless they name one'), removing the main ambiguity an agent would face with 12 optional filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mentionsFind a tender or person to mentionARead-onlyInspect
Finds the team's tenders and people by name, for @ mentions in ChatGPT.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds scope context ('the team's' resources, mentions use case), but says nothing about result limits, ranking, or behavior on no match. Modest added value over the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that front-loads the verb and resource with zero wasted words. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single required parameter plus read-only annotations mean little else is needed. The definition is nearly complete, missing only edge-case behavior (empty results, ranking) that would push it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the bare 'query' parameter is undocumented in the schema. The description's 'by name' gives a hint about acceptable input, but does not clarify the maxLength=200 constraint or matching behavior, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Finds') and resources ('the team's tenders and people by name'), which is clear and distinct from search_tenders (tenders only). It does not explicitly name a sibling to contrast against, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for @ mentions in ChatGPT' implies the usage context (mention autocomplete), giving the agent a reasonable sense of when to reach for it. However, it never states when NOT to use it or how it differs from search_tenders or find_company, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tendersSearch public tendersARead-onlyInspect
Use this to find public sector contracts to bid for in the UK, Canada, the United States, Germany, France and the rest of the EU: open tenders, frameworks and upcoming notices from any public buyer. Searches the user's own countries unless they name one; get_coverage lists every source and when it was last read. Answers give the total; pass nextCursor back as cursor for more. Not for past winners (use search_contract_awards) or jobs. Example: {"query":"school cleaning","region":"North West","closing_within_days":30}
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | "best", the default: best fit first for a user with a saved company profile, otherwise the closest match; "closing": soonest deadline first; "newest": latest published first; "value": highest value first. | |
| buyer | No | Only tenders from a buyer whose name holds these words, e.g. "Leeds City Council" or "NHS Lothian". | |
| codes | No | Only tenders with one of these classification codes, or a code under one: CPV in the UK and EU, e.g. "90910000" for cleaning or "909" for all cleaning and sanitation; NAICS or PSC on SAM.gov; UNSPSC or GSIN on CanadaBuys. | |
| limit | No | How many to show, up to 50. Defaults to 8. | |
| query | No | What the buyer is buying, in the user's words, e.g. "grounds maintenance", "cyber security consultancy", "school catering". Tenders with the words come first, then any close in meaning that share none of them, marked match "meaning". Leave it out to list every tender the other filters allow. | |
| stage | No | "open" for tenders taking bids now, "upcoming" for pipeline and preliminary market engagement notices about future tenders. | |
| cursor | No | The nextCursor from an earlier answer, with the same search, for its next page. | |
| detail | No | "short" for just each result's IDs, title, buyer, value, dates and link, e.g. to go through many pages; "full", the default, for everything. | |
| region | No | Where the work or delivery happens: a UK nation or English region, e.g. "North West" for Manchester or Liverpool; a Canadian province or territory, e.g. "Ontario" for Toronto; a US state, e.g. "Virginia"; a German Land by its German name, e.g. "Bayern" for Munich; a French region, e.g. "Île-de-France" for Paris; or another EU member state, e.g. "Poland". Omit for nationwide contracts or when the user names no place. | |
| country | No | The country to look in, when the user names one, e.g. "Canada", "UK" or "Spain" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU. | |
| procedure | No | How the buyer is buying, e.g. "framework" for framework agreements, "dynamic_market" for dynamic markets suppliers can join at any time. | |
| buyer_type | No | Kind of public buyer, e.g. "local_authority" for councils, "nhs" for NHS trusts and ICBs, "education" for schools, academy trusts and universities. | |
| suitable_for | No | Only notices the buyer marked as suitable for small and medium-sized enterprises or for voluntary, community and social enterprises. | |
| contract_type | No | What is being bought, e.g. "works" for construction and refurbishment. | |
| max_value_gbp | No | Highest estimated contract value in the country's own currency (pounds for the UK, Canadian dollars for Canada, US dollars for the US, euros for Germany, France and the rest of the EU), e.g. 100000 for "under £100k". | |
| min_value_gbp | No | Lowest estimated contract value in the country's own currency (pounds for the UK, Canadian dollars for Canada, US dollars for the US, euros for Germany, France and the rest of the EU), e.g. 50000 for "over £50k". | |
| published_since | No | Only tenders published on or after this date, e.g. "2026-10-01". | |
| closing_within_days | No | Only tenders closing within this many days, e.g. 30 for "this month". |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | No | Every source searched had read its notices at or after this time, in ISO 8601. |
| note | No | |
| total | Yes | How many tenders match in all, across every page. |
| credit | No | |
| results | Yes | |
| summary | Yes | |
| countries | No | |
| nextCursor | No | Pass it back as cursor, with the same search, for the next page. Absent on the last page. |
| interpretedAs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioural context beyond that: default country resolution (falls back to the UK when not signed in), a default limit of 8, total count plus nextCursor for paging, and the fact that meaning-based matches are marked match "meaning". It stops short of describing result ordering nuances already handled by the sort enum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads scope, then defaults, then pagination, then exclusions to siblings, ending with a compact example. Every sentence carries distinct information; nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, yet the description still flags the total and nextCursor which matter for chaining calls. For an 18-parameter, all-optional search tool, the coverage of scope, defaults, exclusions and pagination is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the parameter burden and the baseline would be 3. The description goes further by showing a concrete call with query, region and closing_within_days, and by connecting cursor to the nextCursor field in answers, which clarifies the pagination contract in a way the schema alone does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (find public sector contracts to bid for) plus the exact geographic scope (UK, Canada, US, Germany, France, rest of EU) and the notice types covered (open tenders, frameworks, upcoming notices). It explicitly names the sibling it is not (search_contract_awards) and rules out jobs, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and when-not-to-use: past winners go to search_contract_awards, source coverage goes to get_coverage. It also states the default behaviour (searches the user's own countries unless one is named) and how to paginate, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_up_tendaSet up WinquillARead-onlyInspect
Use this when the user wants to set Winquill up for their company, or has just added Winquill and has no workspace yet: shows a short form in the chat for the company, where it works and the work it does, then how many open tenders fit it now. Needs a Winquill account. Do not use to change one fact the user names, such as a certification (use save_company_profile).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to set up, by name, when the user is in more than one, e.g. "Northbridge Services". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds real behavior beyond them: it renders an in-chat form, captures company/location/work, then reports how many open tenders match now, and requires an existing Winquill account. It stops short of saying what state the setup leaves behind or how the flow continues to the sibling finish_setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger, the behavior, the account prerequisite, and the exclusion are all packed into two sentences with no filler, and the trigger is front-loaded. It is dense to the point of being a run-on, which slightly costs scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, single-param setup entry point with no output schema, the description conveys what the agent and user will see (a form, then a tender count) and the account prerequisite. It leaves the follow-on relationship with finish_setup implicit rather than telling the agent what happens after the form is submitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional `workspace` parameter is fully documented in the schema, including the multi-workspace condition and a naming example, so the schema does the heavy lifting and the baseline of 3 applies. The description never mentions the parameter, adding nothing on top of that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("set Winquill up for their company") and adds the trigger condition ("just added Winquill and has no workspace yet"). It explicitly distinguishes itself from the closest sibling, save_company_profile, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use clause (new company / no workspace yet) and an explicit when-not-to clause ("Do not use to change one fact the user names, such as a certification") with the named alternative save_company_profile. Both halves of the routing decision are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_bid_draftHave Winquill draft the bidADestructiveInspect
Use this when the user wants Winquill to write a whole bid for their team: it asks a few questions, drafts every answer from the company's evidence, then marks and revises them. Relay Winquill's questions as they are. A whole bid uses one of the month's full bids, so first call it without confirmed, tell the user how many are left and offer to write it here with draft_bid_response, which uses none; call again with confirmed only if they choose Winquill. notify says where to hear when it's ready. Needs a Winquill account and workspace. Example: {"tender_reference":"012345-2026"}
| Name | Required | Description | Default |
|---|---|---|---|
| notify | No | Where Winquill says when the draft is ready, e.g. ["slack"]: the first of these apps where it has somewhere to say it, the conversation this call came from or else the workspace's first connected channel there. An empty list for nowhere. | |
| confirmed | No | true once the user, told it uses one of this month's full bids, chose Winquill's drafting over writing it here answer by answer with draft_bid_response. Leave it out the first time. | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| questions_text | No | The buyer's questions, or the invitation to tender's text, as the user shared it, including the text of files they attached. Left out, Winquill reads the documents the buyer published with the notice, or asks for them. | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| tender | No | |
| confirm | No | |
| draftId | No | |
| started | No | |
| summary | Yes | |
| bidsLeft | No | |
| progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructive/openWorld/non-idempotent), the description discloses the consumption of one monthly full bid, the account and workspace requirement, the two-step confirmation flow, the question-relay behavior, and how notification delivery is chosen. This is precisely the behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger, then quota, alternatives, and notification in a tight sequence. Every clause carries information an agent needs at call time; nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and rich annotations already covering safety and return shape, the description fills the remaining gaps: prerequisites, quota cost, confirmation protocol, and question-relay obligation. An agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning for 'confirmed' (must be omitted on the first call and supplied only after the quota trade-off is presented), explains how 'notify' signals readiness, and gives a concrete tender_reference example. The gain over the schema is modest but genuine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Winquill to write a whole bid for their team') and outlines the full process (asks questions, drafts from evidence, marks and revises). It is clearly separable from siblings like draft_bid_response and continue_bid_draft, which it names or implies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('when the user wants Winquill to write a whole bid'), explicit alternative ('offer to write it here with draft_bid_response, which uses none'), and an explicit call sequence: invoke without 'confirmed' first, then again with it only if the user picks Winquill.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_watchStop a watchADestructiveIdempotentInspect
Use this when the user wants to stop one of their Winquill watches, by the watchId that watch_tenders or list_watches gave. It finds nothing new after that; what it already found still shows in get_tender_updates. Needs a Winquill account. Example: {"watch_id":"wch_abc123"}
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes | The watch to stop, by the id watch_tenders or list_watches gave. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stopped | Yes | |
| summary | Yes | |
| watchId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real context: what stops is only future discovery, while already-found results remain visible in get_tender_updates. It also discloses the Winquill account requirement. It does not explain reversibility (restarting via watch_tenders), which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger and packs effect, prerequisites, and an example into a few clauses without waste. The semicolon-chained sentence is dense but readable; nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers trigger, id provenance, post-stop behavior, and account prerequisite, and an output schema exists so return values need not be described. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents watch_id's provenance, so the description mostly repeats it. The example {"watch_id":"wch_abc123"} adds a useful format cue, but no constraints or edge cases beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("stop one of their Winquill watches") and identifies the exact input key (watchId) plus where it comes from. It is clearly distinguishable from watch_tenders, list_watches, and get_tender_updates, which are all named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when the user wants to stop one of their Winquill watches" gives an explicit trigger, and the provenance hint routes the agent to watch_tenders or list_watches to obtain the id. No explicit when-not is stated, but the note that existing findings still appear in get_tender_updates implies the boundary against continuing to monitor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenda_changesCheck for changesCRead-onlyInspect
Says when the team's work in a workspace last changed, for Winquill's app to keep its page up to date.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes | ||
| tender_reference | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful framing that this is a lightweight freshness/polling endpoint used to keep a UI page up to date, but it stops short of disclosing what the response contains or whether calling it has cost/rate implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single well-front-loaded sentence with no filler. The trailing 'for Winquill's app to keep its page up to date' is slightly consumer-centric, but it does add a real hint about the tool's lightweight polling nature rather than being pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% parameter coverage, the description must be self-sufficient and it is not: it never says what 'changes' returns (a timestamp, a diff, a flag) or what tender_reference does. An agent cannot confidently interpret the result or supply the optional parameter from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning and it largely does not. 'Workspace' is only implicitly referenced ('work in a workspace'), with no guidance on identifier format or scope, and the second parameter tender_reference is never mentioned at all — a significant gap given the tool's apparent tender-centric siblings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this is a change-detection/polling query scoped to a workspace ('Says when the team's work in a workspace last changed'), which is more than the bare name 'tenda_changes' provides. However, it never states the concrete return substance (timestamp? version token? boolean?) nor distinguishes itself from siblings like get_tender_updates or list_watches, leaving an agent to infer the exact verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion conditions, and no mention of the obvious alternative (get_tender_updates) for checking recent activity. The only contextual cue — that Winquill's app uses it to keep a page current — describes the consumer, not when an agent should call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
turn_off_automationTurn off an automationAIdempotentInspect
Use this when the user wants one of the workspace's automations to stop. It stops running and keeps its rules and history, so it can be turned on again. Needs a Winquill account; owners, admins and bid leads turn them off.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| automation | Yes | The automation, by its name or id, as list_automations gives it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing what survives the call ('keeps its rules and history, so it can be turned on again') and the authorization profile ('Needs a Winquill account; owners, admins and bid leads turn them off'). The annotations only say non-destructive and idempotent; the description supplies reversibility and role requirements an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: trigger, effect/reversibility, authorization. The usage condition is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with an output schema, the definition covers intent, effect, reversibility and permissions, which is essentially everything an agent needs. Only the already-off / idempotent edge case is left implicit (covered by annotations).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (workspace, automation) are fully documented in the schema, including the reference to list_automations for obtaining the identifier. The description adds only the loose phrase 'workspace's automations' and nothing about the name-vs-id or multi-workspace behavior, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('one of the workspace's automations to stop'), which unambiguously separates it from siblings like turn_on_automation, add_automation and list_automations. An agent can pick the correct tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence gives a clear trigger condition tied to user intent ('when the user wants ... to stop'). It implies the contrast with turn_on_automation without naming it, and gives no explicit exclusion for edge cases such as an automation that is already off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
turn_on_automationTurn on an automationADestructiveIdempotentInspect
Use this only after you have read an automation's rules back to the user in plain words and they said yes to turning it on. From then on it runs as the user, outside quiet hours, and acts on the team's pipeline as its rules say. Automations never submit a bid, send anything to a buyer, decline a tender, email anyone outside the team or change who is in the workspace. Needs a Winquill account; owners, admins and bid leads turn them on. Not for turning one off (use turn_off_automation).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| automation | Yes | The automation, by its name or id, as list_automations gives it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| history | No | |
| library | No | |
| summary | Yes | |
| wouldHave | No | What it would have done over the last 30 days. |
| automation | No | |
| automations | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (which only flag readOnly=false, destructive=true, idempotent=true): it discloses the execution identity (runs as the user), a scheduling constraint (outside quiet hours), a negative capability list (never submits a bid, messages a buyer, declines a tender, emails outside the team, or changes workspace membership), and the authorization model (owners, admins, bid leads). No contradiction with destructiveHint — 'acts on the team's pipeline as its rules say' is consistent with a mutating, enabled-side-effect tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each carrying distinct load: precondition, runtime behavior, capability limits, auth/alternative. The gating precondition is front-loaded in the very first clause, which is exactly where an agent needs it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and both parameters are covered by the schema. The description covers everything else an agent needs for a mutating, permission-gated tool: consent gate, execution identity, side-effect boundaries, and auth roles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (workspace, automation) are already documented in the schema. The description reinforces that the automation is referenced after having its rules read back, but adds no new syntax or format guidance beyond what the schema supplies. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (turn an automation on) and immediately adds what that means operationally: it runs as the user, outside quiet hours, and acts on the team's pipeline. Explicitly names the sibling it is not (turn_off_automation), so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('only after you have read an automation's rules back to the user in plain words and they said yes'), which is a hard gate on when to call it. Also names the exact alternative for the inverse operation (turn_off_automation), covering both when-to-use and when-not-to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_bid_sprintUpdate the bid sprintADestructiveIdempotentInspect
Use this when the user says a step of a bid their team is running is done, or not done after all: decode the pack, assign questions, draft answers, review and score, final checks or submit. Ticks it off with who did it and when, and says what is next and when it is due. Ticking submit moves the tender to Submitted. Needs a Winquill account and a bid sprint, which starts with a call to bid (record_bid_call). Do not use to write or check answers (use draft_bid_response or review_bid_draft).
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | false to reopen a step ticked off by mistake. Defaults to true. | |
| step | Yes | The step: "decode" (read the tender pack), "assign" (give each question an owner), "draft" (write the answers), "review" (score them), "checks" (final checks) or "submit". | |
| workspace | No | The Winquill workspace to use, by name, when the user is in more than one, e.g. "Northbridge Services". | |
| tender_reference | Yes | The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. "012345-2026" on Find a Tender, "WS4851234567" on CanadaBuys or "140D0427Q0879" on SAM.gov. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stage | No | |
| tender | No | |
| summary | Yes | |
| updated | No | |
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=true, idempotent=true, but the description adds genuinely new behavioral context: the tool records who did the step and when, returns what comes next plus its due date, and specifically that ticking 'submit' transitions the tender to Submitted. It does not explain what could be lost given destructiveHint=true, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage trigger is front-loaded and every clause carries information (trigger, effect, state transition, prerequisites, exclusions). It is dense and reads as one long sentence, which slightly hurts scannability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and prerequisites plus the submit state change are covered. What is left unaddressed is the destructive framing declared in annotations: an agent is not told what is irreversibly changed or whether reopening a step restores prior state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is documented in-schema, including the done/step/workspace/tender_reference semantics and examples. The description restates step names and scoping but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (update/tick off) and resource (a step of a bid sprint), enumerates the exact six steps it operates on, and states the side effect. It also explicitly distinguishes itself from draft_bid_response and review_bid_draft, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrases (user says a step is done, or was ticked off by mistake), names the two alternatives for the answer-writing path, and states prerequisites: a Winquill account and a bid sprint created via record_bid_call. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_tenda_settingsChange Winquill settingsADestructiveInspect
Use this when the user wants ChatGPT to use another of their Winquill workspaces, or to show tenders from another country or stop: set "workspace" to the workspace's name, or a country's key from get_tenda_settings (such as "us") to true or false. The workspace's home country stays on. Owners and admins change countries. Needs a Winquill account.
| Name | Required | Description | Default |
|---|---|---|---|
| set | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds real context beyond them: the workspace's home country cannot be turned off, country changes are restricted to owners/admins, and a Winquill account is required. It does not explain why the operation is flagged destructive (e.g. losing filters or watch state when switching workspaces), which leaves a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense sentence that leads with the use case, which is good, but the phrasing is run-on and drops a fragment ('or stop:') that reads like a truncation. The key information is present but harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers permissions, the account prerequisite, and the home-country invariant. However, for a tool annotated as destructive with an opaque free-form parameter, it never states what state is lost or whether changes are reversible, leaving the riskiest aspect undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'set' parameter is an untyped free-form map, so the description carries the entire burden. It does so usefully by naming the 'workspace' key with the workspace name as its value and by explaining that country keys from get_tenda_settings map to true/false. It still doesn't say whether any other keys are accepted or what happens with unknown keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action on a specific resource: switching the active workspace and toggling country visibility of tenders, with an implicit read counterpart via get_tenda_settings. It is somewhat garbled ('or to show tenders from another country or stop:') and mixes the 'Winquill' and 'tenda' naming, but an agent can still tell this is the write/settings tool and not the get_tenda_settings reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It opens with an explicit trigger ('Use this when the user wants ChatGPT to use another of their Winquill workspaces, or to show tenders from another country') and points at get_tenda_settings as the source of valid country keys. Permission scope is also stated (owners and admins change countries). It lacks an explicit when-not clause, e.g. to use get_tenda_settings for reading the current configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_tendersWatch for tendersAInspect
Use this when the user wants alerts for new tenders or upcoming notices that match a search, or for changes to one tender they follow (clarifications, new deadlines, the award). Saves a watch and gives its watchId: matches show in get_tender_updates and, with notify, in the workspace's Slack or Teams channels that get changes. Needs a Winquill account. Not for seeing the user's watches (use list_watches) or stopping one (use stop_watch). Example: {"query":"office cleaning","include_upcoming":true}
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | What to watch for, e.g. "office cleaning". | |
| notify | No | Also post what the watch finds to the user's workspace's Slack or Teams channels, where they get changes. Only when the user asks for it there. | |
| region | No | Where the work or delivery happens: a UK nation or English region, e.g. "North West" for Manchester or Liverpool; a Canadian province or territory, e.g. "Ontario" for Toronto; a US state, e.g. "Virginia"; a German Land by its German name, e.g. "Bayern" for Munich; a French region, e.g. "Île-de-France" for Paris; or another EU member state, e.g. "Poland". Omit for nationwide contracts or when the user names no place. | |
| country | No | The country to look in, when the user names one, e.g. "Canada", "UK" or "Spain" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU. | |
| buyer_type | No | Kind of public buyer, e.g. "local_authority" for councils, "nhs" for NHS trusts and ICBs, "education" for schools, academy trusts and universities. | |
| include_upcoming | No | Also alert on pipeline and preliminary market engagement notices, to hear about work before it is tendered. | |
| tender_reference | No | Watch one tender for clarifications, deadline changes and the award instead of a search, e.g. "012345-2026". |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| credit | No | |
| notify | No | |
| created | No | |
| summary | Yes | |
| watchId | No | |
| channels | No | |
| workspace | No | |
| alreadyOpen | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the created artifact and its return (a watchId), where matches surface (get_tender_updates and, with notify, Slack/Teams), and the account prerequisite. This is the useful context a non-destructive mutation needs, and it does not conflict with readOnlyHint=false/openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger, then the outcome, prerequisites, exclusions, and an example — no filler. The single long sentence for the notify/Slack-Teams behavior is slightly dense but still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with an output schema and full schema coverage, the description covers trigger, side effects, auth, and routing of results. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3; the description adds mode semantics by distinguishing a search watch from a tender_reference follow, and the example shows query plus include_upcoming usage. It could say slightly more about how query and tender_reference interact when both are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (saves a watch for tender alerts) and explicitly covers both modes: a search-based watch and a single-tender follow. It is immediately distinguishable from list_watches, stop_watch, and get_tender_updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives trigger conditions ('when the user wants alerts for new tenders... or for changes to one tender'), names the alternatives for adjacent intents ('Not for seeing the user's watches (use list_watches) or stopping one (use stop_watch)'), and includes a concrete example invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
30 tool updates
- Changed
add_automation1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
add_tender_documents4 fields changed- changed
Input schema / properties / read_published / descriptionPrevious value: -"true to have Tenda fetch and read the files the buyer published with the notice, up to 8 (PDF, Word, Excel, web pages and ZIPs of them). Needs sign-in. Reading the scored questions with Tenda's AI uses a check's worth of the workspace's usage."New value: +"true to have Winquill fetch and read the files the buyer published with the notice, up to 8 (PDF, Word, Excel, web pages and ZIPs of them). Needs sign-in. Reading the scored questions with Winquill's AI uses a check's worth of the workspace's usage." - changed
Input schema / properties / text / descriptionPrevious value: -"The document text the user shared, not a file link: an invitation to tender, selection questionnaire, specification or instructions to bidders. Needed unless read_published is true. Signed in, later fit and readiness checks for the tender include what Tenda reads; signed out, it keeps nothing."New value: +"The document text the user shared, not a file link: an invitation to tender, selection questionnaire, specification or instructions to bidders. Needed unless read_published is true. Signed in, later fit and readiness checks for the tender include what Winquill reads; signed out, it keeps nothing." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." - changed
Output schema / properties / questions / descriptionPrevious value: -"The questions the buyer scores, with word limits and weights in per cent. Read by Tenda's AI; absent when it wasn't, and note says why."New value: +"The questions the buyer scores, with word limits and weights in per cent. Read by Winquill's AI; absent when it wasn't, and note says why."
- Changed
add_to_pipeline1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
add_winning_bid1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
assess_tender_fit3 fields changed- changed
Input schema / properties / company_summary / descriptionPrevious value: -"What the company does, its size, turnover, certifications, insurance, where it works and past contracts, in the user's words, e.g. \"6-person electrical contractor in Leeds, £800k turnover, CHAS and Cyber Essentials\". Optional when the user has a saved Tenda profile."New value: +"What the company does, its size, turnover, certifications, insurance, where it works and past contracts, in the user's words, e.g. \"6-person electrical contractor in Leeds, £800k turnover, CHAS and Cyber Essentials\". Optional when the user has a saved Winquill profile." - changed
Input schema / properties / country / descriptionPrevious value: -"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Tenda covers the UK, Canada, the United States, Germany, France and the rest of the EU."New value: +"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU." - changed
Output schema / properties / notFound / descriptionPrevious value: -"The references asked for that Tenda has no notice for."New value: +"The references asked for that Winquill has no notice for."
- Changed
assign_task2 fields changed- changed
Input schema / properties / person / descriptionPrevious value: -"Who gets it: their name as the team knows them, e.g. \"Sam\" or \"Sam Okafor\", their email, or \"me\" for the user. Owners, admins and bid leads give out work; anyone can take work their role can do. Someone not in the workspace yet is invited from Today in the Tenda dashboard."New value: +"Who gets it: their name as the team knows them, e.g. \"Sam\" or \"Sam Okafor\", their email, or \"me\" for the user. Owners, admins and bid leads give out work; anyone can take work their role can do. Someone not in the workspace yet is invited from Today in the Winquill dashboard." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
choose_alerts2 fields changed- changed
Input schema / properties / stop / descriptionPrevious value: -"Alerts to turn off in those channels: \"new_tenders\" (new tenders that fit the company), \"changes\" (changes to tenders in the pipeline), \"morning_summary\" (the weekday morning summary), \"bid_work\" (bid work nobody has yet), or \"all\". A channel with no alerts stays connected, so the team can still ask Tenda there."New value: +"Alerts to turn off in those channels: \"new_tenders\" (new tenders that fit the company), \"changes\" (changes to tenders in the pipeline), \"morning_summary\" (the weekday morning summary), \"bid_work\" (bid work nobody has yet), or \"all\". A channel with no alerts stays connected, so the team can still ask Winquill there." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
continue_bid_draft6 fields changed- changed
Input schema / properties / answers / descriptionPrevious value: -"The team's answers to Tenda's questions."New value: +"The team's answers to Winquill's questions." - changed
Input schema / properties / answers / items / properties / question / descriptionPrevious value: -"The question Tenda asked, by its number such as \"2\", or its words."New value: +"The question Winquill asked, by its number such as \"2\", or its words." - changed
Input schema / properties / draft_now / descriptionPrevious value: -"true to start drafting now, with any of Tenda's questions unanswered."New value: +"true to start drafting now, with any of Winquill's questions unanswered." - changed
Input schema / properties / notes / descriptionPrevious value: -"Anything else the team wants Tenda to use in the bid."New value: +"Anything else the team wants Winquill to use in the bid." - changed
Input schema / properties / questions_text / descriptionPrevious value: -"The buyer's questions, when Tenda asked for them."New value: +"The buyer's questions, when Winquill asked for them." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
get_automation_history1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
get_automation_library1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
get_bid_draft1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
get_coverage1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"One country, e.g. \"Canada\", \"UK\" or \"Germany\". Omit for every country Tenda covers. Tenda reads Find a Tender, Contracts Finder, Public Contracts Scotland, Sell2Wales, CanadaBuys, SEAO, Toronto Bids, SAM.gov, USAC E-Rate, City Record Online, RAMP LA, SF City Partner, DC PASS, oeffentlichevergabe.de, BOAMP, TED, PLACSP, IUB (Latvia) and KIMDIS (Greece)."New value: +"One country, e.g. \"Canada\", \"UK\" or \"Germany\". Omit for every country Winquill covers. Winquill reads Find a Tender, Contracts Finder, Public Contracts Scotland, Sell2Wales, CanadaBuys, SEAO, Toronto Bids, SAM.gov, USAC E-Rate, City Record Online, RAMP LA, SF City Partner, DC PASS, oeffentlichevergabe.de, BOAMP, TED, PLACSP, IUB (Latvia) and KIMDIS (Greece)."
- Changed
get_pipeline_status1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
get_tender_details3 fields changed- changed
Output schema / properties / competition / properties / read / descriptionPrevious value: -"Tenda's read of the competition, from the rules in why: never odds."New value: +"Winquill's read of the competition, from the rules in why: never odds." - changed
Output schema / properties / notFound / descriptionPrevious value: -"The references asked for that Tenda has no notice for."New value: +"The references asked for that Winquill has no notice for." - changed
Output schema / properties / tenders / items / properties / competition / properties / read / descriptionPrevious value: -"Tenda's read of the competition, from the rules in why: never odds."New value: +"Winquill's read of the competition, from the rules in why: never odds."
- Changed
list_automations1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
move_in_pipeline1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
record_bid_call2 fields changed- changed
Input schema / properties / answers / descriptionPrevious value: -"The team's answers to Tenda's five questions, each \"yes\", \"unsure\" or \"no\": fit (is this work we do well), eligibility (do we meet every must-have), capacity (can we deliver it and write the bid in time), competition (can we beat the other bidders) and value (is it worth winning). Leave out questions the user didn't answer."New value: +"The team's answers to Winquill's five questions, each \"yes\", \"unsure\" or \"no\": fit (is this work we do well), eligibility (do we meet every must-have), capacity (can we deliver it and write the bid in time), competition (can we beat the other bidders) and value (is it worth winning). Leave out questions the user didn't answer." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
record_portal_account2 fields changed- changed
Input schema / properties / portal / descriptionPrevious value: -"The portal, e.g. \"EU-Supply\" or \"Public Contracts Scotland\", or the key Tenda gave for it, e.g. \"atamis:health-family.force.com\"."New value: +"The portal, e.g. \"EU-Supply\" or \"Public Contracts Scotland\", or the key Winquill gave for it, e.g. \"atamis:health-family.force.com\"." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
remove_from_pipeline1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
review_bid_draft1 field changed- changed
Input schema / properties / question / descriptionPrevious value: -"The buyer's question, word for word, so Tenda can check every part is answered."New value: +"The buyer's question, word for word, so Winquill can check every part is answered."
- Changed
rewrite_bid_answer1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
save_company_profile3 fields changed- changed
Input schema / properties / company_number / descriptionPrevious value: -"The Companies House number, e.g. \"08123456\" or \"SC123456\", or for a US company its SAM.gov Unique Entity ID (UEI), e.g. \"JX4M7Q2LK9C1\". Tenda looks the company up and finds the public contracts it has won."New value: +"The Companies House number, e.g. \"08123456\" or \"SC123456\", or for a US company its SAM.gov Unique Entity ID (UEI), e.g. \"JX4M7Q2LK9C1\". Winquill looks the company up and finds the public contracts it has won." - changed
Input schema / properties / summary / descriptionPrevious value: -"What the company does, who for and where, in a few sentences. Leave it out to keep the description Tenda has, such as when only adding codes or a trading name; a new one replaces it."New value: +"What the company does, who for and where, in a few sentences. Leave it out to keep the description Winquill has, such as when only adding codes or a trading name; a new one replaces it." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
search_contract_awards1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Tenda covers the UK, Canada, the United States, Germany, France and the rest of the EU."New value: +"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU."
- Changed
search_tenders1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Tenda covers the UK, Canada, the United States, Germany, France and the rest of the EU."New value: +"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU."
- Changed
set_up_tenda1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to set up, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to set up, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
start_bid_draft4 fields changed- changed
Input schema / properties / confirmed / descriptionPrevious value: -"true once the user, told it uses one of this month's full bids, chose Tenda's drafting over writing it here answer by answer with draft_bid_response. Leave it out the first time."New value: +"true once the user, told it uses one of this month's full bids, chose Winquill's drafting over writing it here answer by answer with draft_bid_response. Leave it out the first time." - changed
Input schema / properties / notify / descriptionPrevious value: -"Where Tenda says when the draft is ready, e.g. [\"slack\"]: the first of these apps where it has somewhere to say it, the conversation this call came from or else the workspace's first connected channel there. An empty list for nowhere."New value: +"Where Winquill says when the draft is ready, e.g. [\"slack\"]: the first of these apps where it has somewhere to say it, the conversation this call came from or else the workspace's first connected channel there. An empty list for nowhere." - changed
Input schema / properties / questions_text / descriptionPrevious value: -"The buyer's questions, or the invitation to tender's text, as the user shared it, including the text of files they attached. Left out, Tenda reads the documents the buyer published with the notice, or asks for them."New value: +"The buyer's questions, or the invitation to tender's text, as the user shared it, including the text of files they attached. Left out, Winquill reads the documents the buyer published with the notice, or asks for them." - changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
turn_off_automation1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
turn_on_automation1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
update_bid_sprint1 field changed- changed
Input schema / properties / workspace / descriptionPrevious value: -"The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."New value: +"The Winquill workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"."
- Changed
watch_tenders1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Tenda covers the UK, Canada, the United States, Germany, France and the rest of the EU."New value: +"The country to look in, when the user names one, e.g. \"Canada\", \"UK\" or \"Spain\" (an EU member state searches the rest of the EU there). Omit to use the user's own countries (the UK when they aren't signed in). Winquill covers the UK, Canada, the United States, Germany, France and the rest of the EU."
7 tool updates
- Added
add_automation - Removed
automations - Added
get_automation_history - Added
get_automation_library - Added
list_automations - Added
turn_off_automation - Added
turn_on_automation
6 tool updates
- Changed
assess_tender_fit2 fields changed- added
Input schema / properties / more_referencesAdded value: +{ + "description": "More tenders to judge in the same call, by the same kind of reference, e.g. to compare a shortlist: up to 19, for 20 in all. Saves a call for each.", + "items": { + "description": "The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. \"012345-2026\" on Find a Tender, \"WS4851234567\" on CanadaBuys or \"140D0427Q0879\" on SAM.gov.", + "minLength": 3, + "type": "string" + }, + "maxItems": 19, + "type": "array" +} - added
Output schema / properties / notFoundAdded value: +{ + "description": "The references asked for that Tenda has no notice for.", + "items": { + "type": "string" + }, + "type": "array" +}
- Added
automations - Changed
get_tender_details3 fields changed- added
Input schema / properties / more_referencesAdded value: +{ + "description": "More tenders to read in the same call, by the same kind of reference, e.g. to compare a shortlist: up to 19, for 20 in all. Saves a call for each.", + "items": { + "description": "The notice ID, procurement identifier, solicitation number or the buyer's own reference, e.g. \"012345-2026\" on Find a Tender, \"WS4851234567\" on CanadaBuys or \"140D0427Q0879\" on SAM.gov.", + "minLength": 3, + "type": "string" + }, + "maxItems": 19, + "type": "array" +} - added
Output schema / properties / notFoundAdded value: +{ + "description": "The references asked for that Tenda has no notice for.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / tendersAdded value: +{ + "description": "With more_references: each tender's own answer, in the order asked.", + "items": { + "additionalProperties": {}, + "properties": { + "awards": { + "items": { + "additionalProperties": {}, + "properties": { + "date": { + "type": "string" + }, + "ends": { + "type": "string" + }, + "suppliers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "buyer": { + "additionalProperties": {}, + "properties": { + "contact": { + "type": "string" + }, + "locality": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "codes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "competition": { + "additionalProperties": {}, + "properties": { + "bidsReceived": { + "additionalProperties": {}, + "description": "How many bids similar contracts drew: the median, and how many notices gave a count.", + "properties": { + "notices": { + "type": "number" + }, + "typical": { + "type": "number" + } + }, + "required": [ + "typical", + "notices" + ], + "type": "object" + }, + "history": { + "description": "The buyer's similar past contracts the read is from, newest first.", + "items": { + "additionalProperties": {}, + "properties": { + "awardedAt": { + "type": "string" + }, + "bidsReceived": { + "type": "number" + }, + "contractEnd": { + "type": "string" + }, + "contractStart": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "suppliers": { + "items": { + "additionalProperties": {}, + "properties": { + "companyNumber": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + }, + "tenderId": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "value": { + "additionalProperties": {}, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + "valuePerYear": { + "type": "number" + } + }, + "required": [ + "tenderId", + "title", + "reference", + "awardedAt", + "suppliers" + ], + "type": "object" + }, + "type": "array" + }, + "holder": { + "additionalProperties": {}, + "description": "Who holds the work now: the winner of the buyer's latest similar contract that hasn't ended, or ended within the last 12 months. Dates in ISO 8601.", + "properties": { + "companyNumber": { + "type": "string" + }, + "contractEnds": { + "type": "string" + }, + "name": { + "type": "string" + }, + "since": { + "type": "string" + } + }, + "required": [ + "name", + "since" + ], + "type": "object" + }, + "read": { + "description": "Tenda's read of the competition, from the rules in why: never odds.", + "enum": [ + "worth chasing", + "open contest", + "long shot" + ], + "type": "string" + }, + "valueRange": { + "additionalProperties": {}, + "description": "What similar contracts were worth a year, lowest and highest, in one currency.", + "properties": { + "contracts": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "high": { + "type": "number" + }, + "low": { + "type": "number" + } + }, + "required": [ + "low", + "high", + "currency", + "contracts" + ], + "type": "object" + }, + "why": { + "description": "The facts behind the read, in plain words.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "read", + "why", + "history" + ], + "type": "object" + }, + "conditions": { + "items": { + "additionalProperties": {}, + "properties": { + "mandatory": { + "type": "boolean" + }, + "requirement": { + "type": "string" + }, + "source": { + "type": "string" + }, + "words": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "credit": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "howItIsRun": { + "type": "string" + }, + "howItIsScored": { + "items": { + "type": "string" + }, + "type": "array" + }, + "keyDates": { + "additionalProperties": {}, + "properties": { + "bidsClose": { + "type": "string" + }, + "clarificationsClose": { + "type": "string" + }, + "contractEnds": { + "type": "string" + }, + "contractStarts": { + "type": "string" + }, + "expressionsOfInterestClose": { + "type": "string" + }, + "latestEndWithExtensions": { + "type": "string" + } + }, + "type": "object" + }, + "lots": { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "suitableForSme": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "notInTheNotice": { + "type": "string" + }, + "publishedDocuments": { + "items": { + "additionalProperties": {}, + "properties": { + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "rules": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "tender": { + "additionalProperties": {}, + "description": "The same facts as a search_tenders result.", + "properties": { + "buyer": { + "type": "string" + }, + "closesAt": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ocid": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "valueAmount": { + "type": "number" + } + }, + "required": [ + "id", + "ocid", + "reference", + "title", + "buyer" + ], + "type": "object" + }, + "whatTheyWant": { + "type": "string" + } + }, + "required": [ + "summary", + "found" + ], + "type": "object" + }, + "type": "array" +}
- Added
remove_from_pipeline - Changed
save_company_profile5 fields changed- added
Input schema / properties / add_codesAdded value: +{ + "description": "CPV codes to add to the ones the company works under, 8 digits each, e.g. [\"60130000\"] when the user adds SEND transport. Pick the most specific codes that fit the work the user names; adding never takes codes off.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / remove_codesAdded value: +{ + "description": "CPV codes to take off, e.g. [\"80500000\"].", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / summary / descriptionPrevious value: -"What the company does, who for and where, in a few sentences, e.g. \"Commercial and school cleaning across Greater Manchester, 40 staff, mostly council and academy trust contracts.\""New value: +"What the company does, who for and where, in a few sentences. Leave it out to keep the description Tenda has, such as when only adding codes or a trading name; a new one replaces it." - added
Input schema / properties / trading_nameAdded value: +{ + "description": "The name the company bids under, when it isn't its registered name, e.g. \"Plenda\" for Eshmere Ltd.", + "maxLength": 160, + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "summary" -]
- Added
share_tender
36 tool updates
- First observed
add_tender_documents - First observed
add_to_pipeline - First observed
add_winning_bid - First observed
assess_tender_fit - First observed
assign_task - First observed
check_bid_readiness - First observed
choose_alerts - First observed
continue_bid_draft - First observed
draft_bid_response - First observed
find_company - First observed
finish_setup - First observed
get_bid_draft - First observed
get_coverage - First observed
get_pipeline_status - First observed
get_tenda_settings - First observed
get_tender_details - First observed
get_tender_updates - First observed
list_watches - First observed
move_in_pipeline - First observed
open_bid_panel - First observed
open_tenda - First observed
record_bid_call - First observed
record_portal_account - First observed
review_bid_draft - First observed
rewrite_bid_answer - First observed
save_company_profile - First observed
search_contract_awards - First observed
search_mentions - First observed
search_tenders - First observed
set_up_tenda - First observed
start_bid_draft - First observed
stop_watch - First observed
tenda_changes - First observed
update_bid_sprint - First observed
update_tenda_settings - First observed
watch_tenders
Related MCP Connectors
UK and Ireland public sector tenders, contract awards, buyers and expected re-tenders.
Public tenders and contract awards from EU TED and UK Find a Tender, with buyer, value and deadline.
Live UK public-sector tender notices for your keywords and region. Free sample; £0.49 pack.
Government tenders, contract awards, buyers and suppliers from official sources in 60+ countries.
Related MCP Servers
- AlicenseAqualityFmaintenanceMatch your tech product or consulting service to thousands of live government tenders, RFPs, grants, and frameworks from 25+ official sources worldwide.4129 npm6MIT
- AlicenseAqualityBmaintenanceEnables AI agents to find, score, and monitor government contract opportunities across UK, EU, and US with AI-powered relevance scoring.221 npm1MIT
- AlicenseNot gradedqualityBmaintenanceOpen & historical US government bid solicitations from city/county portals — updated daily.387 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and analyzing government tenders, contract awards, and pre-tender pipelines from 21 official sources, with tools for tender search, award intelligence, and detailed notice retrieval.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.