vital
Server Details
Read wearables and lab health data — sleep, activity, workouts, timeseries, lab tests and orders.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 3.8/5 across 21 of 21 tools scored. Lowest: 3/5.
Each tool targets a distinct resource and action: user creation/lookup, connection tokens, summaries for different health domains, lab test/order queries, and timeseries. No two tools appear to serve the same purpose, and the parameters (e.g. data ranges vs. IDs) further differentiate them.
All tools use the 'vital_' prefix and snake_case with a verb_noun pattern. Verbs are limited to create/get/list/resolve, and the use of 'get' for both single resources and summary endpoints is consistent enough. Slight deviation: some collection-returning operations use 'get' (e.g., get_workouts) while others use 'list' (e.g., list_orders), but the distinction between catalog listing and data retrieval is logical.
21 tools is above the ideal 3-15 range but fits the breadth of Vital's health data API. The count is justified by the many distinct summary types, lab test management, and user/provider operations. While it feels a bit heavy, the tools are well-scoped and each serves a clear need.
The set covers user creation/lookup, connection linking, health data summaries for common domains (activity, body, sleep, meals, menstrual cycle, workouts), timeseries, and lab test/order fetching. Gaps include no tool to create or cancel lab test orders, update/delete users, or disconnect providers, but these may be out of scope for a read-oriented health data server.
Available Tools
21 toolsvital_create_link_tokenCreate link tokenADestructiveInspect
Creates a short-lived Link token to connect a user's wearable/provider (no health data is modified). Vital API: POST /v2/link/token.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id to create the link token for (required). | |
| provider | No | Pre-select a single provider slug to connect. | |
| redirect_url | No | URL to redirect to after the connection flow. | |
| filter_on_providers | No | Restrict the connectable providers to this list of slugs. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the token is short-lived and that no health data is modified, which adds behavioral context beyond the annotations. However, it doesn't fully address the destructiveHint annotation's implications, so there is a slight gap.
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?
Single, information-dense sentence with the essential purpose and API endpoint. No wasted words.
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 the simplicity of the tool and full schema documentation, the description is complete enough. It states the token's lifespan and non-modification of health data, though it doesn't describe the response format. Still, no output schema exists, so some ambiguity remains.
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 covers 100% of parameters with descriptions. The description adds no parameter-specific meaning beyond the schema, 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?
The description uses a specific verb 'creates' with a clear resource 'short-lived Link token' and states the purpose (connect a user's wearable/provider). It also references the exact API endpoint, distinguishing it from sibling read/list 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 its use for initiating a wearable/provider connection flow. It doesn't explicitly name alternatives, but the purpose is clear and there is no competing sibling for token creation. It provides enough context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_create_userCreate userBDestructiveInspect
Creates a Vital user record (additive). Returns the Vital user_id. Vital API: POST /v2/user.
| Name | Required | Description | Default |
|---|---|---|---|
| ingestion_end | No | Latest date to ingest data to (yyyy-mm-dd). | |
| client_user_id | Yes | Your own stable id for the user (required). | |
| ingestion_start | No | Earliest date to ingest data from (yyyy-mm-dd). | |
| fallback_time_zone | No | IANA time zone used if the provider doesn't report one. | |
| fallback_birth_date | No | Fallback birth date yyyy-mm-dd. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'additive' but the annotations declare destructiveHint=true, which directly contradicts the non-destructive implication. It also omits details about idempotency, overwrite behavior, or authentication requirements, leaving a serious transparency gap.
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?
Single sentence, front-loaded with the core action and result, and includes the API endpoint. No wasted words, perfectly concise.
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 omits critical behavioral context: no mention of what happens if the client_user_id already exists, no explanation of the destructive annotation, and no details on how optional parameters affect creation. The annotation contradiction further undermines completeness.
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 description adds no parameter-specific information, but the input schema fully describes all 5 parameters (100% coverage). Baseline of 3 applies since the schema carries the semantic load.
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 clearly states the action ('creates') and the resource ('Vital user record'), and notes the return value ('Vital user_id'). It distinguishes from sibling get/list/resolve tools through the 'create' verb.
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 is provided on when to use this tool versus alternatives such as vital_get_user or vital_resolve_user. The description only states the operation and API endpoint, without any context on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_activityActivityARead-onlyInspect
Get activity summaries for a user over a date range. Vital API: GET /v2/summary/activity/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the date-range scoping and endpoint but no additional behavioral context such as rate limits, authentication, or response format. It is consistent with annotations, hence a 3.
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 concise sentences: the first states the purpose, the second gives the API endpoint. No redundant words or filler; 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 description is adequate for a simple read-only GET with complete schema and annotations, but it does not specify what the activity summary contains (e.g., metrics, units) and there is no output schema. Since no output schema exists, the description should provide more about the return value to be 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 description coverage is 100%, so all four parameters are fully documented in the schema. The description's 'date range' phrase adds no meaning beyond the schema's start_date and end_date. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
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 ('Get') and resource ('activity summaries') with a date range, and explicitly names the API endpoint (GET /v2/summary/activity/{user_id}). This clearly distinguishes it from sibling tools like vital_get_sleep or vital_get_body.
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. It does not mention exclusions, prerequisites, or related tools; it only restates the action and endpoint, leaving the agent to infer usage from the naming convention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_bodyBodyARead-onlyInspect
Get body summaries for a user over a date range. Vital API: GET /v2/summary/body/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds minimal behavioral context beyond the endpoint URL. It does not disclose return format, pagination, or any specific API quirks. It is not misleading, but the added value is modest, fitting a '3' given the annotation coverage.
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 two sentences long, with no filler. The first sentence states the core purpose clearly; the second provides a useful API reference. Every word contributes value, making it appropriately concise and well-structured.
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 has moderate complexity: four parameters (all documented), a read-only annotation, and no output schema. The description gives a basic idea of what it does but does not clarify what a 'body summary' actually contains (e.g., weight, BMI, body composition). Without an output schema, a bit more context about the return structure would be helpful, but the current description is not inadequate for a simple read operation.
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 descriptions cover all four parameters (100% coverage), so the baseline is 3. The description does not add parameter-level details beyond what the schema already provides—it only mentions 'date range' which maps to start_date and end_date, already documented. Since the schema is complete, no deduction is applied, but no bonus either.
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 clearly states the tool's function: 'Get body summaries for a user over a date range.' It uses a specific verb ('get'), identifies the resource ('body summaries'), and specifies the scope ('over a date range'). The inclusion of the REST endpoint ('GET /v2/summary/body/{user_id}') further distinguishes this from sibling Vital getters like vital_get_activity or vital_get_sleep.
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 provides clear context on when to use the tool: whenever you need body summaries for a user within a date range. It does not explicitly mention alternatives or exclusions, but the purpose is specific enough that a user can infer it's the appropriate tool for this data type. The absence of explicit 'when not to use' guidance keeps it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_lab_testGet lab testARead-onlyInspect
Get a single lab test by id. Vital API: GET /v3/lab_tests/{lab_test_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| lab_test_id | Yes | The lab test id (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the safe read nature is already declared. The description adds the API endpoint reference but no additional behavioral context such as rate limits or authentication. It does not contradict 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?
Two concise sentences, front-loaded with the core purpose. No wasted words or 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 simple read-only getter with one fully documented parameter, the description is sufficient. It clearly states what the tool does and which resource it operates on, and the annotation covers the safety profile.
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% with the lab_test_id parameter described as 'The lab test id (UUID).' The description adds no extra meaning beyond the schema, so the baseline 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 ('Get') and resource ('single lab test by id'), clearly distinguishing it from list_lab_tests and other getters like vital_get_order. It explicitly states the operation 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?
The description clearly implies usage when you have a specific lab_test_id and need one result. However, it does not explicitly mention alternatives like vital_list_lab_tests for fetching multiple tests or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_mealMealBRead-onlyInspect
Get meal summaries for a user over a date range. Vital API: GET /v2/summary/meal/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: true already declares the read-only behavior, and the description adds the GET method and API path, which reinforces but does not go beyond that. It does not disclose additional traits like pagination, rate limits, authentication requirements, or response format, which would be valuable for an agent to know.
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 plus an API reference, both of which are directly useful. It is front-loaded with the core purpose and contains no filler or unnecessary repetition, earning a high score for efficiency.
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?
With no output schema, the description should explain what 'meal summaries' actually contains or what the response looks like, but it only names the resource. While the tool has a simple read-only GET operation and the schema covers parameters, the lack of return value details and any mention of data structure makes it under-specified for an agent to fully anticipate the invocation outcome.
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 input schema provides 100% coverage for all four parameters, including descriptions for user_id, start_date, end_date, and provider. The description only mentions 'date range', which aligns with start_date and end_date but adds no new meaning beyond what the schema already documents, so the baseline score 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 clearly states the tool retrieves meal summaries for a user over a date range, using the Vital API GET /v2/summary/meal/{user_id} endpoint. This is a specific action on a distinct resource (meal summaries), which distinguishes it from sibling tools like vital_get_activity or vital_get_sleep.
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 usage for fetching meal data, but it does not explicitly compare with alternatives or state when not to use this tool. The HTTP path and reference to a date range give context, but there is no exclusion criteria or mention of sibling tools, leaving the agent to infer applicability from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_menstrual_cycleMenstrual cycleARead-onlyInspect
Get menstrual cycle summaries for a user over a date range. Vital API: GET /v2/summary/menstrual_cycle/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already communicates that this is a safe read operation. The description adds the date-range scoping and the exact API endpoint, but it does not disclose response format, pagination, rate limits, or other behavioral traits. It provides some value beyond the annotation but not rich 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?
The description is concise—two short sentences that front-load the primary action and resource. The optional API endpoint provides useful reference 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?
Given a simple read-only tool with full schema coverage and a readOnly annotation, the description is largely sufficient. It explains the resource and scope but could be slightly more complete by noting what the summaries contain or any response shape. However, with no output schema, this level of detail is acceptable.
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 baseline is 3. The description adds minimal semantic value beyond the schema: it rephrases the date-range filtering but does not elaborate on parameter formats, defaults, or relationships. The schema already explains each parameter.
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 clearly states the action ('Get'), the resource ('menstrual cycle summaries'), and the scope ('for a user over a date range'). It unambiguously distinguishes this tool from sibling tools like vital_get_activity or vital_get_sleep by naming the specific data type.
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 explicit guidance is given about when to use this tool versus alternatives. The intended use is implied by the resource name and description, but the tool does not mention exclusions, prerequisites, or alternatives. This makes it minimally adequate but not proactive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_orderGet orderARead-onlyInspect
Get a single lab-test order by id. Vital API: GET /v3/order/{order_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The order id (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no contradiction. The description adds the API endpoint and clarifies it returns a single order, but doesn't describe error behavior, auth requirements, or response format. Given annotations, this is adequate but not rich.
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 one concise sentence that states the action, resource, and API endpoint without any wasted words. It is front-loaded and efficient.
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 single-resource GET with one parameter and no output schema, the description sufficiently conveys that the tool returns a lab-test order. It doesn't list fields, but the scope is minimal and sibling tools cover related needs like results.
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 parameter description already specifies 'The order id (UUID).' The description's 'by id' adds nothing beyond what the schema 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 clearly states the tool retrieves a single lab-test order by ID, using a specific verb and resource. It distinguishes itself from siblings like vital_get_order_results (which gets results) and vital_list_orders (which lists orders).
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 conveys the clear usage context: fetching one specific order by ID. It does not explicitly mention alternatives or exclusions, but the singular 'by id' implies it is not for listing bulk orders, so context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_order_resultsGet order resultsARead-onlyInspect
Get the lab-test results for an order. Vital API: GET /v3/order/{order_id}/result.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The order id (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, covering the safety profile. The description adds the API method (GET) and the endpoint path, but does not disclose error behavior, response format, or other non-obvious traits. This is adequate given the annotation coverage.
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 exactly two sentences, with no redundant information. The first sentence states the action and object; the second gives the concrete API reference. 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 read-only tool with one documented parameter and a clear action, the description is largely complete. It does not explicitly note the return value's structure, but the phrase 'lab-test results' conveys what is returned. A more complete description might hint at possible empty results or error conditions, but given the simplicity, the current text suffices.
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 input schema has 100% description coverage for the single parameter (order_id with 'The order id (UUID)'). The description does not add any additional meaning beyond repeating the parameter's purpose, which is already fully documented.
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 'Get the lab-test results for an order' uses a specific verb and resource, clearly distinguishing it from sibling tools like vital_get_order (which likely retrieves order details) and vital_list_orders. The added API endpoint further pins down 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?
Usage is implied: the tool is for retrieving lab-test results for a specific order. However, no explicit when-to-use vs alternatives is provided, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_profileProfileARead-onlyInspect
Get a user's profile summary (height, and other static attributes). Vital API: GET /v2/summary/profile/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns with this. It adds that this endpoint returns a profile summary with height and other static attributes, and it states the exact API path. However, it does not disclose return format, pagination, or how the provider parameter affects results.
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 compact and front-loaded: the first sentence clearly states the action and result, while the second sentence provides the API endpoint. There is no redundancy or unnecessary detail.
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-only getter with no output schema, the description sufficiently conveys the purpose, the type of data returned, and the endpoint. It could be slightly more explicit about response shape, but the annotations and schema cover safety and parameter semantics well.
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%, as both user_id and provider have descriptions in the input schema. The tool description itself does not add extra parameter-level meaning beyond identifying the resource, 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 ('Get') with a concrete resource ('user's profile summary') and adds clarifying details about the content (height, static attributes). This distinguishes it from sibling tools like vital_get_user, which may focus on account-level information rather than summarized profile attributes.
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 usage when a user's static profile attributes are needed, but it does not explicitly state when to prefer this tool over sibling tools or mention any exclusions. The mention of the API endpoint gives some context but no direct alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_sleepSleepARead-onlyInspect
Get sleep summaries for a user over a date range. Vital API: GET /v2/summary/sleep/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description's 'Get' wording aligns with that. The description adds the date-range scope and endpoint, but does not disclose any additional behavioral traits such as response size, pagination, or data freshness. The read-only safety is already covered by annotations, so the description contributes only modestly beyond them.
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 sentences with no redundant information; the first states the core function and the second grounds it with the API path. Highly efficient 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?
Given the simple read-only nature and full schema coverage, the description is largely sufficient. However, since there is no output schema, it would be helpful to specify what 'sleep summaries' contains (e.g., duration, score), but this is a minor 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 input schema provides complete descriptions (100% coverage) for all four parameters, so the description does not need to add much. It does reference 'date range' which aligns with start_date/end_date, but this is also in the schema. The description adds no new semantic detail beyond 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?
Clearly states the action ('Get sleep summaries') and the scope ('for a user over a date range'), distinguishing it from sibling tools that retrieve other data types. The API endpoint is also specified for reference.
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 tool is for retrieving sleep summary data, but it does not explicitly contrast it with alternatives like vital_get_timeseries or vital_get_activity, nor does it state when this summary endpoint should be preferred. Usage is inferred from the name and sibling context rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_timeseriesGet timeseries dataARead-onlyInspect
Get timeseries data points for a user and resource over a date range. Supported resources: heartrate, hrv, glucose, blood_pressure, blood_oxygen, steps, respiratory_rate, body_weight, body_fat, distance, water, vo2_max, stress_level, mindfulness_minutes, calories_active, calories_basal, floors_climbed, caffeine, cholesterol. Vital API: GET /v2/timeseries/{user_id}/{resource}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| resource | Yes | Timeseries resource to fetch. | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read behavior is known. The description adds the REST endpoint (GET /v2/timeseries...), which is consistent, but no further behavioral details like return format, pagination, or provider filtering behavior beyond what schema/annotations provide.
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 sentences, front-loaded with the core purpose, then resource enumeration and API path. No filler words; the resource list is functional to define scope.
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 read-only retrieval tool with well-documented schema and readOnlyHint, the description provides the essential purpose, supported resources, and API endpoint. It omits return format details, but no output schema exists and the tool is straightforward enough for selection and 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?
Input schema has 100% coverage with descriptions for all five parameters, including enums and date patterns. The description only repeats 'date range' and lists resources, adding no new parameter meaning beyond 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?
The description uses a specific verb ('Get'), names the resource ('timeseries data points'), and scopes it ('for a user and resource over a date range'). It also lists supported resources, clearly distinguishing it from sibling get_* tools that target other data categories like activity or sleep.
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 usage (when you need timeseries for listed resources) but does not explicitly state when to prefer this over sibling tools or provide exclusion/alternative guidance. No comparison to related getters is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_userGet userARead-onlyInspect
Get 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). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is readOnlyHint=true, and the description adds no behavioral context beyond what the annotation and parameter schema already provide. There is no mention of response format, error conditions, authentication, or other operational traits.
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, clear sentence that is immediately scannable. It includes the essential information without any filler or redundancy.
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 one-parameter read operation with readOnlyHint annotation, the description is sufficient. It names the API endpoint and the identifying parameter; no output schema exists, but the return value is naturally inferred as the user object.
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 fully describes the single parameter user_id as 'The Vital user id (UUID).' The description merely restates 'by their Vital user_id' without adding any new semantic details, so the baseline score 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 clearly specifies the verb 'Get', the resource 'Vital user', and the exact scope ('by their Vital user_id'). It also names the API endpoint, making the tool's function unambiguous and distinguishing it from sibling list/create/resolve user 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 usage when a specific user_id is known, but it does not explicitly contrast with alternatives such as vital_list_users or vital_resolve_user. No when-not-to-use conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_user_connected_providersGet user's connected providersARead-onlyInspect
List the wearables/data sources (providers) a user has connected. Vital API: GET /v2/user/providers/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds the API endpoint and the notion of 'wearables/data sources' but lacks behavioral details such as pagination, error handling, or response format, which are relevant for a list operation.
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 two sentences, front-loaded with the action, and contains no redundant wording. It efficiently conveys the purpose and the API reference.
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 the tool's simplicity (one parameter, read-only annotation, no output schema), the description is mostly complete. It explains what is listed and the API endpoint. However, it does not differentiate from vital_list_providers or mention what the response contains, which would improve completeness.
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 provides full coverage for the single parameter user_id with a clear description ('The Vital user id (UUID)'). The tool description mentions 'a user' but adds no additional meaning beyond the schema, so baseline 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 clearly states the tool's function: 'List the wearables/data sources (providers) a user has connected.' It uses a specific verb ('List'), identifies the resource ('providers'), and scopes it to a user's connections, distinguishing it from sibling tools like vital_list_providers.
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 usage (when you need a user's connected providers) but does not explicitly mention alternatives or when not to use this tool. It could be confused with vital_list_providers, but no exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_user_latest_infoGet user's latest infoARead-onlyInspect
Get the latest device/app info reported for a user. Vital API: GET /v2/user/{user_id}/info/latest.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the API endpoint and 'latest' scope, but does not elaborate on response format, pagination, authentication, or rate limits. With annotations covering the safety profile, the description provides modest additional 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?
The description is a single concise sentence, front-loads the purpose, and includes the API reference. Every word contributes value, and there is no redundancy or padding.
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-only GET endpoint with one required parameter and no output schema, the description adequately conveys the tool's scope. It does not describe return values, but the absence of an output schema means that burden is not fully expected. It could mention what 'info' encompasses, but the name and endpoint are sufficient for most agents.
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%: the only parameter user_id is described as 'The Vital user id (UUID).' The description merely reinforces that user_id is a path parameter in the endpoint URL. It adds no meaning beyond what the schema already provides, so a 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 clearly states the tool 'Get the latest device/app info reported for a user' and provides the exact API endpoint. This distinguishes it from sibling tools like vital_get_user (which presumably returns user profile) and other vital_get_* tools that target specific data types (e.g., activity, sleep).
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 usage context (when you need the latest device/app info for a user) but does not explicitly explain when to choose this over alternatives or mention any exclusions. Sibling tool names suggest other specialized data endpoints, but no direct comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_get_workoutsWorkoutsARead-onlyInspect
Get workouts summaries for a user over a date range. Vital API: GET /v2/summary/workouts/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The Vital user id (UUID). | |
| end_date | No | End date yyyy-mm-dd (inclusive). Defaults to today upstream. | |
| provider | No | Filter to a single provider slug (e.g. oura, fitbit). | |
| start_date | Yes | Start date yyyy-mm-dd (inclusive, required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so safety is covered. The description adds the specific endpoint and that it returns summaries, but does not disclose behaviors like pagination, data availability, or response format. With the annotation lowering the bar, the description provides some extra context but not rich behavioral detail.
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 sentence plus the endpoint. Extremely concise and front-loaded, with no wasted words. Every part contributes to understanding the tool's purpose.
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 with no output schema and read-only annotations. The description states the return type ('workouts summaries') and the date-range scope, which is adequate for a basic getter. However, it does not mention optional filtering or response structure, but the schema covers the request parameters.
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 baseline is 3. The description mentions user and date range, which are already in the schema, but does not add additional meaning beyond that. It does not explain the provider filter or end_date default, but those are documented in 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?
The description clearly states the tool gets workout summaries for a user over a date range, using a specific verb and resource. It distinguishes from siblings like vital_get_activity and vital_get_sleep by explicitly naming 'workouts summaries' and the API endpoint.
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 the use case: retrieving workout summary data between dates. It provides clear context (user and date range) but does not explicitly mention alternatives or exclusions. However, the purpose is specific enough to guide selection among many get_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_list_lab_testsList lab testsARead-onlyInspect
List the lab tests available/configured for your team. Vital API: GET /v3/lab_tests.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by lab test name. | |
| status | No | Filter by lab test status (e.g. active). | |
| lab_slug | No | Filter by lab slug. | |
| order_key | No | Sort key. | |
| order_direction | No | Sort direction. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering safety. The description adds team-scoping ('available/configured for your team') and the API endpoint, but does not disclose return format, pagination, or other behavioral details. This is useful but minimal additional 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?
The description is two sentences, front-loaded with the purpose, and the API endpoint is a concise supplemental detail. No wasted words.
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 list operation with read-only annotation and full schema coverage, the description is adequate. It provides team scope and API endpoint, but could optionally mention pagination or return structure. Slightly less complete than the best case but still sufficient.
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% with all 5 parameters described, so the baseline is 3. The description adds no parameter-specific semantics beyond what the schema already provides.
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 clearly states the tool lists lab tests for the team, using a specific verb ('List') and resource ('lab tests'). It distinguishes from sibling tools like vital_get_lab_test (singular) and other list tools by emphasizing team-scoped availability.
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 usage for listing lab tests but does not explicitly state when to use it versus alternatives such as vital_get_lab_test for a single test. It lacks exclusion or alternative guidance, relying on the tool name and context signals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_list_ordersList ordersARead-onlyInspect
List lab-test orders with filters, paginated. Vital API: GET /v3/orders.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| size | No | Page size. | |
| status | No | Filter by order status. | |
| user_id | No | Filter to a single Vital user id (UUID). | |
| end_date | No | Filter by created-at end (ISO datetime). | |
| start_date | No | Filter by created-at start (ISO datetime). | |
| search_input | No | Free-text search. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this a safe read operation. The description adds the API endpoint (GET /v3/orders) and mentions pagination/filters, which is useful but does not go deeper into response structure or error handling. It does not contradict the annotation.
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 concise and front-loaded: two sentences that immediately convey the action, resource, and key features, followed by the API endpoint. Every word earns its place without unnecessary detail.
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 the simple list operation, good annotations, and full schema coverage, the description is mostly complete. It lacks an explicit statement about the return format (e.g., paginated response object), but the presence of page/size parameters and the listing nature imply a page of orders, which is sufficient for a tool of this complexity.
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 fully documents all seven parameters (page, size, status, user_id, dates, search). The description only mentions 'filters, paginated' at a high level, adding no extra semantics beyond what the schema already provides.
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 clearly states 'List lab-test orders with filters, paginated' which identifies the verb (list), resource (lab-test orders), and key capabilities (filters, pagination). It differentiates from siblings like vital_get_order (single order) and vital_get_order_results (order results) by focusing on 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?
The description indicates this is for listing orders with filters and pagination, providing clear context for when to use it. However, it does not explicitly mention alternatives or exclusions, such as 'use vital_get_order for a single order,' so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_list_providersList supported providersARead-onlyInspect
List all providers (wearables/data sources) Vital supports. Vital API: GET /v2/providers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true in the annotations, the safe read-only nature is already disclosed. The description adds the API endpoint (GET /v2/providers) but does not elaborate on output format, pagination, or any other behavior. It does not contradict the annotations, but adds minimal extra value beyond the title.
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 concise, consisting of two short sentences. The main statement is front-loaded with the verb and resource, and the API endpoint is a helpful supplementary detail. There is no wasted language or redundancy.
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 list-all tool, the description covers the essential purpose and even includes the API endpoint. However, with no output schema, it does not describe the structure of the returned list (e.g., provider IDs, names, required fields). Given the tool's simplicity, this is a minor gap, but still slightly incomplete for full self-contained understanding.
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 description is not required to explain parameter semantics. The baseline for 0 params is 4, and the description appropriately makes no parameter claims. The input schema is empty and the description adds no misleading parameter information.
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 providers'), and clarifies that these are wearables/data sources supported by Vital. This clearly distinguishes the tool from siblings like vital_get_user_connected_providers, which focus on a specific user's connected providers.
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 usage context by stating 'List all providers', but it does not explicitly state when to use this tool versus alternatives like vital_get_user_connected_providers. No contra-indications or alternative tool references are provided, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_list_usersList usersARead-onlyInspect
List all Vital users in your team, paginated. Vital API: GET /v2/user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max users to return. | |
| offset | No | Pagination offset. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is known to be a safe read operation. The description adds useful context like 'in your team' and 'paginated', but it does not disclose default pagination values or response format, which would add further transparency.
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 two concise sentences, front-loaded with the purpose and scope, and includes the API endpoint. Every word earns its place with no redundancy.
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 paginated list tool with good annotations and schema descriptions, the description adequately covers scope and pagination. Minor gaps include missing default pagination behavior or return value details, but these are not critical for a basic list operation.
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% for both limit and offset, so the parameters are well-documented. The description adds no additional parameter semantics beyond the schema, so the baseline 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 clearly states the tool lists all Vital users in the team with pagination. The verb 'List' and resource 'Vital users' are specific, and it distinguishes from siblings like vital_get_user, which implies a single-user retrieval.
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 usage for retrieving a paginated list of all users, but it does not explicitly mention when to use this tool versus alternatives like vital_get_user. The context is clear but lacks explicit exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vital_resolve_userResolve user by client_user_idARead-onlyInspect
Look up a Vital user by your own client_user_id (the stable id you assigned). Vital API: GET /v2/user/resolve/{client_user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| client_user_id | Yes | Your own stable id for the user. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds the API endpoint and reiterates the lookup method, but doesn't disclose additional behaviors such as error handling, return format, or authentication specifics. Since annotations cover the safety profile, the description adds modest value, consistent with a baseline 3.
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, well-structured sentence that states the purpose and parameter without any extraneous information. Including the API endpoint is a bonus, 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 simple one-parameter lookup tool with a readOnlyHint annotation and no output schema, the description is adequately complete. It clearly explains what the tool does and what input is expected. It does not describe the return value, but given the low complexity and the context provided by the endpoint, this is a minor 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 input schema already fully describes client_user_id as 'Your own stable id for the user,' and the description essentially repeats this with 'the stable id you assigned.' Since schema coverage is 100%, the baseline is 3, and the description does not introduce any new semantic details (e.g., format, examples, or constraints).
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 clearly states the action ('Look up a Vital user') and resource ('by your own client_user_id'), which is specific and distinguishes it from siblings like vital_get_user or vital_list_users. The scope is unambiguous and directly tied to the tool's name.
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 provides clear context: use this when you have your own client_user_id (the stable ID you assigned). It doesn't explicitly mention alternatives or exclusions, but the focus on client_user_id vs. other lookup methods makes the usage context evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityDmaintenanceEnables fetching health and fitness metrics from the Ultrahuman API, including heart rate, sleep, steps, temperature, and HRV data.Last updated1921MIT
- AlicenseAqualityAmaintenanceProvides read-only access to Withings health metrics including body composition, sleep, workouts, and ECG data with local SQLite caching and trend analysis. Features incremental synchronization, automatic OAuth token refresh, and supports all 200+ Withings measurement types for comprehensive health tracking.Last updated8GPL 3.0
- Alicense-qualityBmaintenanceRead-only MCP access to Fitbit-synced health data through Google Health API v4. Provides tools for metrics, summaries, trends, and data quality without write or arbitrary HTTP operations.Last updatedMIT
- Alicense-qualityDmaintenanceEnables access to Oura Ring health data including sleep patterns, activity metrics, readiness scores, heart rate, workouts, and stress measurements with AI-powered analysis and personalized recommendations.Last updated52MIT