tenda
Registry code: 253e47ff8d2a8cff
Tenda is public sector tender intelligence for the UK, Canada, the United States, Germany, France and the rest of the EU. Use it to find public contract opportunities, explain a tender, look up past awards, judge whether a company should bid, check what documents it is missing, draft bid answers and watch for new tenders. Tenda returns facts and briefs; you write the prose. Never mention Tenda's plans, prices or upgrades. Never promise that a bid will win, and remind users that a person should review bids before they submit. When an answer says a workspace has no room for something, such as…
- endpoint
- https://mcp.tenda.eshmere.ai/mcp
- door code
- 9896a914a3ee76ec
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is tenda live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is tenda free to use?
- Partly — some of its tools are open, others need a key or payment.
- What tools does tenda have?
- 33 tools: draft_bid_response, assign_task, continue_bid_draft, get_tenda_settings, update_tenda_settings, finish_setup, search_tenders, get_tender_details, ….
- Is tenda safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 33 tools
- unknown → live
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
assess_tender_fit open 1h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "query": { "type": "string", "description": "When ranking without a tender_reference: the kind of work to look for, e.g. \"NHS cleaning\"." }, "country": { "type": "string", "description": "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." }, "business_size": { "enum": [ "micro", "small", "medium", "large", "vcse" ], "type": "string", "description": "The company's size, e.g. \"small\" for under 50 staff. Use \"vcse\" for charities and social enterprises." }, "company_summary": { "type": "string", "description": "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." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 34 linescheck_bid_readiness open 1h ago
Use this when the user wants to know what they are missing before bidding for public sector contracts, for one tender or in general: in the UK, Central Digital Platform registration, Cyber Essentials, a Carbon Reduction Plan and a modern slavery statement; in Canada, SAP Business Network registration, a business number, security clearance and the Federal Contractors Program; in the US, SAM.gov registration, small business certifications, CMMC for the Department of Defense and bonds for construction; in Germany, the EEE (ESPD) or self-declarations, trade register and tax clearance, pre-qualification and pay declarations; in France, the DUME or DC1 and DC2, the Kbis, URSSAF and tax certificates and the décennale for works; in the rest of the EU, the ESPD, the buyer's e-procurement platform and the tax, social security and criminal record certificates behind it; and everywhere insurance cover, ISO certifications, health and safety accreditation and the policies buyers commonly ask for. A general check follows the user's home country. Returns a checklist of what is held, missing or expiring. It gives readiness guidance, not legal advice. Do not use to look up a company's Companies House record or to answer tax questions.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "sector": { "enum": [ "construction", "facilities", "it_digital", "health_social_care", "professional_services", "goods_supply", "transport", "other" ], "type": "string", "description": "The kind of work the company bids for, e.g. \"construction\", which changes the accreditations buyers expect." }, "country": { "type": "string", "description": "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." }, "documents_held": { "type": "array", "items": { "type": "string" }, "description": "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": { "type": "string", "minLength": 3, "description": "Optional tender to check against, e.g. \"003344-2026\". Omit for a general readiness check." } } }arguments 36 linesget_bid_draft auth-required 1h ago
Use this when the user asks how a bid Tenda is drafting is going, or wants to read it: where it is, each question with its word count and Tenda'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. Returns a link to the draft in Tenda, where the team edits it and downloads it in Word. Needs a Tenda account.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "draft_id": { "type": "string", "description": "The draft's ID, from start_bid_draft. Or give the tender's reference instead, or neither for the workspace's latest draft." }, "question": { "type": "string", "description": "One answer to read in full, by the buyer's number, e.g. \"Q3\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 23 linesdraft_bid_response unknown never probed
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "section" ], "properties": { "notes": { "type": "string", "description": "Facts the draft should use, e.g. \"we cut response times by 30% for Bristol City Council in 2025\"." }, "section": { "enum": [ "quality_answer", "social_value", "method_statement", "case_study", "company_overview", "cover_letter", "clarification_question" ], "type": "string", "description": "Which part of the bid to draft, e.g. \"social_value\"." }, "question": { "type": "string", "description": "The buyer's question, word for word, when the user has it." }, "word_limit": { "type": "integer", "maximum": 9007199254740991, "description": "The buyer's word limit for this answer, e.g. 500.", "exclusiveMinimum": 0 }, "tender_reference": { "type": "string", "minLength": 3, "description": "The tender being answered, e.g. \"005566-2026\"." } } }arguments 41 linesassign_task unknown never probed
Use this when the user wants to give work on one of their team's bids to someone, or take it on themselves: "give the Bristol bid call to Sam", "Priya can do the review on the NHS Lothian bid" or "I'll take the final checks". The work is the bid or no-bid call while a tender waits in Watching or Qualifying, or a step of its bid sprint, the next one unless the user names another. Says who has it now, and whether they heard in Slack. Owners, admins and bid leads give out work; anyone can take work their role can do. When the person's role can't do it, the answer says who can: ask the user before giving it to one of them. Someone not yet in the workspace is invited from Today in the Tenda dashboard. Needs a Tenda account and workspace. Do not use to tick a step off (use update_bid_sprint) or to record the bid call itself (use record_bid_call).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference", "person" ], "properties": { "task": { "enum": [ "call", "decode", "assign", "draft", "review", "checks", "submit" ], "type": "string", "description": "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": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Who gets it: their name as the team knows them, e.g. \"Sam\" or \"Sam Okafor\", their email, or \"me\" for the user." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 38 linescontinue_bid_draft unknown never probed
Use this to carry on a bid draft Tenda started with start_bid_draft: give it the buyer's questions it asked for, the team's answers to the questions Tenda asked, or the go-ahead to draft now with what it has (Tenda marks the gaps [TO CONFIRM]). Drafting starts once Tenda's questions are answered, or when draft_now is true. Pass each answer with the question's number or words. Needs a Tenda account. Do not use for a new bid (use start_bid_draft).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "notes": { "type": "string", "maxLength": 4000, "description": "Anything else the team wants Tenda to use in the bid." }, "answers": { "type": "array", "items": { "type": "object", "required": [ "question", "answer" ], "properties": { "answer": { "type": "string", "description": "The team's answer, in their words." }, "question": { "type": "string", "description": "The question Tenda asked, by its number such as \"2\", or its words." } } }, "description": "The team's answers to Tenda's questions." }, "draft_id": { "type": "string", "description": "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": { "type": "boolean", "description": "true to start drafting now, with any of Tenda's questions unanswered." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "questions_text": { "type": "string", "maxLength": 200000, "description": "The buyer's questions, when Tenda asked for them." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 54 linesget_tenda_settings unknown never probed
Use this when the user asks which Tenda workspace ChatGPT uses, or which countries' tenders it shows: returns Tenda's settings in ChatGPT, the workspace (for someone in more than one) and the workspace's countries. Needs a Tenda account. Do not use for the company profile (use save_company_profile).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesupdate_tenda_settings unknown never probed
Use this when the user wants ChatGPT to use another of their Tenda 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 Tenda account.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "set" ], "properties": { "set": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": [ "string", "boolean" ] } } } }arguments 21 linesfinish_setup unknown never probed
Saves what Tenda's setup was told, making the workspace for someone without one, and finds the open tenders that fit.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "name", "regions", "work" ], "properties": { "name": { "type": "string", "maxLength": 160, "minLength": 1 }, "size": { "enum": [ "small", "mid", "large" ], "type": "string" }, "work": { "type": "array", "items": { "type": "string", "maxLength": 80 }, "maxItems": 100 }, "market": { "type": "string", "maxLength": 10 }, "regions": { "type": "array", "items": { "type": "string", "maxLength": 80 }, "maxItems": 300 }, "workspace": { "type": "string", "maxLength": 200 }, "company_number": { "type": "string", "maxLength": 20 } } }arguments 52 linessearch_tenders unknown never probed
Use this when the user wants to find public sector contract opportunities to bid for in the UK, Canada, the United States, Germany, France and the rest of the EU: open tenders, frameworks, standing offers, dynamic markets and upcoming pipeline notices from central and federal government, councils, the NHS, schools and universities, housing providers and other public buyers. Covers Find a Tender, Contracts Finder and Public Contracts Scotland for the UK, CanadaBuys for the Government of Canada, SAM.gov for the US federal government, oeffentlichevergabe.de for every German public buyer, BOAMP for every French one, and TED for the rest of the EU above the EU thresholds (German, French and other EU notices are in their own languages; search in their words or by what is bought). Searches the user's own countries unless they name one. Filters by keyword, buyer, classification code, region, buyer type, contract type, value, SME or VCSE suitability, publication date and closing date, and sorts by best fit, closing date, newest or value. Answers say how many tenders match in all; pass nextCursor back as cursor for the next page. Do not use for countries Tenda doesn't cover, for who won past contracts (use search_contract_awards), for jobs, or for news about procurement policy.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "sort": { "enum": [ "best", "closing", "newest", "value" ], "type": "string", "description": "\"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": { "type": "string", "maxLength": 200, "description": "Only tenders from a buyer whose name holds these words, e.g. \"Leeds City Council\" or \"NHS Lothian\"." }, "codes": { "type": "array", "items": { "type": "string", "maxLength": 20, "minLength": 2 }, "maxItems": 20, "description": "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": { "type": "integer", "maximum": 50, "minimum": 1, "description": "How many to show, up to 50. Defaults to 8." }, "query": { "type": "string", "description": "What the buyer is buying, in the user's words, e.g. \"grounds maintenance\", \"cyber security consultancy\", \"school catering\". Leave it out to list every tender the other filters allow." }, "stage": { "enum": [ "open", "upcoming", "any" ], "type": "string", "description": "\"open\" for tenders taking bids now, \"upcoming\" for pipeline and preliminary market engagement notices about future tenders." }, "cursor": { "type": "string", "maxLength": 400, "description": "The nextCursor from an earlier answer, with the same search, for its next page." }, "detail": { "enum": [ "short", "full" ], "type": "string", "description": "\"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": { "enum": [ "North East", "North West", "Yorkshire and the Humber", "East Midlands", "West Midlands", "East of England", "London", "South East", "South West", "Scotland", "Wales", "Northern Ireland", "British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Nova Scotia", "Prince Edward Island", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Puerto Rico", "Guam", "U.S. Virgin Islands", "American Samoa", "Northern Mariana Islands", "Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen", "Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne", "Centre-Val de Loire", "Corse", "Grand Est", "Hauts-de-France", "Île-de-France", "Normandie", "Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur", "Guadeloupe", "Martinique", "Guyane", "La Réunion", "Mayotte", "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "type": "string", "description": "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": { "type": "string", "description": "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." }, "procedure": { "enum": [ "open_procedure", "competitive_flexible", "framework", "dynamic_market", "any" ], "type": "string", "description": "How the buyer is buying, e.g. \"framework\" for framework agreements, \"dynamic_market\" for dynamic markets suppliers can join at any time." }, "buyer_type": { "enum": [ "central_government", "local_authority", "nhs", "education", "housing", "emergency_services", "devolved_government", "defence", "utilities", "any" ], "type": "string", "description": "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": { "enum": [ "sme", "vcse", "any" ], "type": "string", "description": "Only notices the buyer marked as suitable for small and medium-sized enterprises or for voluntary, community and social enterprises." }, "contract_type": { "enum": [ "goods", "services", "works", "any" ], "type": "string", "description": "What is being bought, e.g. \"works\" for construction and refurbishment." }, "max_value_gbp": { "type": "integer", "maximum": 9007199254740991, "description": "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\".", "exclusiveMinimum": 0 }, "min_value_gbp": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "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": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}", "description": "Only tenders published on or after this date, e.g. \"2026-10-01\"." }, "closing_within_days": { "type": "integer", "maximum": 9007199254740991, "description": "Only tenders closing within this many days, e.g. 30 for \"this month\".", "exclusiveMinimum": 0 } } }arguments 282 linesget_tender_details unknown never probed
Use this when the user asks about one specific tender, framework or standing offer, by notice ID, buyer reference or from earlier results: the deadline, which e-tendering portal to submit through, lots, estimated value, conditions of participation, award criteria and what the buyer actually wants, in plain English. Do not use to find new tenders (use search_tenders) or to look up who won a past contract (use search_contract_awards).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference" ], "properties": { "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 14 linessearch_contract_awards unknown never probed
Use this when the user wants to know who won a public contract in the UK, Canada, the United States, Germany, France and the rest of the EU, what a buyer paid last time, or which contracts end soon and are likely to be re-tendered. Searches contract award notices published on Find a Tender, Contracts Finder and Public Contracts Scotland for the UK, CanadaBuys for the Government of Canada, SAM.gov for the US federal government, oeffentlichevergabe.de for Germany, BOAMP for France, and TED for the rest of the EU, in the user's own countries unless they name one. Filters by buyer, supplier, classification code, award date and end date. Answers say how many awards match in all; pass nextCursor back as cursor for the next page. Do not use for opportunities open for bids now (use search_tenders) or for a public body's total spending with its suppliers.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "buyer": { "type": "string", "description": "Public body that awarded the contract, e.g. \"Leeds City Council\"." }, "codes": { "type": "array", "items": { "type": "string", "maxLength": 20, "minLength": 2 }, "maxItems": 20, "description": "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": { "type": "integer", "maximum": 50, "minimum": 1, "description": "How many to show, up to 50. Defaults to 10." }, "query": { "type": "string", "description": "What the contract covers, e.g. \"IT support\" or \"school cleaning\"." }, "cursor": { "type": "string", "maxLength": 400, "description": "The nextCursor from an earlier answer, with the same search, for its next page." }, "detail": { "enum": [ "short", "full" ], "type": "string", "description": "\"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": { "enum": [ "North East", "North West", "Yorkshire and the Humber", "East Midlands", "West Midlands", "East of England", "London", "South East", "South West", "Scotland", "Wales", "Northern Ireland", "British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Nova Scotia", "Prince Edward Island", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Puerto Rico", "Guam", "U.S. Virgin Islands", "American Samoa", "Northern Mariana Islands", "Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen", "Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne", "Centre-Val de Loire", "Corse", "Grand Est", "Hauts-de-France", "Île-de-France", "Normandie", "Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur", "Guadeloupe", "Martinique", "Guyane", "La Réunion", "Mayotte", "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "type": "string", "description": "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": { "type": "string", "description": "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." }, "supplier": { "type": "string", "description": "Company that holds or won the contract, e.g. a competitor's name." }, "awarded_since": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}", "description": "Only contracts awarded on or after this date, e.g. \"2026-01-01\"." }, "ending_within_months": { "type": "integer", "maximum": 9007199254740991, "description": "Only contracts ending within this many months, e.g. 12 for \"coming up for renewal next year\".", "exclusiveMinimum": 0 } } }arguments 208 linesreview_bid_draft unknown never probed
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).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "draft", "section" ], "properties": { "draft": { "type": "string", "minLength": 20, "description": "The draft answer text." }, "section": { "enum": [ "quality_answer", "social_value", "method_statement", "case_study", "company_overview", "cover_letter", "clarification_question" ], "type": "string", "description": "What the draft is, e.g. \"method_statement\"." }, "question": { "type": "string", "description": "The buyer's question, word for word, so Tenda can check every part is answered." }, "word_limit": { "type": "integer", "maximum": 9007199254740991, "description": "The buyer's word limit for this answer.", "exclusiveMinimum": 0 }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 43 lineswatch_tenders unknown never probed
Use this when the user wants to be alerted about new public tenders or upcoming pipeline notices that match a search, or about changes to one tender they follow, such as a clarification, a new deadline or a contract award. Creates a saved watch, from the user's own countries unless they name another: what matches shows the next time the user asks Tenda what's new (get_tender_updates). Needs a Tenda account. Do not use for reminders unrelated to tenders.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "query": { "type": "string", "description": "What to watch for, e.g. \"office cleaning\"." }, "region": { "enum": [ "North East", "North West", "Yorkshire and the Humber", "East Midlands", "West Midlands", "East of England", "London", "South East", "South West", "Scotland", "Wales", "Northern Ireland", "British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Nova Scotia", "Prince Edward Island", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Puerto Rico", "Guam", "U.S. Virgin Islands", "American Samoa", "Northern Mariana Islands", "Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen", "Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne", "Centre-Val de Loire", "Corse", "Grand Est", "Hauts-de-France", "Île-de-France", "Normandie", "Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur", "Guadeloupe", "Martinique", "Guyane", "La Réunion", "Mayotte", "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "type": "string", "description": "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": { "type": "string", "description": "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." }, "buyer_type": { "enum": [ "central_government", "local_authority", "nhs", "education", "housing", "emergency_services", "devolved_government", "defence", "utilities", "any" ], "type": "string", "description": "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": { "type": "boolean", "description": "Also alert on pipeline and preliminary market engagement notices, to hear about work before it is tendered." }, "tender_reference": { "type": "string", "minLength": 3, "description": "Watch one tender for clarifications, deadline changes and the award instead of a search, e.g. \"012345-2026\"." } } }arguments 185 linesget_tender_updates unknown never probed
Use this when the user asks what is new from their Tenda watches: new matching tenders, pipeline notices, deadline changes, clarifications, cancellations and awards since they last checked. Needs a Tenda account. Do not use to search for tenders (use search_tenders).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesadd_tender_documents unknown never probed
Use this when the user pastes or uploads text from a tender's documents (invitation to tender, selection questionnaire, specification or instructions to bidders) so Tenda can read the requirements the notice leaves out: minimum turnover, insurance levels, certifications, experience, references, site visits and TUPE. When the user is signed in, their later fit and readiness checks for that tender include them; signed out, Tenda keeps nothing and they count for this answer only. Pass the document text, not a file link. Do not use for documents unrelated to a tender.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference", "text" ], "properties": { "text": { "type": "string", "maxLength": 200000, "minLength": 40, "description": "The document text the user shared." }, "title": { "type": "string", "description": "The document name, e.g. \"Invitation to Tender Part 2\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 25 linessave_company_profile unknown never probed
Use this when the user wants Tenda to remember their business for future searches, fit checks, readiness checks and drafting, or asks to set Tenda up from what you already know about their company. Fill in only facts about the company that the user has told you: what it does, its Companies House number (or a US company's UEI), size, staff, turnover, where it works, certifications and insurance. Leave out anything you are unsure of and any personal details about people. Show the user what you will save and let them confirm or correct it first. Saves to their Tenda workspace, which their team shares, and fills in more from Companies House (SAM.gov for a US company) and the public contracts the company has won. Needs a Tenda account. Do not use for personal profiles or CVs.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "summary" ], "properties": { "staff": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "How many people work for the company." }, "regions": { "type": "array", "items": { "enum": [ "North East", "North West", "Yorkshire and the Humber", "East Midlands", "West Midlands", "East of England", "London", "South East", "South West", "Scotland", "Wales", "Northern Ireland", "British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Nova Scotia", "Prince Edward Island", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Puerto Rico", "Guam", "U.S. Virgin Islands", "American Samoa", "Northern Mariana Islands", "Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen", "Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne", "Centre-Val de Loire", "Corse", "Grand Est", "Hauts-de-France", "Île-de-France", "Normandie", "Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur", "Guadeloupe", "Martinique", "Guyane", "La Réunion", "Mayotte", "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "type": "string", "description": "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." }, "description": "Where the company works, e.g. [\"North West\", \"Yorkshire and the Humber\"] or [\"Ontario\", \"Quebec\"]." }, "summary": { "type": "string", "maxLength": 4000, "minLength": 10, "description": "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.\"" }, "website": { "type": "string", "description": "The company's website, e.g. \"northbridge.co.uk\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "nationwide": { "type": "boolean", "description": "True when the company works anywhere in its country." }, "buyer_types": { "type": "array", "items": { "enum": [ "central_government", "local_authority", "nhs", "education", "housing", "emergency_services", "devolved_government", "defence", "utilities" ], "type": "string" }, "description": "Kinds of public buyer the company has worked for, e.g. [\"local_authority\", \"education\"]." }, "company_name": { "type": "string", "description": "The company's name, e.g. \"Northbridge Services Ltd\"." }, "turnover_gbp": { "type": "number", "minimum": 0, "description": "Annual turnover in the company's home currency (pounds for a UK company, Canadian dollars for a Canadian one), e.g. 2400000." }, "business_size": { "enum": [ "micro", "small", "medium", "large", "vcse" ], "type": "string", "description": "The company's size, e.g. \"small\" for under 50 staff. Use \"vcse\" for charities and social enterprises." }, "certifications": { "type": "array", "items": { "type": "string" }, "description": "Certifications and accreditations it holds, e.g. [\"iso_9001\", \"cyber_essentials\", \"chas\"]. Add an expiry as \"cyber_essentials:2026-11-30\"." }, "company_number": { "type": "string", "description": "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." }, "largest_contract_gbp": { "type": "number", "minimum": 0, "description": "The largest contract, a year, the company would take on, in its home currency." }, "public_liability_gbp": { "type": "number", "minimum": 0, "description": "Public liability (in Canada, commercial general liability) cover in the company's home currency, e.g. 5000000." }, "employers_liability_gbp": { "type": "number", "minimum": 0, "description": "Employer's liability cover in the company's home currency, e.g. 10000000." }, "professional_indemnity_gbp": { "type": "number", "minimum": 0, "description": "Professional indemnity cover in the company's home currency." } } }arguments 252 linesget_pipeline_status unknown never probed
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 Tenda 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 Tenda account and workspace. Do not use to find new tenders (use search_tenders) or for alerts from saved watches (use get_tender_updates).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." } } }arguments 10 linesadd_to_pipeline unknown never probed
Use this when the user wants to save a tender to their team's Tenda 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 Tenda 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).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference" ], "properties": { "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "more_references": { "type": "array", "items": { "type": "string", "minLength": 3, "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." }, "maxItems": 4, "description": "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": { "type": "string", "minLength": 3, "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." } } }arguments 28 linesrecord_portal_account unknown never probed
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 Tenda 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 Tenda stops asking about that portal. Give the tender's reference, or the portal's name or the key Tenda gave (portal.key). Needs a Tenda account and workspace. Do not use to sign in to a portal: Tenda never handles portal passwords.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "has_account" ], "properties": { "portal": { "type": "string", "maxLength": 200, "description": "The portal, e.g. \"EU-Supply\" or \"Public Contracts Scotland\", or the key Tenda gave for it, e.g. \"atamis:health-family.force.com\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "has_account": { "type": "boolean", "description": "Whether the company has an account on the portal." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 27 linesrecord_bid_call unknown never probed
Use this when the user's team has decided whether to bid on a tender: records the bid or no-bid call with the team's answers to Tenda's five questions (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; value: is it worth winning) and the reason. A call to bid moves the tender to Bidding and plans a six-step bid sprint back from the deadline. Adds the tender to the pipeline first if it isn't there. Confirm the decision with the user before calling. Needs a Tenda account and a role that makes bid calls. Do not use to judge fit before the team decides (use assess_tender_fit).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference", "decision" ], "properties": { "reason": { "type": "string", "maxLength": 2000, "description": "Why, in the user's words, for the team to read later." }, "answers": { "type": "object", "properties": { "fit": { "enum": [ "yes", "unsure", "no" ], "type": "string" }, "value": { "enum": [ "yes", "unsure", "no" ], "type": "string" }, "capacity": { "enum": [ "yes", "unsure", "no" ], "type": "string" }, "competition": { "enum": [ "yes", "unsure", "no" ], "type": "string" }, "eligibility": { "enum": [ "yes", "unsure", "no" ], "type": "string" } }, "description": "The team's answer to each question it has answered: \"yes\", \"unsure\" or \"no\". Leave out questions the user didn't answer." }, "decision": { "enum": [ "bid", "no_bid" ], "type": "string", "description": "\"bid\" when the team will bid, \"no_bid\" when it will not." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 78 linesupdate_bid_sprint unknown never probed
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 Tenda 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).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference", "step" ], "properties": { "done": { "type": "boolean", "description": "false to reopen a step ticked off by mistake. Defaults to true." }, "step": { "enum": [ "decode", "assign", "draft", "review", "checks", "submit" ], "type": "string", "description": "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": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 35 linesmove_in_pipeline unknown never probed
Use this when the user wants to change where a tender stands in their team's Tenda 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 Tenda account and workspace. Do not use to take a tender off the pipeline, which is done in the Tenda dashboard.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference", "stage" ], "properties": { "stage": { "enum": [ "watching", "qualifying", "bidding", "submitted", "won", "lost", "no_bid" ], "type": "string", "description": "Where the tender goes: \"watching\", \"qualifying\", \"bidding\", \"submitted\", \"won\", \"lost\" or \"no_bid\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 32 lineschoose_alerts unknown never probed
Use this when the user wants to change which of their team's Slack and Teams channels get Tenda's alerts, or asks where they go: "only send alerts to Teams", "stop the morning summary in Slack", "send new tenders to #bids too". The alerts are new tenders that fit the company (new_tenders), changes to tenders in the pipeline (changes), the weekday morning summary (morning_summary) and bid work nobody has yet (bid_work). Pick the channels by app, by a channel's name, or neither for every channel. send turns alerts on there and stop turns them off; with only set to true, every other channel also stops getting what was sent here. Change only what the user asked for: an app or channel they didn't mention keeps its alerts unless they said "only". With neither send nor stop, it changes nothing and says where alerts go now. A channel with no alerts stays connected, so the team can still ask Tenda there. Owners and admins can change alerts. Needs a Tenda account and workspace. `Do not use to connect or disconnect a channel, which is done in the Tenda dashboard (Settings, then Connections), or for alerts by email (use watch_tenders).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "app": { "enum": [ "slack", "teams" ], "type": "string", "description": "\"slack\" or \"teams\" for that app's channels. Leave it out for every app, or when naming one channel." }, "only": { "type": "boolean", "description": "true when the user wants what's sent here to go only here: every other channel stops getting it." }, "send": { "type": "array", "items": { "enum": [ "new_tenders", "changes", "morning_summary", "bid_work", "all" ], "type": "string" }, "description": "Alerts to turn on in those channels, e.g. [\"new_tenders\"], or [\"all\"]." }, "stop": { "type": "array", "items": { "enum": [ "new_tenders", "changes", "morning_summary", "bid_work", "all" ], "type": "string" }, "description": "Alerts to turn off in those channels, e.g. [\"morning_summary\"], or [\"all\"] for none." }, "channel": { "type": "string", "maxLength": 200, "description": "One channel, by its name: e.g. \"bids\" or \"#bids\" in Slack, or \"General\" in Teams." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." } } }arguments 55 linesstart_bid_draft unknown never probed
Use this when the user wants Tenda to write a whole bid for a tender for their team, e.g. "draft our bid for the Leeds cleaning tender". Tenda reads the buyer's questions, asks the team a few questions whose answers make the bid specific, then drafts every answer from the company's evidence in the background, marks each like an evaluator, checks the whole bid and revises its weakest answers. The team reads, edits and downloads it in Word in Tenda. Pass the buyer's questions, or the invitation to tender's text, in questions_text when the user has shared them, including the text of files they attached; otherwise Tenda reads documents the buyer published with the notice itself, or asks for them. Relay Tenda's questions to the user as they are. A whole bid uses one of the workspace's full bids for the month, so first call it without confirmed: Tenda starts nothing and says how many are left. Tell the user, and offer to write the bid here instead, answer by answer from draft_bid_response, which uses none. Call it again with confirmed set to true only once they choose Tenda's drafting. Needs a Tenda account and workspace. Do not use to write a single answer here (use draft_bid_response) or to check the user's own draft (use review_bid_draft).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tender_reference" ], "properties": { "confirmed": { "type": "boolean", "description": "true once the user, told it uses one of this month's full bids, chose to have Tenda draft it. Leave it out the first time." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "questions_text": { "type": "string", "maxLength": 200000, "description": "The buyer's questions, or the invitation to tender's text, as the user shared it." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 27 linesrewrite_bid_answer unknown never probed
Use this when the user wants Tenda 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". Tenda 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 Tenda account. Do not use before the draft is ready.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "question", "instruction" ], "properties": { "draft_id": { "type": "string", "description": "The draft's ID, from start_bid_draft. Or give the tender's reference instead, or neither for the workspace's latest draft." }, "question": { "type": "string", "description": "The answer to rewrite, by the buyer's number, e.g. \"Q3\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." }, "instruction": { "type": "string", "maxLength": 2000, "minLength": 3, "description": "What to change, in the user's words." }, "tender_reference": { "type": "string", "minLength": 3, "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." } } }arguments 33 linesadd_winning_bid unknown never probed
Use this when the user shares a bid their company won, for Tenda to learn from, e.g. after Tenda offers to learn from winning bids. Tenda 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 Tenda account and workspace. Do not use for the buyer's questions for a new bid (use start_bid_draft or continue_bid_draft).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "text" ], "properties": { "text": { "type": "string", "maxLength": 150000, "minLength": 200, "description": "The winning bid's text: its answers, as the user shared them." }, "title": { "type": "string", "maxLength": 120, "description": "What it was, e.g. \"Glasgow schools cleaning, 2024\"." }, "workspace": { "type": "string", "description": "The Tenda workspace to use, by name, when the user is in more than one, e.g. \"Northbridge Services\"." } } }arguments 24 linesopen_tenda unknown never probed
Opens Tenda'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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "path": { "type": "string", "maxLength": 400 }, "workspace": { "type": "string", "maxLength": 200 } } }arguments 14 linesopen_bid_panel unknown never probed
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "path": { "type": "string", "maxLength": 400 }, "workspace": { "type": "string", "maxLength": 200 } } }arguments 14 linestenda_changes unknown never probed
Says when the team's work in a workspace last changed, for Tenda's app to keep its page up to date.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "workspace" ], "properties": { "workspace": { "type": "string", "maxLength": 200 }, "tender_reference": { "type": "string", "maxLength": 200 } } }arguments 17 linessearch_mentions unknown never probed
Finds the team's tenders and people by name, for @ mentions in ChatGPT.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "query" ], "properties": { "query": { "type": "string", "maxLength": 200 } } }arguments 13 linesset_up_tenda unknown never probed
Use this when the user wants to set Tenda up for their company, or has just added Tenda 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 Tenda account. Do not use to change one fact the user names, such as a certification (use save_company_profile).
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "workspace": { "type": "string", "maxLength": 200, "description": "The Tenda workspace to set up, by name, when the user is in more than one, e.g. \"Northbridge Services\"." } } }arguments 11 linesfind_company unknown never probed
Finds a UK company on Companies House by name, for Tenda's setup.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "name" ], "properties": { "name": { "type": "string", "maxLength": 160, "minLength": 1 } } }arguments 14 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id253e47ff8d2a8cff.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/253e47ff8d2a8cff/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/253e47ff8d2a8cff?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 2
- ok
- 0
- failed
- 2
- success rate
- 0%
- median latency
- 94ms
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
2 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.