Skip to main content
Glama

Server Details

Read wearables and lab health data — sleep, activity, workouts, timeseries, lab tests and orders.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
75.5% over 71 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.5/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a clearly distinct resource and action: summary tools are split by data type (activity, body, meal, sleep, workouts, profile, menstrual_cycle), and the timeseries tool is explicitly distinguished as generic point data. The user-related tools (get_user, get_user_connected_providers, get_user_latest_info, resolve_user) all have unambiguous purposes, and list_providers vs get_user_connected_providers are clearly differentiated by descriptions.

Naming Consistency5/5

Every tool follows the same vital_verb_noun pattern (vital_get_sleep, vital_list_users, vital_create_user), with consistent snake_case throughout. There is no mixing of conventions or vague verbs.

Tool Count4/5

At 21 tools the set is on the heavier side, but each tool maps to a genuinely distinct Vital API endpoint (multiple health data types plus lab-test ordering), so the count is largely justified rather than padded. It is slightly over a lean ideal but well-scoped for the domain.

Completeness4/5

The surface covers user lifecycle (create/get/list/resolve), link tokens, all major summary types, timeseries, providers, and lab-test orders/results. Some gaps exist, notably no user update/delete and no order-creation or provider connect/disconnect tools, but these are workable for the primarily read-oriented purpose.

Available Tools

21 tools
vital_create_userCreate userC
Destructive
Inspect

Creates a Vital user record (additive). Returns the Vital user_id. Vital API: POST /v2/user.

NameRequiredDescriptionDefault
ingestion_endNoLatest date to ingest data to (yyyy-mm-dd).
client_user_idYesYour own stable id for the user (required).
ingestion_startNoEarliest date to ingest data from (yyyy-mm-dd).
fallback_time_zoneNoIANA time zone used if the provider doesn't report one.
fallback_birth_dateNoFallback birth date yyyy-mm-dd.

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description claims the operation is 'additive' (implying non-destructive), but the annotation destructiveHint=true declares potential destructive behavior. This direct contradiction violates annotation consistency, and while the return value and API endpoint add some context, the inconsistency is severe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences efficiently cover creation, return value, and API endpoint. Every sentence earns its place, though the ambiguous term 'additive' slightly detracts from overall clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no output schema and minimal annotations, the description lacks critical behavioral context such as duplicate handling, permissions, or idempotency. The contradictory 'additive' claim further reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description adds no parameter-level semantic details beyond the schema, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Creates') and resource ('Vital user record'), making the action clear. However, it does not explicitly differentiate itself from sibling tools like vital_resolve_user or vital_get_user, leaving the agent to infer its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not, or alternative conditions are provided. An agent cannot tell from the description alone whether to use this tool versus vital_resolve_user or vital_list_users in a given scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_activityActivityB
Read-only
Inspect

Get activity summaries for a user over a date range. Vital API: GET /v2/summary/activity/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered and the bar for the description is lower. The description's only extra signal is that it returns 'summaries' (aggregated, not raw samples) and maps to GET /v2/summary/activity/{user_id}; it says nothing about pagination, aggregation granularity, units, or return shape. With annotations carrying safety, this modest addition lands at 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose. The endpoint-mapping sentence is lower value but compact and does not obscure the lead. No wasted padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema and fully documented parameters, the description covers the essentials but leaves the return payload unexplained — notably what an 'activity summary' contains and its time granularity. Adequate, with a clear gap around what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so user_id, start_date, end_date, and provider are all documented in the schema (inclusive semantics, default-to-today, provider slug examples). The description adds no parameter detail beyond repeating 'user' and 'date range', so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get activity summaries') plus scope ('for a user over a date range'), which is enough to separate it from siblings like vital_get_sleep, vital_get_body, or vital_get_workouts. It does not, however, explicitly contrast itself with adjacent retrievers such as vital_get_timeseries, so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The date-range phrasing implies the general usage context but there is no explicit when-to-use, when-not-to-use, or alternative named among the many vital_get_* siblings. An agent must infer on its own whether activity data belongs here or in vital_get_timeseries or vital_get_workouts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_bodyBodyB
Read-only
Inspect

Get body summaries for a user over a date range. Vital API: GET /v2/summary/body/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.3/5.0
Behavior3/5

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 usefully adds the underlying REST endpoint (GET /v2/summary/body/{user_id}), but says nothing about pagination, response size, or whether summarization is daily vs aggregated, which is the kind of context a summary endpoint should disclose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the purpose front-loaded ahead of the API breadcrumb. Every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what a 'body summary' returns (which metrics, granularity, units), and it does not. The parameters and safety profile are adequately covered elsewhere, so the definition is workable but leaves the return shape opaque.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so user_id, start_date, end_date, and provider are each documented with type, format, and defaults upstream. The description adds no meaning beyond the schema (it only echoes the date-range concept), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get body summaries') plus the scope ('for a user over a date range'), which separates it from resource-specific siblings like vital_get_sleep and vital_get_activity. It does not, however, draw an explicit line against vital_get_timeseries, which plausibly could return overlapping data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and does not name an alternative such as vital_get_timeseries for finer-grained or multi-metric retrieval. The date-range phrasing only implies the calling context that the schema already enforces via required start_date.

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 testB
Read-only
Inspect

Get a single lab test by id. Vital API: GET /v3/lab_tests/{lab_test_id}.

NameRequiredDescriptionDefault
lab_test_idYesThe lab test id (UUID).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already conveys that this is a safe read, so the bar is lower. The description adds the underlying REST endpoint (GET /v3/lab_tests/{lab_test_id}), which is useful context not in the structured fields, but says nothing about error behavior (unknown id) or result shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core purpose front-loaded before the API reference detail. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with annotations covering the safety profile and full schema coverage, the description is nearly sufficient. The lack of an output schema leaves return shape unexplained, though that is a minor concern for a simple getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is fully documented as a UUID in the schema itself. The description adds no syntax, format, or sourcing hints beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (lab test) with the scope qualifier 'by id', which implicitly distinguishes it from the sibling list_lab_tests. It stops short of naming that alternative, but the singleton-vs-list distinction is inferable from 'single ... by id'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says to fetch one lab test by id but gives no when-to-use guidance, no exclusion against vital_list_lab_tests, and no prerequisites. An agent must infer that this is for a known id versus browsing with the list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_mealMealB
Read-only
Inspect

Get meal summaries for a user over a date range. Vital API: GET /v2/summary/meal/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.2/5.0
Behavior3/5

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 only the upstream endpoint (GET /v2/summary/meal/{user_id}) and the date-range scoping; it does not disclose pagination, result granularity, or behavior when no data exists. With annotations carrying the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, no padding, and the purpose is front-loaded ahead of the endpoint reference. It earns its space, though the endpoint line is marginally redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only fetch with full schema coverage and readOnlyHint already set, the definition supplies what an agent needs to call it correctly. The absence of return-shape detail is largely moot since there is no output schema to rely on, but a hint about result granularity would have closed the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (user_id, start_date, end_date, provider) are already documented with formats and defaults. The description adds nothing beyond the schema's own date-range framing, which is the baseline expectation when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Get meal summaries for a user over a date range.' It clearly distinguishes the resource (meal) from the many sibling getters (activity, body, sleep, workouts), though it does not explicitly name which sibling to prefer in overlapping cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives among the roughly fifteen vital_get_* siblings. A caller must infer that this is the meal-specific counterpart to the other data getters purely from the resource 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 cycleB
Read-only
Inspect

Get menstrual cycle summaries for a user over a date range. Vital API: GET /v2/summary/menstrual_cycle/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe-read profile is covered structurally. The description adds that results are 'summaries' (aggregated, not raw samples) and the endpoint path, but says nothing about pagination, rate limits, auth scopes, or empty-result behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, with the endpoint as a compact second clause. Nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only GET with fully documented parameters and no output schema, the description covers scope (user + date range) and result type (summaries). It stops short of describing what a summary record contains or behavior on missing data, but nothing an agent needs to invoke it is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: every parameter (user_id, start_date, end_date, provider) is documented in the schema, including formats and the upstream default for end_date. The description adds no parameter detail beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get menstrual cycle summaries for a user over a date range') and even pins the underlying REST endpoint, so the agent knows exactly what data is returned. It doesn't explicitly differentiate itself from siblings like vital_get_timeseries or vital_get_sleep, though the resource noun does most of that work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives (e.g. when to prefer a timeseries endpoint over this summary endpoint). The date-range framing implies usage but the description never states conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_orderGet orderB
Read-only
Inspect

Get a single lab-test order by id. Vital API: GET /v3/order/{order_id}.

NameRequiredDescriptionDefault
order_idYesThe order id (UUID).

TDQS

B3.4/5.0
Behavior3/5

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 upstream mapping 'GET /v3/order/{order_id}', which is mild context, but says nothing about whether a missing id errors or returns empty, nor about auth or rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose. The trailing API-endpoint sentence is arguably redundant for an agent choosing a tool but is compact and causes no harm.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool this is close to sufficient, but with no output schema the description never indicates what the returned order contains, and it leaves the boundary against vital_get_order_results and vital_list_orders to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single order_id parameter is documented as a UUID in the schema. The description adds no format, validation, or sourcing detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 lab-test order by id.' The word 'single' plus 'by id' implicitly separates it from vital_list_orders and vital_get_order_results. It does not name those siblings explicitly, so it falls short of the 5 benchmark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'by id' — you call this when you already hold an order identifier and need just that record. There is no explicit statement of when to prefer this over vital_list_orders or vital_get_order_results, and no prerequisites or failure conditions are given.

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 resultsB
Read-only
Inspect

Get the lab-test results for an order. Vital API: GET /v3/order/{order_id}/result.

NameRequiredDescriptionDefault
order_idYesThe order id (UUID).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares this is a safe read. The description adds the upstream API path and clarifies that the payload is lab-test results scoped to one order, but says nothing about result availability timing, empty/partial results, or auth requirements. Small added value over the annotation, hence a middling score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. The endpoint restatement is the only arguably redundant element, but it aids API parity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should carry more of the return-shape burden, yet it says nothing about what the results contain or how they are keyed. For a single-param read tool with annotations covering safety, this is minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100% ('The order id (UUID)'), so the schema already does the work. The description adds no format or sourcing detail beyond it; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the lab-test results for an order,' and pins the exact upstream endpoint. That is enough to separate it from vital_get_order (order metadata) and vital_list_orders, though it never explicitly contrasts those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g., is a completed/ordered status required?), and no mention of alternatives in the 20-tool sibling set. The agent must infer the call context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_profileProfileB
Read-only
Inspect

Get a user's profile summary (height, and other static attributes). Vital API: GET /v2/summary/profile/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
providerNoFilter to a single provider slug (e.g. oura, fitbit).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that this is a GET on a summary endpoint returning static attributes, which mildly disambiguates it from live/time-series data, but says nothing about auth scope, error behavior, single-profile vs multi-provider resolution, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose front-loaded and the API route as a compact cross-reference. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with full schema coverage and no output schema, the description is nearly sufficient: it names what the resource is and hints at returned attributes. It stops short of clarifying the provider filter's effect or how this differs from other user-oriented siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (user_id, provider) are already documented, including the provider slug examples. The description only echoes the user_id path segment and adds no filtering semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get a user's profile summary') and lists sample returned fields ('height, and other static attributes'), so the agent knows what comes back. It does not, however, differentiate itself from siblings like vital_get_user or vital_get_user_latest_info, which sound closely related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to prefer this over vital_get_user, vital_get_user_latest_info, or vital_get_body. Usage is only implied by the name and by the 'static attributes' phrasing, leaving the agent to guess at routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_sleepSleepB
Read-only
Inspect

Get sleep summaries for a user over a date range. Vital API: GET /v2/summary/sleep/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation already establishes this is a safe read. The description adds the upstream API route (GET /v2/summary/sleep/{user_id}), which is useful for documentation cross-referencing, but says nothing about pagination, data latency, empty-result behavior, or the shape of a 'summary'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no redundancy — purpose first, API route second. The route sentence is marginally useful rather than filler, though a dangling NoSuchMethod-style detail like this could be trimmed in favor of usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what a 'sleep summary' contains, and it does not — no field list, no note on whether results are per-day records. Annotations cover the safety profile and the schema covers inputs, so the definition is callable but leaves the return contract unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so user_id, start_date, end_date, and provider are all fully documented in the schema itself, including the absolute date pattern and the upstream default for end_date. The description only restates that a date range applies, adding no meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get sleep summaries for a user over a date range') plus the underlying API route, so the agent knows exactly what data class this returns. It does not explicitly contrast itself with sibling retrieval tools like vital_get_activity or vital_get_timeseries, but the 'sleep' resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no mention of when to prefer vital_get_timeseries or vital_get_user_latest_info instead, and no note on how to choose dates or the provider filter. Without this, the agent must infer selection from the tool name alone.

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 dataB
Read-only
Inspect

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}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
resourceYesTimeseries resource to fetch.
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the description's added value is modest. It contributes the endpoint path and inclusive date semantics, but says nothing about pagination, result limits, timezone handling, or whether sparse/missing days are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose first; every part earns its place except the 19-item resource list, which duplicates the enum in the schema and inflates the description. Still tight and front-loaded overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters, an enum, and no output schema, the description should hint at the return shape (timestamp/value pairs? aggregates?) and any pagination or rate behavior. It covers inputs adequately and the read-only profile via annotations, but leaves the response contract entirely unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (including the resource enum and date patterns) is already documented. The description restates the resource list and the user/resource/date-range combination without adding format or filtering nuance beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get timeseries data points for a user and resource over a date range') and pins the exact Vital endpoint, plus enumerates the 19 supported resource values. It never differentiates itself from overlapping siblings like vital_get_activity or vital_get_body, so an agent must guess which one holds timeseries granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The resource list and date-range framing imply when the tool applies, but there is no explicit when-to-use guidance versus the activity/body/sleep siblings that likely return similar metrics. No exclusions or prerequisites (e.g. user must be connected to a provider) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_userGet userA
Read-only
Inspect

Get a single Vital user by their Vital user_id. Vital API: GET /v2/user/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

vital_get_user_connected_providersGet user's connected providersA
Read-only
Inspect

List the wearables/data sources (providers) a user has connected. Vital API: GET /v2/user/providers/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this is a safe read. The description adds the underlying REST route (GET /v2/user/providers/{user_id}), which is modest extra context, but says nothing about permissions, empty-result behavior, or what a connected provider entry contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste; the substantive statement comes first and the endpoint mapping is a compact second clause. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter read tool whose safety profile is covered by annotations, so completeness requirements are light. It is nearly sufficient, though it never hints at the shape of the returned provider list, which would help with a tool that has no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so user_id (a Vital UUID) is already documented in the schema. The description only echoes it as a path segment, adding no format or constraint detail. Baseline 3 applies when the schema fully carries parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (wearables/data sources a user has connected), and the user-scoping implicitly separates it from the sibling vital_list_providers, which is a global provider catalog. An agent can pick correctly between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description ('providers a user has connected'), but there is no explicit when-to-use, when-not-to-use, or named alternative. The contrast with vital_list_providers is left for the agent to infer rather than stated.

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 infoA
Read-only
Inspect

Get the latest device/app info reported for a user. Vital API: GET /v2/user/{user_id}/info/latest.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, lowering the burden on the description. The description adds only the 'latest' (most-recent-snapshot) semantics and a redundant REST path; it says nothing about the shape of the returned payload, whether an empty result is possible, or rate-limit/error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the purpose is front-loaded and the endpoint reference follows as secondary detail. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with annotations covering safety and a fully documented schema, the description is adequate but thin: with no output schema, it should say more about what 'device/app info' actually contains, so an agent knows whether the response is the right data for its task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents user_id as a Vital UUID, so the description need not repeat it. The description adds no further parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Get) and resource (a user's latest reported device/app info), plus the underlying endpoint GET /v2/user/{user_id}/info/latest. It is distinguishable from siblings like vital_get_user or vital_get_profile, though it never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this retrieves the most recent device/app report for a given user, but there is no statement of when to prefer it over vital_get_user, vital_get_profile, or vital_get_user_connected_providers, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_get_workoutsWorkoutsA
Read-only
Inspect

Get workouts summaries for a user over a date range. Vital API: GET /v2/summary/workouts/{user_id}.

NameRequiredDescriptionDefault
user_idYesThe Vital user id (UUID).
end_dateNoEnd date yyyy-mm-dd (inclusive). Defaults to today upstream.
providerNoFilter to a single provider slug (e.g. oura, fitbit).
start_dateYesStart date yyyy-mm-dd (inclusive, required).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes this as a safe read, so the bar is lower. The description adds the backing endpoint (GET /v2/summary/workouts/{user_id}), which is modest context, but says nothing about pagination, result limits, or upstream default behavior for end_date.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the core purpose leading and the endpoint reference trailing. Nothing needs to be trimmed or reordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but for a simple read of a fully documented parameter set with annotations covering safety, an agent has essentially everything needed to invoke it. Only minor gaps remain, such as behavior when the range is large or how results are ordered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with user_id, start_date, end_date, and provider all documented including formats and defaults, so the schema carries the parameter burden. The description adds only the generic 'date range' framing, no syntax or semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (workouts summaries), and scope (for a user over a date range). The resource name cleanly separates it from siblings like vital_get_activity, vital_get_sleep, and vital_get_body, and the underlying endpoint is even cited.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the resource name and the 'over a date range' phrase; there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as a detailed/timeseries endpoint. Adequate but leaves routing to inference.

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 testsB
Read-only
Inspect

List the lab tests available/configured for your team. Vital API: GET /v3/lab_tests.

NameRequiredDescriptionDefault
nameNoFilter by lab test name.
statusNoFilter by lab test status (e.g. active).
lab_slugNoFilter by lab slug.
order_keyNoSort key.
order_directionNoSort direction.

TDQS

B3.2/5.0
Behavior2/5

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 only the team-scoping fact and the raw API path, disclosing nothing about pagination, result caps, sorting defaults, or auth requirements that would go beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the purpose front-loaded and no filler. The trailing API path reference is mildly redundant for tool selection but costs almost nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only filtered list with full schema coverage, so the description is sufficient for correct invocation. The description also states the team scope, which clarifies what set of results is returned even without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every filter/sort parameter is already documented in the schema, so the baseline is 3. The description itself adds no semantics about the five optional filters, but the schema carries that burden adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('lab tests') with scope ('available/configured for your team') and even names the underlying endpoint. However, it never distinguishes itself from the sibling vital_get_lab_test, so an agent must infer the list-vs-single difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not guidance and no mention of alternatives like vital_get_lab_test or vital_list_orders. The 'available/configured for your team' phrasing hints at scope but gives no actionable selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_list_ordersList ordersB
Read-only
Inspect

List lab-test orders with filters, paginated. Vital API: GET /v3/orders.

NameRequiredDescriptionDefault
pageNoPage number (1-based).
sizeNoPage size.
statusNoFilter by order status.
user_idNoFilter to a single Vital user id (UUID).
end_dateNoFilter by created-at end (ISO datetime).
start_dateNoFilter by created-at start (ISO datetime).
search_inputNoFree-text search.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds that results are paginated and references the underlying endpoint, but says nothing about default page size, max results, ordering of records, or authentication/scope needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact clauses, front-loaded with the core action and resource. The endpoint fragment ("Vital API: GET /v3/orders") is marginal but cheap; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, all-optional read-only list tool with full schema coverage and no output schema, the description covers what is needed to call it correctly. Missing only finer points like pagination defaults and result ordering, which the schema does not carry either.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 7 parameters is already documented in the schema. The description adds only the generalization "with filters, paginated" and no per-parameter meaning beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List lab-test orders") plus scope modifiers (filters, paginated), which clearly distinguishes it from the singular siblings vital_get_order and vital_get_order_results. It stops short of explicitly naming which sibling to use instead when a single order is wanted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance beyond the implication of "filters". It never says to prefer this over vital_get_order, nor does it describe when a filtered listing is appropriate versus search. No exclusions or prerequisites are given.

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 providersA
Read-only
Inspect

List all providers (wearables/data sources) Vital supports. Vital API: GET /v2/providers.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes the safe-read profile, so the description's main addition is the endpoint reference (GET /v2/providers) and the fact that this is the global supported set rather than a per-user set. It says nothing about return shape, caching, or ordering, which is acceptable for a small static list but leaves the description thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded, with the API endpoint appended as a compact reference rather than prose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only listing with safety covered by annotations and no output schema, the definition is sufficient to call correctly. It could go one step further by noting that the returned provider identifiers are what other tools expect, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description adds nothing that could mislead about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all providers') and glosses the domain term ('wearables/data sources') so the agent knows what a provider is. It does not explicitly contrast with the close sibling vital_get_user_connected_providers, so the global-catalog vs per-user scope distinction must be inferred from 'Vital supports'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the discovery call for the catalogue of available providers, but there is no statement of when to use it versus vital_get_user_connected_providers or any prerequisites. No exclusions or alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vital_list_usersList usersA
Read-only
Inspect

List all Vital users in your team, paginated. Vital API: GET /v2/user.

NameRequiredDescriptionDefault
limitNoMax users to return.
offsetNoPagination offset.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this is a safe read, so the description's burden is lighter. It usefully adds that results are paginated and maps to GET /v2/user, but discloses nothing about auth scope, rate limits, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero padding, and the core purpose is front-loaded before the endpoint reference. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with fully documented parameters and no output schema, this covers what an agent needs: what is listed, the scope (your team), and that paging applies. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 schema already carries full parameter meaning. The description's 'paginated' only gestures at these parameters and adds no format or default details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all Vital users in your team') plus the operation's scope, which implicitly separates it from vital_get_user (single user) and vital_create_user. It stops short of naming an alternative sibling explicitly, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the bulk-listing tool versus vital_get_user or vital_resolve_user, but the description never states when to prefer it or any exclusions. No prerequisites or conditions are given.

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_idA
Read-only
Inspect

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}.

NameRequiredDescriptionDefault
client_user_idYesYour own stable id for the user.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares this as a safe read, so the description's 'Look up' adds no safety information. It contributes the underlying endpoint (GET /v2/user/resolve/{client_user_id}) and the ownership semantics of the id, but says nothing about behavior when the id is unresolved or about rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the purpose front-loaded and the identifying key emphasized by parenthetical. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with annotations carrying the safety profile and no output schema, the definition covers what an agent needs to select and invoke it. The only minor gap is not hinting at the returned user payload, which is acceptable given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter, so the schema already documents client_user_id. The description's restatement '(the stable id you assigned)' mirrors the schema text and adds no new syntax or format detail, matching the baseline-3 case where the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up), resource (Vital user), and the identifying key (client_user_id). It implicitly distinguishes itself from the sibling vital_get_user by emphasizing 'your own client_user_id', but never names the alternative or makes the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(the stable id you assigned)' implies you use this when you hold a client_user_id, but there is no explicit when/when-not guidance and no routing to vital_get_user or vital_list_users. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to Oura Ring health and activity data, including sleep, readiness, activity, stress, SpO2, resilience, workouts, sessions, and heart rate via the Oura API v2.
    30 PyPI
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables read-only access to your own Withings health data through a personal developer app, exposing body measurements, blood pressure, daily activity, sleep summaries, and linked devices for natural-language queries.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to Garmin Connect health and activity data, including daily summaries, sleep, heart rate, stress, Body Battery, HRV, training readiness, activities, and devices.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables MCP clients to query read-only Oura health data—readiness, sleep, HRV, activity, stress, heart rate and tags—through combined daily overviews, multi-day trends and aggregated heart-rate series. Authentication stays local via OAuth with PKCE, graceful handling of unavailable data types, and an optional sandbox of public sample data.
    6
    14
    603 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.