# Bridget MCP: instructions for an agent Version: 2026-10-30 Server: https://api.bridgetownresearch.com/kratos-api/mcp You are connected to Bridget, an AI research agent in Teamroom, through 15 tools named bridget_*. Use them whenever your user mentions Bridget or Teamroom, or asks for research work in one of their Teamroom projects. Bridget saves everything it produces to the user's Teamroom project. ## Core rules 1. Refer to projects ("teamrooms") and conversations by name. Never ask your user for an id. 2. Pass the project name on every bridget_send_message call, including follow-ups. 3. Keep using the friendly conversation name that a tool returns, until your user switches. 4. Never send a request twice. While Bridget is still working, call bridget_await_response. 5. Share documents through an upload link (see Documents), not by pasting their contents. 6. Show Bridget's questions to your user and relay their answers. Don't invent answers. 7. Give links from Bridget (upload links, download links) to your user exactly as returned. ## Projects - If the project is unknown or ambiguous, call bridget_list_teamrooms and choose with your user. - To see what Bridget already knows about a project, call bridget_get_teamroom_context (type: context, glossary or all). - Create a project with bridget_create_teamroom only when your user asks for a new project. - If your user gave only a name, pass only the name. Bridget asks for the rest. - Never infer the type or stage from the name. Set userAskedBridgetToDecide only when your user explicitly asked Bridget to choose. - If your user has documents for the new project, set hasSupportingDocuments. Then call bridget_request_documents with intent "create_teamroom", wait for the upload, and call bridget_create_teamroom again with the same fields plus uploadTicketId. ## Sending work - Use bridget_send_message for every request. It starts a new conversation when you omit conversation, and continues the named one when you pass it. - Don't call bridget_start_conversation before a normal message. Use it only when your user explicitly asks for a new, empty conversation. - If your user wants to continue earlier work but gives no exact name, omit conversation and say so in the message. Bridget asks them to pick. - Before asking Bridget for an interview guide or deep research, ask your user whether they have source documents. If they do, get them an upload link first. ## Waiting - bridget_send_message waits about 60 seconds. If the result says Bridget is still working, call bridget_await_response with the same conversation name. Each call waits up to about 45 seconds. - Repeat bridget_await_response until Bridget answers or asks a question. Keep your user informed during long tasks: deep research usually takes about 50 minutes, and recruited interviews take days. - If your client times out or the chat ends, the work continues in Teamroom. Later, call bridget_await_response or bridget_get_transcript for that conversation. - Call bridget_cancel_response only when your user asks to stop. ## Answering Bridget's questions - When a result contains a question, a form or an approval request, show it to your user. - Send their answer with bridget_respond_to_prompt. Set answer to an object keyed by the form field ids in Bridget's question. - If your client renders MCP forms, the user may answer in a form instead. ## Documents 1. Call bridget_request_documents with: - intent "message": the files support one request and stay in that conversation (this is the default) - intent "project": the files become lasting, searchable, citable sources in the project - intent "create_teamroom": the files are for a project being created Also pass teamroom, and a short purpose that is shown on the upload page. 2. Give the returned link to your user exactly as returned. Tell them to open it, sign in and upload. Accepted formats: PDF, Word, PowerPoint, Excel, CSV and images. 3. If the result says it is still waiting, call bridget_await_documents with the ticketId. Repeat while your user uploads. 4. Resume with the tool the result names: - message: bridget_send_message with uploadTicketId - project: bridget_add_project_documents with uploadTicketId - create_teamroom: bridget_create_teamroom with uploadTicketId 5. Upload links are valid for 7 days, and each ticket works once. If a link has expired, request a new one. Don't put file contents into message or background. Uploaded documents are searchable and citable, and pasted text isn't. ## Earlier conversations - To list them, call bridget_list_conversations (teamroom, limit 1–50, default 20). - To resume one, call bridget_continue_conversation with its name. Then call bridget_get_transcript before you answer questions about earlier context or next steps. - After a disconnect, call bridget_get_transcript to catch up. ## Outputs - To get the full content of a note or deliverable Bridget names, call bridget_read_artifact with the artifact name or bridget://artifact link. - Download links for files such as decks are short-lived. Give them to your user straight away. ## Tool reference Each tool lists: For, Input, Output, Example. Inputs are optional unless marked (required). Values in are placeholders. ### Conversation result bridget_send_message, bridget_await_response and bridget_respond_to_prompt all return the same result. It starts with "status:" and the conversation's friendly name. - completed: Bridget finished. Includes the answer, citations and suggested next steps. Relay the answer to your user. - running: still working. Includes recent progress. Call bridget_await_response. - suspended: a long background task, such as a deep research run, is in progress. Call bridget_await_response later. - input_needed: Bridget has a question. Includes a summary, then each field with its id and options. Ask your user, then call bridget_respond_to_prompt. - failed: includes the error. Tell your user. - cancelled: the response was stopped. Any notes or files appear under "Artifacts", each with a name for bridget_read_artifact and, for files, a download link with its expiry. ### bridget_list_teamrooms - For: listing the projects your user can access, and resolving a missing or ambiguous project name. - Input: none. - Output: the project names, or a note that there are none. - Example: "Which Teamroom projects can I use?" -> {} ### bridget_create_teamroom - For: creating a project, only when your user asks for one. - Input: name (string, at least 3 characters), type, otherType (required when type is Others), stage, background, hasSupportingDocuments (boolean), uploadTicketId, userAskedBridgetToDecide (boolean; true only if your user asked Bridget to choose). - Output: Bridget's question with options when details are missing. Otherwise, a confirmation that the project was created, plus the files being added if a ticket was passed. - Example: "Create a new Teamroom project called ." -> {"name": ""}. Then relay Bridget's questions about type and stage. ### bridget_get_teamroom_context - For: reading what Bridget has saved about a project. - Input: teamroom; type (context, glossary or all; default all). - Output: the saved context and glossary text, or a note that nothing is saved. - Example: "What does Bridget know about ?" -> {"teamroom": ""} ### bridget_send_message - For: every request to Bridget. It starts a conversation when you omit conversation, and continues it when you pass one. It waits about 60 seconds. - Input: message (required); teamroom (pass on every call); conversation; uploadTicketId (each ticket works once). - Output: a conversation result. - Example: "Ask Bridget to draft an interview guide for CFOs." -> {"teamroom": "", "message": "Draft an interview guide for CFOs on procurement pain points."} ### bridget_start_conversation - For: opening a new, empty conversation, only when your user explicitly asks. Don't call it before a normal message. - Input: teamroom; conversation (a friendly name). - Output: the new conversation's friendly name. Keep using it. - Example: "Start a new Bridget chat called market sizing chat." -> {"teamroom": "", "conversation": "market sizing chat"} ### bridget_list_conversations - For: finding earlier conversations in a project. - Input: teamroom; limit (1–50, default 20). - Output: the conversations by friendly name, or a note that there are none. - Example: "What Bridget chats do I have in ?" -> {"teamroom": ""} ### bridget_continue_conversation - For: resuming an earlier conversation. Call bridget_get_transcript next before you answer questions about it. - Input: teamroom; conversation. - Output: a confirmation naming the active conversation. - Example: "Continue the market sizing chat." -> {"teamroom": "", "conversation": "market sizing chat"} ### bridget_get_transcript - For: catching up on a conversation after reconnecting or resuming it. - Input: conversation (omit if only one is known); limit (default 100). - Output: the messages in order, as USER, BRIDGET and ARTIFACT entries, with artifact links. - Example: "What did Bridget conclude last time?" -> {"conversation": "market sizing chat"} ### bridget_await_response - For: waiting while Bridget works. Each call waits up to about 45 seconds. Repeat it until the status changes. - Input: conversation (omit if only one is known). - Output: a conversation result. - Example: a send came back running -> {"conversation": "market sizing chat"} ### bridget_respond_to_prompt - For: sending your user's answer to Bridget's question. - Input: answer (required; an object keyed by the field ids in Bridget's question); conversation; answeredBy. - Output: a conversation result as Bridget continues. - Example: your user approves a research plan -> {"conversation": "market sizing chat", "answer": {"": ""}} ### bridget_cancel_response - For: stopping Bridget's current response, only when your user asks. - Input: conversation (omit if only one is known). - Output: a confirmation that the cancel was requested, or a note that nothing was running. - Example: "Stop, wrong market." -> {"conversation": "market sizing chat"} ### bridget_request_documents - For: getting your user a secure upload link. - Input: intent (message = one request, the default; project = lasting project sources; create_teamroom = a new project); teamroom; purpose (shown on the upload page). - Output: the upload link, valid for 7 days, and a ticket id. If the upload finishes quickly, the uploaded files and the tool to resume with. - Example: "I have reports to add to ." -> {"intent": "project", "teamroom": "", "purpose": "Market reports for the project"} ### bridget_await_documents - For: waiting while your user uploads. - Input: ticketId (required). - Output: the uploaded files and the next tool to call once done. Until then, still waiting, with any files uploaded so far. - Example: {"ticketId": ""} ### bridget_add_project_documents - For: adding uploaded files to the project as searchable, citable sources. - Input: uploadTicketId (required); teamroom (not needed if the link was made for a specific project). - Output: how many files were added and to which project, with the file names. - Example: {"teamroom": "", "uploadTicketId": ""} ### bridget_read_artifact - For: reading a note or deliverable Bridget produced. - Input: artifact (required; its name or link). - Output: the full content as text. For files without text content, such as decks, a fresh download link. - Example: "Show me the full interview guide." -> {"artifact": ""} You can omit conversation when only one conversation is known. ## Errors - Sign-in required: ask your user to reconnect and sign in with their Teamroom account. - Project not found: call bridget_list_teamrooms. The user may not be a member, in which case a project admin must add them. - "That upload link has expired": call bridget_request_documents again. - Anything else: tell your user, and suggest emailing support@teamroom.ai with the client, project name and time.