Skip to content

Tenda

by eshmere.ai · remote · no sign-in to list tools · v0.1.0 · published by ai.eshmere

Public tenders and contract awards in the UK, US, Canada and EU, and help preparing bids.

Deletes · 14Changes · 12

36 tools: 14 can delete or cancel things, 12 change things and 10 only read.

Scanned Oct 21, 2026

4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http tenda https://mcp.tenda.eshmere.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

4 warn
  • The server marks "get_tender_updates" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_tender_updates" says "get": a word for reading.

    What this check looks for
  • The server marks "open_tenda" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "open_tenda" says "open": a word for a change.

    What this check looks for
  • The server marks "open_bid_panel" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "open_bid_panel" says "open": a word for a change.

    What this check looks for
  • The server marks "set_up_tenda" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "set_up_tenda" says "set": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

36 tools

Deletes or cancels 14Claude Code: deny
  • add_tender_documentsUse this when the user shares text from a tender's documents, or wants Tenda to read the files the buyer published with the notice (read_published, signed in).No findings

    Why it is in this group

    • The name "add_tender_documents" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user shares text from a tender's documents, or wants Tenda 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 Tenda'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}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • assign_taskUse this when the user gives work on a team bid to someone, or takes it on: "give the Bristol bid call to Sam".No findings

    Why it is in this group

    • The name "assign_task" says "assign": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 Tenda 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"}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • choose_alertsUse this when the user wants to change which Slack and Teams channels get Tenda's alerts, or asks where they go: "stop the morning summary in Slack".No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user wants to change which Slack and Teams channels get Tenda'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 Tenda account and workspace. Not for connecting a channel (Tenda dashboard, Settings, Connections) or for email alerts (use watch_tenders). Example: {"app":"slack","stop":["morning_summary"]}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • continue_bid_draftUse 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…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
    • idempotentHint: false
  • finish_setupSaves what Tenda's setup was told, making the workspace for someone without one, and finds the open tenders that fit.No findings

    Why it is in this group

    • The description's first verb is "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Saves what Tenda's setup was told, making the workspace for someone without one, and finds the open tenders that fit.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • move_in_pipelineUse 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 Los…No findings

    Why it is in this group

    • The name "move_in_pipeline" says "move": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • record_bid_callUse this when the user's team has decided whether to bid: records the bid or no-bid call, the team's answers to Tenda's five questions and the reason.No findings

    Why it is in this group

    • The name "record_bid_call" says "call": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user's team has decided whether to bid: records the bid or no-bid call, the team's answers to Tenda'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 Tenda 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"}}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: false
  • record_portal_accountUse 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 …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • rewrite_bid_answerUse this when the user wants Tenda to rewrite one answer in a bid it drafted, e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: false
  • save_company_profileUse this when the user wants Tenda to remember their business for searches, fit and readiness checks and drafting.No findings

    Why it is in this group

    • The name "save_company_profile" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user wants Tenda 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 Tenda account. Not for personal profiles or CVs. Example: {"summary":"Office and school cleaning in Greater Manchester","company_number":"08123456"}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
    • idempotentHint: true
  • start_bid_draftUse this when the user wants Tenda 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.No findings

    Why it is in this group

    • The name "start_bid_draft" says "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user wants Tenda 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 Tenda'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 Tenda. notify says where to hear when it's ready. Needs a Tenda account and workspace. Example: {"tender_reference":"012345-2026"}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
    • idempotentHint: false
  • stop_watchUse this when the user wants to stop one of their Tenda watches, by the watchId that watch_tenders or list_watches gave.No findings

    Why it is in this group

    • The name "stop_watch" says "stop": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user wants to stop one of their Tenda 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 Tenda account. Example: {"watch_id":"wch_abc123"}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • update_bid_sprintUse 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 o…No findings

    Why it is in this group

    • The name "update_bid_sprint" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
    • idempotentHint: true
  • update_tenda_settingsUse 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 countr…No findings

    Why it is in this group

    • The name "update_tenda_settings" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
Changes things 12Claude Code: ask
  • add_to_pipelineUse this when the user wants to save a tender to their team's Tenda pipeline to consider bidding, e.g.No findings

    Why it is in this group

    • The name "add_to_pipeline" says "add": a word for a change.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • add_winning_bidUse this when the user shares a bid their company won, for Tenda to learn from, e.g.No findings

    Why it is in this group

    • The name "add_winning_bid" says "add": a word for a change.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: false
  • assess_tender_fitUse this when the user asks whether their business should bid for a public contract, or which open tenders suit them best.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • check_bid_readinessUse 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 do…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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"]}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • draft_bid_responseUse 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, c…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_tender_updatesUse this when the user asks what's new from their Tenda watches: new matching tenders, pipeline notices, deadline changes, clarifications, cancellations and awards.1 finding

    Why it is in this group

    • The name "get_tender_updates" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_tender_updates" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_tender_updates" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Use this when the user asks what's new from their Tenda 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 Tenda account. Not for searching (use search_tenders). Example: {"since":"eyJzZXEiOjQyfQ"}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: false
  • open_bid_panelOpens 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.1 finding

    Why it is in this group

    • The name "open_bid_panel" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "open_bid_panel" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "open_bid_panel" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • open_tendaOpens Tenda's own app from ChatGPT's sidebar: Today, the team's board, Find and each tender, with the bid call.1 finding

    Why it is in this group

    • The name "open_tenda" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "open_tenda" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "open_tenda" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • review_bid_draftUse 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, s…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • set_up_tendaUse 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…1 finding

    Why it is in this group

    • The name "set_up_tenda" says "set": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "set_up_tenda" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "set_up_tenda" says "set": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • tenda_changesSays when the team's work in a workspace last changed, for Tenda's app to keep its page up to date.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Says when the team's work in a workspace last changed, for Tenda's app to keep its page up to date.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • watch_tendersUse 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).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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 Tenda account. Not for seeing the user's watches (use list_watches) or stopping one (use stop_watch). Example: {"query":"office cleaning","include_upcoming":true}

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: false
    • idempotentHint: false
Only reads 10Claude Code: allow
  • find_companyFinds a UK company on Companies House by name, for Tenda's setup.No findings

    Why it is in this group

    • The name "find_company" says "find": a word for reading.
    Description, as the server wrote it
    Finds a UK company on Companies House by name, for Tenda's setup.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
  • get_bid_draftUse this when the user asks how a bid Tenda is drafting is going, or wants to read it: its progress in steps and answers written, each question with its word count and Tenda's mark…No findings

    Why it is in this group

    • The name "get_bid_draft" says "get": a word for reading.
    Description, as the server wrote it
    Use this when the user asks how a bid Tenda is drafting is going, or wants to read it: its progress in steps and answers written, 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. Once it's ready, it gives a Word file link that works for an hour, and a link to the draft in Tenda. Needs a Tenda account. Example: {"tender_reference":"012345-2026"}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_coverageUse this to know where Tenda looks: the countries and sources it reads, how many open, upcoming and awarded notices each holds, and when each was last read.No findings

    Why it is in this group

    • The name "get_coverage" says "get": a word for reading.
    Description, as the server wrote it
    Use this to know where Tenda 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 Tenda reads, or to say how fresh results are. Not for searching (use search_tenders). Example: {"country":"Canada"}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_pipeline_statusUse 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…No findings

    Why it is in this group

    • The name "get_pipeline_status" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_tenda_settingsUse 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 o…No findings

    Why it is in this group

    • The name "get_tenda_settings" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_tender_detailsUse 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, …No findings

    Why it is in this group

    • The name "get_tender_details" says "get": a word for reading.
    Description, as the server wrote it
    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"}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • list_watchesUse this when the user asks which Tenda 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 T…No findings

    Why it is in this group

    • The name "list_watches" says "list": a word for reading.
    Description, as the server wrote it
    Use this when the user asks which Tenda 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 Tenda account. Do not use for what the watches found (use get_tender_updates). Example: {}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • search_contract_awardsUse 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 an…No findings

    Why it is in this group

    • The name "search_contract_awards" says "search": a word for reading.
    Description, as the server wrote it
    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"}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • search_mentionsFinds the team's tenders and people by name, for @ mentions in ChatGPT.No findings

    Why it is in this group

    • The name "search_mentions" says "search": a word for reading.
    Description, as the server wrote it
    Finds the team's tenders and people by name, for @ mentions in ChatGPT.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • search_tendersUse 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…No findings

    Why it is in this group

    • The name "search_tenders" says "search": a word for reading.
    Description, as the server wrote it
    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}

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http tenda https://mcp.tenda.eshmere.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__tenda__search_tenders",
      "mcp__tenda__get_tender_details",
      "mcp__tenda__search_contract_awards",
      "mcp__tenda__list_watches",
      "mcp__tenda__get_pipeline_status",
      "mcp__tenda__get_bid_draft",
      "mcp__tenda__get_coverage",
      "mcp__tenda__search_mentions",
      "mcp__tenda__get_tenda_settings",
      "mcp__tenda__find_company"
    ],
    "ask": [
      "mcp__tenda__assess_tender_fit",
      "mcp__tenda__check_bid_readiness",
      "mcp__tenda__draft_bid_response",
      "mcp__tenda__review_bid_draft",
      "mcp__tenda__watch_tenders",
      "mcp__tenda__get_tender_updates",
      "mcp__tenda__add_to_pipeline",
      "mcp__tenda__add_winning_bid",
      "mcp__tenda__open_tenda",
      "mcp__tenda__open_bid_panel",
      "mcp__tenda__tenda_changes",
      "mcp__tenda__set_up_tenda"
    ],
    "deny": [
      "mcp__tenda__stop_watch",
      "mcp__tenda__add_tender_documents",
      "mcp__tenda__save_company_profile",
      "mcp__tenda__record_portal_account",
      "mcp__tenda__record_bid_call",
      "mcp__tenda__update_bid_sprint",
      "mcp__tenda__assign_task",
      "mcp__tenda__move_in_pipeline",
      "mcp__tenda__choose_alerts",
      "mcp__tenda__start_bid_draft",
      "mcp__tenda__continue_bid_draft",
      "mcp__tenda__rewrite_bid_answer",
      "mcp__tenda__update_tenda_settings",
      "mcp__tenda__finish_setup"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tenda. Review it before you use it.