twake-mcp
Provides tools to interact with Matrix chat rooms, including sending messages, listing rooms, and reading history via the Twake Chat integration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@twake-mcpCheck my Twake inbox"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
twake-mcp
MCP server for Twake Workplace — connect any AI assistant to Linagora's collaboration suite.
What it does
Exposes Twake Workplace (Chat, Mail, Drive) as MCP tools that AI assistants like Claude, GPT, or Linagora's own LUCIE can use to interact with your workspace.
An AI assistant with twake-mcp can:
Read and send chat messages
Check your email inbox and read individual emails
Browse, read, and upload files to Drive
Search across all services simultaneously
Related MCP server: MCP Microsoft Office
Tools
Tool | Description |
| Send a message to a chat room |
| List joined rooms |
| Get recent messages |
| List inbox emails |
| Read a specific email |
| List mail folders |
| List files and folders |
| Read a file |
| Upload content |
| Search across all services |
Setup
npm installConfigure via environment variables:
# Twake Chat (Matrix)
export TWAKE_MATRIX_HOMESERVER=https://matrix.twake.app
export TWAKE_MATRIX_TOKEN=syt_...
export TWAKE_MATRIX_USER=@jacob:twake.app
# Twake Mail (JMAP)
export TWAKE_JMAP_URL=https://jmap.twake.app/jmap
export TWAKE_JMAP_TOKEN=eyJ...
# Twake Drive (Cozy)
export TWAKE_COZY_URL=https://jacob.twake.app
export TWAKE_COZY_TOKEN=eyJ...Usage with Claude Code
Add to your Claude Code MCP settings:
{
"mcpServers": {
"twake": {
"command": "node",
"args": ["/path/to/twake-mcp/src/index.js"],
"env": {
"TWAKE_MATRIX_HOMESERVER": "https://matrix.twake.app",
"TWAKE_MATRIX_TOKEN": "your-token",
"TWAKE_JMAP_URL": "https://jmap.twake.app/jmap",
"TWAKE_JMAP_TOKEN": "your-token",
"TWAKE_COZY_URL": "https://jacob.twake.app",
"TWAKE_COZY_TOKEN": "your-token"
}
}
}
}Then ask Claude: "Check my Twake inbox" or "Send a message to #engineering on Twake"
Architecture
twake-mcp/
└── src/
└── index.js # Single-file MCP server
├── API clients (Matrix, JMAP, Cozy)
├── Tool implementations (10 tools)
└── MCP server setup (stdio transport)┌──────────────────┐ ┌──────────────┐ ┌──────────────┐
│ AI Assistant │ │ twake-mcp │ │ Twake │
│ (Claude, LUCIE, │──────▶│ MCP Server │──────▶│ Workplace │
│ GPT, etc.) │ stdio │ │ HTTPS │ (Chat/Mail/ │
│ │◀──────│ │◀──────│ Drive) │
└──────────────────┘ └──────────────┘ └──────────────┘The server uses the @modelcontextprotocol/sdk stdio transport. Each tool maps directly to a Twake service API call — Matrix Client-Server API for chat, JMAP (RFC 8620/8621) for mail, and Cozy API for drive.
Zero dependencies beyond the MCP SDK. All HTTP calls use Node.js native fetch.
Why
Linagora is building LUCIE, an open-source multilingual LLM. This MCP server makes Twake Workplace AI-accessible, enabling LUCIE (or any AI) to interact with the collaboration suite. It's the bridge between Linagora's AI strategy and their product ecosystem.
License
AGPL-3.0 (matching Linagora's licensing)
Available Tools
10 toolstwake_chat_historyB
Get recent messages from a Twake Chat room
| Name | Required | Description | Default |
|---|---|---|---|
| room | Yes | Room ID | |
| limit | No | Max messages (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burdon of behaviordisclosure. 'Get' signals a read-only operation, but the description does not disclose ordering, pagination, or how 'recent' is determined beyond the optional limit parameter. This is a meaningful gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core operation clearly and is appropriately sized for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately conveys the basic purpose for a simple read tool, but the absence of an output schema and annotations leaves return shape and behavioral details unspecified. Sibling context helps distinguish the tool but does not fill the missing ordering and pagination information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: room is documented as 'Room ID' and limit as 'Max messages (default 20)'. The description adds no additional meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get recent messages from a Twake Chat room'. It is clearly distinct from sibling tools like twake_chat_send and twake_chat_rooms, though 'recent' is not precisely defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as twake_search or twake_chat_rooms. The description only states what it does, not when it should be preferred or avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_chat_roomsA
List all joined Twake Chat rooms
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry full behavioral disclosure. It communicates a non-mutating list operation but does not mention pagination, result size, ordering, whether archived rooms are included, or authentication requirements. It is not misleading, but it is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler. The verb, resource, and scope are all front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool, the description is sufficient for an agent to select and invoke it. It could add more about return format or pagination behavior, especially since no output schema exists, but the low complexity keeps this from being a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter meaning for the description to clarify. Per the baseline for zero-parameter tools, the semantic score is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a precise verb 'List' with a specific resource 'Twake Chat rooms' and a scope 'joined'. This clearly differentiates it from send/history siblings and makes the tool's read-only enumerative purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this tool over alternatives, such as using it to obtain room IDs before sending or reading history. The wording implies a basic enumeration use case but does not state exclusions or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_chat_sendB
Send a message to a Twake Chat room via Matrix protocol
| Name | Required | Description | Default |
|---|---|---|---|
| room | Yes | Room ID (e.g. !abc123:twake.app) | |
| message | Yes | Message text to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses only the basic action (send) and protocol, but nothing about side effects, authentication requirements, or what happens on failure. For a write-intended operation, this lacks needed context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single precise sentence with no wase; the protocol mention adds context without bloat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter send operation with no output schema, the description plus schema cover the essential information. It falls slightly short on usage context, but none of the missing details block basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both 'room' and 'message' are documented in the schema. The description adds no extra meaning about parameter formats, defaults, or constraints, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Send'), a resource ('a message to a Twake Chat room'), and a protocol ('via Matrix') – clearly distinct from siblings that list rooms or read history. An agent can immediately understand what this tool does without needing to inspect other definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; the description only says what it does. The distinction from siblings is implied by the verb, but there is no explicit 'use this when...' or exclusion to prevent incorrect selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_drive_listB
List files and folders in Twake Drive
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder path or ID (default: /) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry behavioral disclosure. It only states the action (list files/folders) without mentioning relevant behavior such as whether listing is recursive or limited to immediate children, required access permissions, or whether only metadata is returned. This is minimal for a read-only tool, but still leaves key traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words and the core action is front-loaded. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with one optional parameter documented in the schema, and the description sufficiently conveys what operation is performed. It does not define return structure, but with no output schema and such a simple listing action, this is a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the path parameter already has a clear description ('Folder path or ID (default: /)'). The tool description adds no additional parameter meaning, but the schema fully covers the optional path, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('List') and specifies the resource ('files and folders in Twake Drive'), so an agent can understand the operation. It does not explicitly differentiate itself from sibling tools like twake_drive_read or twake_drive_upload, but the listing intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to call when you need an inventory of drive contents, and sibling names suggest alternatives for reading or uploading. However, no explicit when-to-use, when-not-to-use, or alternative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_drive_readA
Read a text file from Twake Drive by file ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself must indicate side effects; the verb 'Read' signals a non-destructive fetch limited to text files. It does not explain behavior on invalid IDs, non-text files, or what exact return format the caller should expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the core operation. This is appropriately concise for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is nearly complete for a simple read-by-ID operation and works well with the schema. The only slight gap is the lack of an explicit statement about return value shape, since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents 'id' as File ID. The description repeats this without adding constraints, examples, or formatting details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('read'), a specific resource ('text file from Twake Drive'), and the lookup key ('file ID'). This clearly distinguishes it from siblings like twake_drive_list and twake_drive_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by file ID' implies this tool is for direct content retrieval when an ID is already known. It does not explicitly state when not to use it or mention alternatives such as twake_drive_list for discovering files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_drive_uploadA
Upload text content as a file to Twake Drive
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | File name | |
| folder | No | Destination folder ID (default: root) | |
| content | Yes | File content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the core action but does not say whether existing files are overwritten, what the operation returns (e.g., a file ID), whether the folder must pre-exist, or what side effects occur. For a write operation, this leaves the agent guessing about post-call behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entry is a single nine-word sentence with the verb and object front-loaded. There is no filler and no repetition of schema fields; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and all parameters are documented in the schema, so an agent can assemble a valid call. However, with no annotations and no output schema, the description does not convey what happens after a successful upload or what could go wrong. It is adequate but leaves gaps in post-invocation expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, folder, and content. The phrase 'text content' mildly reinforces that content is plain text rather than binary, but the description adds no meaning beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is action-first: 'Upload text content as a file to Twake Drive' names a specific verb (upload) and resource (text content into Twake Drive). It is clearly distinct from siblings like twake_drive_list and twake_drive_read, which query the drive rather than writing to it, and from the unrelated chat, mail, and search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case — creating a file from text in Twake Drive — but gives no explicit when-to-use or when-not-to-use guidance. It does not name any alternative tool or exclusion condition. Since no sibling performs uploads, the omission is minor but still present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_mail_inboxA
List recent emails from Twake Mail inbox
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max emails (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole safety signal. 'List' implies a non-destructive read operation and 'recent' implies a time-based ordering, but it does not disclose auth requirements, pagination, or whether the listing modifies read/unread state. This is adequate for a simple read-only tool but leaves behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that leads with the verb and resource. There is no filler or redundant repetition of the tool name, making it appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool, the core operation is clear, but there is no output schema and no mention of what each returned email entry contains or how results are ordered beyond 'recent'. It does not state whether this tool is meant to provide summaries that lead into twake_mail_read, which leaves the overall workflow slightly underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, limit, is fully documented in the input schema with type and default ('Max emails (default 10)'). Schema description coverage is 100%, so the description adds no additional parameter nuance. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List recent emails from Twake Mail inbox'. It clearly distinguishes itself from sibling tools like twake_mail_read (which presumably reads a single email) and twake_mail_mailboxes (which lists mailboxes), by targeting the inbox and the listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as twake_mail_read or twake_mail_mailboxes. The description implies usage for inbox listing but does not explain when not to use it or what sibling tool to prefer for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_mail_mailboxesB
List all mailboxes/folders in Twake Mail
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description says nothing about pagination, ordering, system versus user mailboxes, permissions, visibility scope, or the structure of the returned mailboxes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to the tool's meaning, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing operation, the description is minimally viable: an agent knows what resource is being listed. However, with no output schema and no annotations, it lacks detail about what each mailbox entry contains, whether all accounts are included, and what the response looks like, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema fully defines the parameter surface. The description reinforces that no arguments are needed by saying 'List all', which is sufficient given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('all mailboxes/folders in Twake Mail'), making the tool's purpose clear. It does not explicitly differentiate from siblings like twake_mail_inbox or twake_mail_read, but the resource scope is distinct enough for basic selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The description never mentions that this is the folder-listning counterpart to twake_mail_inbox or that it complements twake_mail_read, so an agent receives no routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_mail_readA
Read a specific email by ID from Twake Mail
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Email ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'read' and does not mention whether the operation is side-effect free, whether it can alter read/unread state, what authorization is needed, or what the response contains. For a simple read some of this is inferable, but the description adds almost nothing beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the action and object, with no filler or repetition. Every word adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read operation the minimal description is nearly sufficient: the agent knows what to call and what argument to supply. However, with no output schema and no annotations, a short note about the returned email content or side-effect neutrality would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter already has a description ('Email ID'). The tool description only echoes 'by ID' and adds no new format, example, or source details. Baseline 3 applies because the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read'), a resource ('an email'), and a precise selector ('by ID from Twake Mail'). This makes it distinguishable from list-style siblings like twake_mail_inbox or twake_drive_read without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies this tool should be used when the agent already has an email ID and needs that single email, but the description does not explicitly compare it with twake_mail_inbox or state when not to use it. Usage context is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twake_searchA
Search across all Twake services (chat, mail, drive)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits on its own. It only says 'Search' and doesn't mention whether the operation is read-only, how results are returned, whether pagination exists, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no repetition or fluff. It states the action, target, and scope efficientlly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter search tool with no output schema, the description is mostly sufficient: it tells an agent what to call and what the query means. The main gap, result behavior, is minor for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of the single parameter with 'Search query'. The description adds no extra meaning about query syntax, matching behavior, or result filtering, so it doesn't improve on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description has a clear verb ('Search'), a specific resource ('all Twake services'), and omits an explicit scope list (chat, mail, drive). It is easy to tell apart from the per-service sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the context: search is cross-service, while siblings are per-service operations. It doesn't explicitly say 'use this instead of X', but the scope makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
twake_chat_history - First observed
twake_chat_rooms - First observed
twake_chat_send - First observed
twake_drive_list - First observed
twake_drive_read - First observed
twake_drive_upload - First observed
twake_mail_inbox - First observed
twake_mail_mailboxes - First observed
twake_mail_read - First observed
twake_search
TDQS
Each tool targets a distinct resource and action: chat send/list/history, mail inbox/read/mailboxes, drive list/read/upload, plus cross-service search. There is no meaningful overlap between any two tools.
All tools share the twake_ prefix and use snake_case, but the pattern is mixed: chat uses nouns (twake_chat_rooms, twake_chat_history), drive uses verbs (twake_drive_list, twake_drive_read), mail mixes both, and twake_search drops the service segment. The names are still readable, so the inconsistency is moderate.
Ten tools is well-scoped for a multi-service Twake integration covering chat, mail, drive, and search. Each tool earns its place without unnecessary redundancy or bloat.
The read/list actions are well covered across all services, plus chat send and drive upload. However, there are notable gaps: no mail send or delete, no drive update/delete or folder creation, and no chat room creation or management, so the lifecycle coverage is incomplete.
Maintenance
Related MCP Connectors
Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.
- mcpOAuthcom.keboola
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI to Stelllink to organize, access, manage and share files, links, and digital workspaces.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceConnects AI assistants to Nextcloud instances with 90+ tools for managing notes, calendars, contacts, files, recipes, and more through natural language conversations. Supports semantic search and multiple deployment options.345AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to Microsoft 365 accounts to manage emails, calendars, files, and Teams messages. It offers 71 tools and supports multi-user environments through a secure, customizable server architecture.55-
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to over 30 business tools like Gmail, Slack, and Airtable through a single unified interface. It enables users to perform actions across multiple platforms using natural language without managing individual API integrations.28MIT
- AlicenseBqualityCmaintenanceConnects AI assistants to Google Workspace (Gmail, Drive, Docs, Sheets, Slides, Calendar, Tasks, Forms, Chat, Contacts) through your own OAuth app, providing around 120 tools for managing email, files, calendar, and more.100MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JacobiusMakes/twake-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server