User Presence
user_presencePresence for up to 100 user ids.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_ids | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| userPresences | No | Array of presence objects |
user_presencePresence for up to 100 user ids.
| Name | Required | Description | Default |
|---|---|---|---|
| user_ids | Yes |
| Name | Required | Description | Default |
|---|---|---|---|
| userPresences | No | Array of presence objects |
Changes observed during successful MCP inspections.
Output schema / properties / userPresences / items / properties / gameId / typePrevious value: -"string"New value: +[
+ "string",
+ "null"
+]Output schema / properties / userPresences / items / properties / placeId / typePrevious value: -"number"New value: +[
+ "number",
+ "null"
+]Output schema / properties / userPresences / items / properties / rootPlaceId / typePrevious value: -"number"New value: +[
+ "number",
+ "null"
+]Output schema / properties / userPresences / items / properties / universeId / typePrevious value: -"number"New value: +[
+ "number",
+ "null"
+]Input schema / examplesAdded value: +[
+ {
+ "user_ids": [
+ 1,
+ 2,
+ 3
+ ]
+ }
+]Output schema / (root)Previous value: -nullNew value: +{
+ "description": "User presence information",
+ "properties": {
+ "userPresences": {
+ "description": "Array of presence objects",
+ "items": {
+ "properties": {
+ "gameId": {
+ "description": "Game session ID if in-game",
+ "type": "string"
+ },
+ "lastLocation": {
+ "description": "Last known location",
+ "type": "string"
+ },
+ "lastPresenceUpdate": {
+ "description": "Last presence update timestamp",
+ "type": "string"
+ },
+ "placeId": {
+ "description": "Current place/game ID if in-game",
+ "type": "number"
+ },
+ "rootPlaceId": {
+ "description": "Root place ID if in-game",
+ "type": "number"
+ },
+ "universeId": {
+ "description": "Universe ID if in-game",
+ "type": "number"
+ },
+ "userId": {
+ "description": "User ID",
+ "type": "number"
+ },
+ "userPresenceType": {
+ "description": "Presence type (0=offline, 1=online, 2=in-game, 3=studio)",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, so the description only needs to add extra behavioral context. It adds the limit of 100 user IDs, which is useful, but it doesn't disclose behavior for invalid, duplicate, or excess IDs. This is adequate but minimal given the annotations.
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 short sentence with no filler and puts the core topic first. It is appropriately front-loaded for a simple one-parameter tool. The brevity crosses into under-specification, but that issue is better captured by other dimensions.
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?
Even with an output schema and strong safety annotations, the description fails to define what 'Presence' actually returns or when to use this tool. An agent cannot tell whether it means online status, platform activity, or visibility relative to sibling tools. The missing semantic and selection context makes the description incomplete.
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?
With schema description coverage at 0%, the description must carry parameter meaning. It tells the agent that the numeric array represents user IDs and caps the count at 100, which the schema itself lacks. However, it doesn't specify value ranges, uniqueness, or handling of empty arrays, so compensation is only partial.
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 identifies the resource ('Presence') and a key constraint ('up to 100 user ids'), but it never states an explicit action such as 'retrieve' or 'check.' It also doesn't clarify what 'Presence' means or distinguish this tool from siblings like ai_visibility_check and user, so an agent must infer the intended 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 about when to use user_presence rather than the many user-related sibling tools. It does not mention alternatives, prerequisites, or typical use cases. The description only imposes a size limit, which is a parameter constraint, not a usage guideline.
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.