Get user
vital_get_userGet a single Vital user by their Vital user_id. Vital API: GET /v2/user/{user_id}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). |
vital_get_userGet a single Vital user by their Vital user_id. Vital API: GET /v2/user/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). |
Changes observed during successful MCP inspections.
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the underlying REST endpoint (GET /v2/user/{user_id}), which is mildly useful for mapping behavior, but says nothing about error behavior for unknown IDs, permission scoping, or what the response contains.
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?
Two short sentences, front-loaded with the action and resource, with the endpoint as a compact second sentence. Nothing is padded or redundant.
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 read tool with full schema coverage and a readOnly annotation, the call mechanics are adequately covered. Since no output schema exists, the description would ideally say what a user object contains (e.g., identifiers, demographics, connected sources), and that gap keeps this at minimum-viable.
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 one parameter at 100% schema description coverage, the schema already documents user_id as a UUID. The description only restates that the id is the Vital user_id and adds no format, aliasing, or lookup caveats beyond the schema, so the 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 and resource ("Get a single Vital user") and pins the identifier to the Vital user_id, which separates it from vital_list_users. However, it does nothing to distinguish itself from close siblings like vital_get_user_latest_info, vital_get_user_connected_providers, or vital_resolve_user, so an agent must still open those schemas to choose.
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?
Usage is only implied: the phrase "by their Vital user_id" signals the required precondition and that this is a single-record lookup rather than a list or resolve operation. There is no explicit when-to-use statement, no exclusions, and no named alternative for the ambiguous cases (resolve vs. get vs. latest_info).
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.