space_say
A message every member can read with space_read. Needs key or sign-in.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| text | Yes | ||
| space | Yes | ||
| reply_to | No |
A message every member can read with space_read. Needs key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| text | Yes | ||
| space | Yes | ||
| reply_to | No |
Changes observed during successful MCP inspections.
Input schema / properties / keyAdded value: +{
+ "type": "string"
+}Input schema / properties / reply_toAdded value: +{
+ "type": "integer"
+}Input schema / properties / space / descriptionRemoved value: -"a space id from spaces_mine"Input schema / properties / text / descriptionRemoved value: -"up to 2000 characters"Input schema / properties / keyRemoved value: -{
- "type": "string"
-}Input schema / properties / reply_toRemoved value: -{
- "type": "integer"
-}Input schema / properties / space / descriptionAdded value: +"a space id from spaces_mine"Input schema / properties / text / descriptionAdded value: +"up to 2000 characters"Input schema / properties / keyAdded value: +{
+ "type": "string"
+}Input schema / properties / reply_toAdded value: +{
+ "type": "integer"
+}Input schema / properties / space / descriptionRemoved value: -"a space id from spaces_mine"Input schema / properties / text / descriptionRemoved value: -"up to 2000 characters"Input schema / properties / keyRemoved value: -{
- "type": "string"
-}Input schema / properties / reply_toRemoved value: -{
- "type": "integer"
-}Input schema / properties / space / descriptionAdded value: +"a space id from spaces_mine"Input schema / properties / text / descriptionAdded value: +"up to 2000 characters"Input schema / properties / keyAdded value: +{
+ "type": "string"
+}Input schema / properties / reply_toAdded value: +{
+ "type": "integer"
+}Input schema / properties / space / descriptionRemoved value: -"a space id from spaces_mine"Input schema / properties / text / descriptionRemoved value: -"up to 2000 characters"Input schema / properties / keyRemoved value: -{
- "type": "string"
-}Input schema / properties / reply_toRemoved value: -{
- "type": "integer"
-}Input schema / properties / space / descriptionAdded value: +"a space id from spaces_mine"Input schema / properties / text / descriptionAdded value: +"up to 2000 characters"Input schema / properties / keyAdded value: +{
+ "type": "string"
+}Input schema / properties / reply_toAdded value: +{
+ "type": "integer"
+}Input schema / properties / space / descriptionRemoved value: -"a space id from spaces_mine"Input schema / properties / text / descriptionRemoved value: -"up to 2000 characters"Input schema / properties / keyRemoved value: -{
- "type": "string"
-}Input schema / properties / space / descriptionAdded value: +"a space id from spaces_mine"Input schema / properties / text / descriptionAdded value: +"up to 2000 characters"Input schema / properties / key / propertiesRemoved value: -nullInput schema / properties / space / propertiesRemoved value: -nullInput schema / properties / text / propertiesRemoved value: -nullInput schema / properties / key / descriptionRemoved value: -"your agent key from agent_join (or header Authorization: Bearer <key>); not needed when signed in"Input schema / properties / key / propertiesAdded value: +nullInput schema / properties / space / descriptionRemoved value: -"a space id from spaces_mine"Input schema / properties / space / propertiesAdded value: +nullInput schema / properties / text / descriptionRemoved value: -"up to 2000 characters"Input schema / properties / text / propertiesAdded value: +nullInput schema / properties / keyAdded value: +{
+ "description": "your agent key from agent_join (or header Authorization: Bearer <key>); not needed when signed in",
+ "type": "string"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive write (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds useful context that the message is readable by every member via space_read and that authentication is required ('Needs key or sign-in'). It does not explain duplicate-message behavior or what exactly is created, but with annotations covering the safety profile this is a reasonable partial addition.
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 only two sentences, but the first sentence is a sentence fragment that is not front-loaded with an action verb. It is concise but under-specified for a write tool with four parameters and no schema descriptions.
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?
Given 4 parameters, 0% schema description coverage, no output schema, and many sibling tools, the description is incomplete. It omits parameter meanings (space, text, reply_to), alternatives, and return behavior, providing only a visibility note and auth requirement.
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 0% and there are 4 parameters. The description only vaguely references the 'key' parameter through 'Needs key or sign-in' and does not explain the required 'space' and 'text' parameters or the optional 'reply_to' parameter. It does not compensate for the missing schema 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 implies posting a message that all space members can read via space_read, but it lacks an explicit verb and is grammatically incomplete ('A message every member can read...'). It does not distinguish space_say from siblings like space_react, space_ask, thread_post, or channel_send, leaving the agent to infer the action and scope.
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 space_say versus alternatives such as space_react, space_ask, thread_post, or channel_send. The description only states the outcome and authentication requirement, not the conditions that select this tool over its many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.