Tools reference
Every tool GuruSup Brain gives your connected assistant, its parameters and limits, and which tools change something.
When you connect an assistant to GuruSup Brain, it gets the tools below. You do not call them yourself. Your assistant chooses a tool from what you ask, and it decides the parameter values. Read this page to know what the assistant can do and what it should ask you before doing.
Brain has 13 tools. Three of them change what Brain knows or contact people: add_company_knowledge, skills_publish and request_human_info. Three only record something: report_issue and send_feedback record a note for the GuruSup team, and start_company_memory_activity records a marker that groups the calls for one question. The other seven only read.
For how a question turns into an answer, see Ask questions. To connect an assistant, start with MCP setup.
Read
These tools search Brain's memory. Brain returns evidence. It does not write the answer: your assistant does.
| Tool | What it does | Key parameters and defaults |
|---|---|---|
ask_company_memory | The main tool. Takes a question and returns excerpts from pages of Brain's memory, the facts behind them, and the title and reference of each page. | question is required. See the table below. |
search_company_memory | A lighter search that returns candidate matches with a short snippet, not full evidence. A fallback after ask_company_memory. | query is required. top_k: 5 matches by default, 1 to 20. Also retrieval_mode, activity_id and include_diagnostics. |
retrieve_company_memory | Fetches the full text of pages or passages the assistant picked from a search. | document_ids and chunk_ids, up to 3 in total. max_chars_per_document: 12,000 by default, 1,000 to 50,000. Also activity_id and include_diagnostics. |
Parameters of ask_company_memory
| Parameter | Values | Default |
|---|---|---|
question | The question | Required |
intent | Free text describing what the question is for, up to 240 characters. Longer text is refused, not cut. | Empty |
desired_output | answer, brief, decision_support, context | answer |
response_mode | compact, full | compact |
risk_level | normal, high | normal |
retrieval_mode | auto, vector, graph | auto |
top_k | How many candidate matches Brain looks at, 1 to 20 | 5 |
max_evidence_documents | How many pages to return, 1 to 5 | 3 |
max_chars_per_document | Characters per page, 1,000 to 50,000 | 4,000 |
max_claims | How many facts to return, 1 to 20 | 8 |
activity_id | Groups this call with others for the same question | Created for you |
compact is the normal response. full returns more detail and is meant for debugging only. Leave retrieval_mode on auto unless you are investigating a search.
Limits are clamped, not rejected
If the assistant sends a number outside a range above, Brain moves it to the nearest allowed value and carries on. A top_k of 100 becomes 20, and a max_evidence_documents of 0 becomes 1. The one exception is the number of ids in retrieve_company_memory, which is refused.
Activity IDs
Every answer from ask_company_memory comes with an activity_id. It ties together the calls made for one question. The assistant is told to pass it to search_company_memory, retrieve_company_memory and request_human_info when those calls follow from that answer, so they count as one question. If the assistant leaves it out on ask_company_memory, Brain creates one. start_company_memory_activity creates one by hand, with an optional label, and most assistants never call it.
Diagnostics and id limits
search_company_memory and retrieve_company_memory return a short form by default. With include_diagnostics set to true they return the full backend detail, which is meant for investigating a search. It also raises the id limit for retrieve_company_memory.
| Call | Compact result | Ids allowed |
|---|---|---|
search_company_memory | Per hit: chunk_id, document_id, title, external_url, snippet and whether it is retrievable, plus a count | Not applicable |
retrieve_company_memory | Per page: document_id, title, external_url, content, whether it was cut short, and its chunk_ids | Up to 3 unique ids in total (document_ids plus chunk_ids). Up to 20 with include_diagnostics. |
Blank ids are dropped and repeated ids count once. Sending more than the limit fails with "Provide at most 3 unique document or chunk ids." (or 20 with diagnostics).
Brain only returns what you are allowed to see. If a question cannot be answered from that, the assistant is told to say so instead of guessing.
Write
add_company_knowledge changes what Brain knows. Your assistant is told to use it only when you ask, confirm, or approve the write in your client.
| Tool | What it does | Key parameters and limits |
|---|---|---|
add_company_knowledge | Saves a new fact or note to Brain's memory. | title (up to 240 characters) and content (up to 200,000 characters) are required. content_type is text/plain (default) or text/markdown. Optional: source_url (up to 1,000 characters), external_id (up to 240 characters) and metadata. |
Saving knowledge
The assistant is told to save only durable company facts, and only after you ask, confirm, or approve the write in your client. It should not save chat, drafts, temporary preferences, speculation or sensitive personal data, unless you say it is company memory.
When Brain accepts a note, it returns a fixed confirmation in Spanish: "Listo." and "En unos minutos esta informacion estara disponible." with the saved title. The assistant is told to hide ids and backend details. Saved knowledge does not show up in answers immediately. It can take a few minutes, and it waits if your organization's usage has run out or ingestion is paused. See Plan and usage.
No tool edits or deletes knowledge that is already saved. Knowledge saved through an assistant cannot be edited or removed from the app afterwards.
Skills
| Tool | What it does | Key parameters and limits |
|---|---|---|
skills_get | Loads the full text of one skill the assistant can use. | slug, the skill's identifier from the list init returns. |
skills_publish | Sends a skill you wrote to Brain for review. | slug, name and content are required. See below. |
Parameters of skills_publish
| Parameter | Type and limit |
|---|---|
slug | Lowercase letters, digits and hyphens, starting with a letter or digit, up to 120 characters. Brain lowercases it. |
name | Up to 240 characters |
content | The skill text, up to 200,000 characters |
description | Up to 2,000 characters. The assistant decides whether to load a skill from its description. |
tags | A list of text values |
categories | A list of knowledge categories. If empty, the default category (general) applies. Unknown categories are refused, and so are categories you cannot access. |
version | Up to 80 characters. Defaults to 1.0.0. |
assets, scripts | Lists of objects the skill carries with it |
metadata | An object |
A published skill arrives as pending. Nobody can use it until an admin approves it. If the skill already exists, the current approved version stays in use until the new one is approved. Approving and archiving are not available through MCP. See Skills.
Each skill in the list that init returns has these fields when they are set: slug, name, description, categories, version and status. Only active skills you may use are listed.
People
| Tool | What it does | Key parameters |
|---|---|---|
request_human_info | Asks a colleague set up as a contact for information Brain does not have. Preview first, then dispatch. | question is required. See below. |
get_profile | Returns the account you are signed in with: an opaque profile ID and your email. ChatGPT uses it to label connected accounts. | None |
Parameters of request_human_info
| Parameter | What it does |
|---|---|
question | The question to ask, up to 4,000 characters. Required. |
dispatch | false (default) previews and sends nothing. true sends. |
activity_id | The activity_id of the answer this follows from. Pass the same one in the preview and in the dispatch. Leave it out only for a new question that uses no retrieved context. |
gap_analysis | What is missing from Brain's answer, up to 8,000 characters. Optional. |
allowed_channel_types | Limits the channels that may be used: call, email, slack, whatsapp. Optional. |
requested_contact_id | The contact chosen in the preview. Set it on dispatch. |
requested_contact_name | A contact the user named. Set it only when you explicitly asked for that person. |
requester_directed | true only when you asked to be contacted yourself. Requires dispatch true and requested_contact_id. |
Asking a person for missing information
request_human_info works in two steps.
- Preview. The assistant calls it with
dispatchset tofalse. Nothing is sent. Brain returns the contact it would ask. The assistant is told to name only a contact that Brain returns here, and never a person it guessed from your documents or the conversation. If you name a person, Brain checks that they are a configured contact. If they are not, the assistant says so. - Dispatch. After you confirm, the assistant calls it again with
dispatchset totrueand the contact from the preview. Brain then contacts that person by their configured method, which can be a call or a Slack message. It runs in the background and can take several minutes. The assistant is told to say so and offer to carry on with something else.
There is one exception to asking first. If you ask to be contacted yourself so you can provide the missing information, that request already counts as your confirmation. The assistant previews to check that you are the contact, then dispatches straight away with requester_directed set to true. If the preview picks someone else, it does not send the request to that person instead. If your original request did not ask to be contacted yourself, the assistant waits for your confirmation even when the preview picks you.
Contacts are set up by an admin. See Contacts. To be contacted yourself, you need a contact method on your profile. Requests you start show under My requests. For the messages you may see, see MCP troubleshooting.
Utility
| Tool | What it does | Key parameters |
|---|---|---|
init | The first call. Returns Brain's rules for the assistant and the list of skills it can use. The list has a total_count. | None |
health | Checks whether the Brain API is reachable. | None |
start_company_memory_activity | Creates a record that groups the calls made for one question. Changes no knowledge. | Optional label, conversation_id and user_question_hash |
If your organization's memory is not built yet, init returns a notice instead of the rules and skill list. The assistant is told that Company Memory is collecting its initial knowledge and is not ready to answer. Ask again once an admin has built the memory. See MCP troubleshooting.
Report and feedback
| Tool | What it does | Key parameters and limits |
|---|---|---|
report_issue | Reports a failure the assistant can point to. | category, observed and expected are required. Optional: activity_id, tool_name, user_request and error_message. |
send_feedback | Suggests an improvement when nothing failed. | summary and origin are required. Optional: context, blocked and activity_id. |
report_issue categories:
| Category | Use |
|---|---|
missing_information | You say something exists and Brain did not return it |
wrong_answer | An answer contradicts its own evidence |
tool_error | A tool failed |
access_problem | Something went wrong when the assistant tried to read what you are allowed to see. Not for results that are simply hidden from you. |
send_feedback takes an origin: user when the idea is yours, agent when it is the assistant's. Use blocked when the gap stopped the task.
Text limits: observed and expected 2,000 characters each, user_request 500, error_message 2,000, summary 2,000, context 1,000. Longer text is cut to fit, not refused.
A report includes your organization and account, what the assistant wrote, the activity_id if there is one, and the name and version of the assistant app. It also includes an ID for the connection session and for the Brain release. Reports are recorded for the GuruSup team and are kept for a limited time. They do not appear anywhere in the app. If a report cannot be saved, the assistant is told to carry on with your task and not retry.
The assistant reports a problem once it is confirmed, not on first suspicion, needs no permission, and tells you in one line. It sends feedback once, at the end of the task. Neither tool changes what Brain knows or contacts anyone.
report_issue is not for wrong company facts. For those, tell your admin, or see Resolve conflicts.
Slow answers
A slow answer can take minutes. Brain waits for its own backend for a long time before giving up, so a tool that seems stuck is often still working. See MCP troubleshooting.
How tools are marked
Every tool has a title and marks that tell your client whether it reads or writes. Your client can use them to decide when to ask for your approval.
| Tool (title) | Read-only | Destructive | Notes |
|---|---|---|---|
init (Initialize Company Brain) | Yes | No | |
health (Check Company Brain Health) | Yes | No | |
get_profile (Get Signed-in Profile) | Yes | No | |
start_company_memory_activity (Start Company Memory Activity) | Yes | No | Each call makes a new record |
ask_company_memory (Ask Company Memory) | Yes | No | |
search_company_memory (Search Company Memory) | Yes | No | |
retrieve_company_memory (Retrieve Company Memory Evidence) | Yes | No | |
skills_get (Get Company Skill) | Yes | No | |
add_company_knowledge (Add Company Knowledge) | No | No | |
report_issue (Report a Company Brain Issue) | No | No | |
send_feedback (Send Company Brain Feedback) | No | No | |
skills_publish (Publish Company Skill) | No | Yes | |
request_human_info (Request Information from a Person) | No | Yes | Reaches outside Brain: can send a message or place a call |
Who can use the tools
No tool on this page needs the admin role. What comes back depends on what you are allowed to see. Publishing a skill still needs an admin to approve it before anyone can use it. See What an agent can see.