Skip to main content
Glama

One-command install with Delx Wellness for Hermes: npx -y delx-wellness-hermes setup — preconfigures this connector alongside the rest of the wellness catalog.

Or wire it standalone into Claude Desktop / Cursor / OpenClaw / any MCP client — see the install section below.


HTTP (v2 stateless)

Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:

npx -y eight-sleep-mcp-unofficial --http
# GET  http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp   (sessionless)

Env: EIGHT_SLEEP_MCP_HOST, EIGHT_SLEEP_MCP_PORT, EIGHT_SLEEP_MCP_TRANSPORT=http.

Local-first MCP server that connects AI agents to your Eight Sleep pod — sleep sessions, temperature program, alarms, adjustable base — with an explicit mutation gate for write actions.

Unofficial project. Not affiliated with, endorsed by, or supported by Eight Sleep, Inc. Eight Sleep is a trademark of its respective owner. Use this only with your own Eight Sleep account.

Eight Sleep does not publish a stable public API. This package talks to the same private endpoints (auth-api.8slp.net, client-api.8slp.net, app-api.8slp.net) the mobile app uses, following the path well documented by upstream community projects (lukas-clarke/eight_sleep, mezz64/pyEight, steipete/eightctl).

Part of Delx Wellness — a registry of local-first wellness MCP connectors.

If this connector helps your agent workflow, please star the repo. Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first wellness infrastructure.

Related MCP server: Polar MCP

Why this exists

Eight Sleep ships great sleep telemetry — nightly score, presence intervals, tnt, smart-temperature schedule — but it lives inside a closed iOS/Android app with no public API. Bringing it into your agent today means reverse-engineering OAuth, juggling token refresh, normalizing endpoint shapes, and handling timezone quirks.

This package does all of that locally, exposes Eight Sleep through the Model Context Protocol, and lets any MCP-compatible agent read your sleep context (and write pod commands, if you opt in) with one config snippet. Credentials and tokens stay on your machine.

Setup in 60 seconds

npx -y eight-sleep-mcp-unofficial setup   # interactive: email + password
npx -y eight-sleep-mcp-unofficial login   # persists the auth token
npx -y eight-sleep-mcp-unofficial doctor  # verifies you're ready

Then add this to your MCP client config:

{
  "mcpServers": {
    "eight_sleep": {
      "command": "npx",
      "args": ["-y", "eight-sleep-mcp-unofficial"]
    }
  }
}

For Claude Desktop, run setup --client claude and the snippet is written for you.

Try it with your agent

Three things to ask first:

Use eight_sleep_connection_status to check setup, then run eight_sleep_get_me.
Tell me what device you find.
Call eight_sleep_get_trends for the last 7 days, response_format=json.
What's my best night and worst night, and why?
Call eight_sleep_get_temperature. Summarize the current smart schedule
(bedtime, initial sleep, final sleep) and tell me if I should tune it.

Data availability

This package talks to the Eight Sleep mobile-app API. It does not access continuous biometric sensor streams or BLE.

Data

Tool

Source

User & device

eight_sleep_get_me, eight_sleep_get_user, eight_sleep_get_current_device

client-api.8slp.net /users/...

Temperature program

eight_sleep_get_temperature

app-api.8slp.net /v1/users/{id}/temperature

Sleep trends

eight_sleep_get_trends

client-api.8slp.net /users/{id}/trends

Alarms

eight_sleep_get_alarms

app-api.8slp.net /v2/users/{id}/alarms

Adjustable base

eight_sleep_get_base

app-api.8slp.net /v1/users/{id}/base

Workflow tools

Tool

What it does

eight_sleep_nightly_summary

Multi-night summary: best night, worst night, mean score, nights under 70 / over 85 — one call instead of post-processing raw get_trends.

eight_sleep_wellness_context

Returns a normalized delx-wellness-context/v1 payload so other Delx Wellness tools (Nourish, Exercise Catalog, Telegram coaches) can read sleep context without knowing the Eight Sleep API.

Mutation tools (write gate)

Off by default. To enable, re-run setup with --allow-mutations or enable EIGHT_SLEEP_ALLOW_MUTATIONS. Do not put the assignment in default MCP snippets.

Action

Tool

Set heating level

eight_sleep_set_temperature

Turn side on/off

eight_sleep_set_side

Toggle away mode

eight_sleep_set_away_mode

Snooze alarm

eight_sleep_snooze_alarm

Dismiss alarm

eight_sleep_dismiss_alarm

When the gate is off, mutation tools return an explicit mutations disabled error so agents can detect it and ask the user to opt in.

Privacy

  • Credentials stored in ~/.eight-sleep-mcp/config.json with chmod 600.

  • Auth tokens stored in ~/.eight-sleep-mcp/tokens.json with chmod 600.

  • Sensitive fields (email, device serial, shipping address, payment last-four) are redacted from tool responses by default.

  • EIGHT_SLEEP_PRIVACY_MODE:

    • summary — minimal fields only.

    • structured (default) — preserves complete nested sleep fields and future upstream additions while redacting identifiers.

    • raw — full upstream payload (debugging only).

Trend requests validate real YYYY-MM-DD dates, range order and IANA timezone names before any network call.

Call eight_sleep_privacy_audit at any time to inspect the current posture without exposing secrets.

Environment variables

Var

Purpose

EIGHT_SLEEP_EMAIL

Account email.

EIGHT_SLEEP_PASSWORD

Account password.

EIGHT_SLEEP_ALLOW_MUTATIONS

Enable write tools (keep unset in default snippets).

EIGHT_SLEEP_PRIVACY_MODE

summary / structured / raw.

EIGHT_SLEEP_CACHE

sqlite to enable on-disk response cache.

EIGHT_SLEEP_TOKEN_PATH

Override token storage path.

EIGHT_SLEEP_CLIENT_ID / EIGHT_SLEEP_CLIENT_SECRET

Override Android-app credential defaults (advanced).

Stability

Eight Sleep changes mobile-app endpoints without notice. This connector tracks upstream community projects (lukas-clarke/eight_sleep, steipete/eightctl, mezz64/pyEight) for breakage signals. If a tool starts returning 4xx unexpectedly, check those repos and the project issues for the latest known-good shape.

Credits

📧 Contact & Support

License

MIT — see LICENSE.

Skill or MCP

Same package, two doors. MCP registers tools on stdio/HTTP. The skill can drive the same tools through the CLI when the client has no MCP:

npx -y eight-sleep-mcp-unofficial call eight_sleep_connection_status --json '{}'

Copy skill/SKILL.md into your agent skills dir.

Available Tools

26 tools
eight_sleep_agent_manifestEight Sleep Agent ManifestB
Read-onlyIdempotent

Machine-readable install, runtime and client guidance for AI agents operating the Eight Sleep MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNogeneric
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
authYes
linksYes
clientYes
hermesYes
packageYes
projectYes
mcp_nameYes
unofficialYes
agent_rulesYes
mutation_toolsYes
standard_toolsYes
troubleshootingYes
recommended_first_callsYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds minimal behavioral context beyond that—it frames the tool as providing guidance but does not describe what kind of guidance, whether it is static or dynamic, or any dependencies. It does not contradict the annotations, and the bar is lower because annotations cover the key safety traits.

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?

The description is a single clear sentence that front-loads the key attribute 'Machine-readable' and quickly lists the content areas: install, runtime, and client guidance. It avoids redundancy and wasted words. It could be slightly more explicit with a verb, but overall it is well-sized.

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?

Given the low complexity (2 optional enum parameters) and the presence of an output schema plus annotations, the description is mostly adequate for a simple informational manifest. However, it lacks guidance on how an agent should use this tool in a workflow—e.g., when to call it, how it relates to sibling discovery tools, or what 'operating the Eight Sleep MCP' implies. A bit more context would be needed for first-time agents.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for explaining parameters, but it does not mention client or response_format at all. The parameter names and enums are self-explanatory to some extent (client selects the AI client, response_format selects markdown vs JSON), but no guidance is provided on how to choose them or what effect they have on the returned manifest.

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 clearly identifies the tool as a resource for install, runtime, and client guidance for AI agents working with the Eight Sleep MCP. The phrase 'Machine-readable guidance' conveys a specific purpose and differentiates it from data retrieval or mutation tools. However, it lacks a strong imperative verb like 'retrieve' or 'provide,' and it does not explicitly distinguish itself from sibling tools such as eight_sleep_capabilities.

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 use this tool versus alternatives like eight_sleep_capabilities or eight_sleep_connection_status. The description does not state that it is the first tool to consult for setup, or that it should not be used for runtime data. An agent would have to infer its role from the title and context.

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

eight_sleep_cache_statusEight Sleep Cache StatusA
Read-onlyIdempotent

Show optional local SQLite cache status. Enable with EIGHT_SLEEP_CACHE=sqlite or EIGHT_SLEEP_CACHE=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
enabledYes
entriesYes
newest_cached_atNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds behavioral context beyond that: the cache is local SQLite and optional, and it specifies how to enable it. This gives the agent useful operational context without contradicting 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.

Conciseness5/5

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

The description is two short sentences, with the core action front-loaded and the activation detail right behind it. Every word earns its place; there is no redundancy or filler.

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 status tool with an output schema and read-only annotations, the description covers the essential context: what the tool shows and how the cache is enabled. A minor omission is not specifying the tool's behavior when the cache is not enabled, but that is likely covered by the output schema.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the single response_format parameter at all. It therefore adds no semantic meaning beyond the enum and default already present in the schema. With low coverage, the description was expected to compensate, but it does not.

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?

The description opens with 'Show optional local SQLeite cache status', a specific verb and resource that clearly identifies the operation. None of the 24 sibling tools mention cache, so it is immediately distinguishable. The activation hint further clarifies that this tool reports on an optional cache subsystem.

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

Usage Guidelines4/5

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

The description states the cache is optional and gives the exact environment variable values that enable it, making it clear when this tool is applicable. It does not provide explicit when-not-to-use guidance or alternatives, but no sibling tool covers cache status, so the context is sufficiently clear.

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

eight_sleep_capabilitiesEight Sleep MCP CapabilitiesA
Read-onlyIdempotent

Explain supported Eight Sleep data, mutation gate, privacy modes, and project links. Does not call Eight Sleep or expose secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
creatorYes
projectYes
mcp_nameYes
mutationsYes
auth_modelYes
unofficialYes
api_boundaryYes
privacy_modesYes
supported_dataYes
contribution_pathsYes
recommended_agent_flowYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond those hints: it makes no external API call and exposes no secrets, which is meaningful for an agent deciding whether this tool is safe to invoke.

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?

A single front-loaded sentence covers the tool's purpose and its key safety caveats without wasted words. Every clause 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 an informational capabilities tool with one optional parameter, strong annotations, and an output schema, the description is complete. It communicates what the tool covers and the absence of side effects; return format details are already supplied by the 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?

The only parameter, response_format, is fully specified by the schema through its enum values ('markdown'/'json') and default. The description does not mention the parameter, so it adds no parameter-level guidance, but the schema already carries the semantic load for this optional, self-describing parameter.

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 ('Explain') with concrete subjects: supported Eight Sleep data, mutation gate, privacy modes, and project links. It also distinguishes itself by explicitly saying it does not call Eight Sleep or expose secrets, separating it from the many data/action siblings.

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

Usage Guidelines4/5

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

The description frames this as a meta/capabilities tool, so an agent can infer it is for orientation and explanation rather than live operations. It does not explicitly name alternative sibling tools or define when not to use it, so it misses the full explicit routing.

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

eight_sleep_connection_statusEight Sleep Connection StatusA
Read-onlyIdempotent

Check env, local config, token file, Node version, privacy mode and mutation gate. Does not call Eight Sleep or expose secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNogeneric
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nodeYes
cacheYes
tokenYes
clientNo
configYes
next_stepsYes
missing_envYes
privacy_modeYes
required_envYes
mutations_enabledYes
ready_for_eight_sleep_apiYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond annotations by stating the tool does not call Eight Sleep and does not expose secrets, which are important safety traits. It also lists specific local checks, giving the agent a clearer behavioral model without contradicting any annotation.

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?

The description is a single sentence that efficiently aggregates all key actions and non-behaviors. It is front-loaded with the verb 'Check' and wastes no words. The negative constraints are embedded concisely, making it easy for an agent to parse quickly.

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 a rich output schema and strong annotations, the description covers core purpose and safety traits, but it leaves out usage context and parameter semantics. The 'client' parameter is unexplained and the description does not clarify what 'mutation gate' or 'privacy mode' mean in practice. Overall, it is adequate but has clear gaps in guiding an agent on when to use it and how to configure it.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It does not mention 'client' or 'response_format' at all. While the enums and defaults provide some structure, the semantic purpose of the 'client' parameter is left entirely unexplained, and the description offers no help in choosing values or understanding their effect.

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?

The description clearly states the tool's purpose with the verb 'Check' and enumerates specific resources: env, local config, token file, Node version, privacy mode, and mutation gate. It distinguishes itself from sibling tools by explicitly noting it does not call Eight Sleep or expose secrets, which clarifies it is a local diagnostic rather than an API interaction.

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 description implies usage for local environment verification and explicitly states it does not call Eight Sleep, but it does not provide explicit when-to-use or when-not-to-use guidance compared to alternatives. Sibling names exist, but no routing logic is given, so the agent must infer the appropriate context.

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

eight_sleep_data_inventoryEight Sleep Data InventoryA
Read-onlyIdempotent

Inventory supported Eight Sleep domains, mutation tools, and recommended first calls. Does not call Eight Sleep APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
linksYes
notesYes
sourceYes
totalsYes
mcp_nameYes
mutationsYes
categoriesYes
unofficialYes
first_toolsYes
api_boundaryNo
generated_atYes
privacy_modesYes
data_access_modelYes
recommended_agent_flowYes

TDQS

A4.4/5.0
Behavior5/5

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

The description adds a key behavioral fact beyond the readOnlyHint and idempotentHint annotations: the tool does not call any Eight Sleep APIs. This is valuable because read-only could still imply external calls; the description removes that ambiguity. It also advertises that the tool offers recommendations, which is useful context for the agent.

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 no fluff. The primary purpose is front-loaded, and the crucial no-API-call qualifier follows immediately. Every word 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 simple inventory tool with one optional parameter, a full output schema, and annotations declaring it read-only, idempotent, and non-destructive, the description covers everything needed: what it inventories, that it provides recommended first calls, and that it has no external side effects. Nothing material is missing.

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

Parameters2/5

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

The schema description coverage is 0%, and the description does not mention the response_format parameter at all. Although the enum values (markdown/json) and default are self-explanatory, the description provides no guidance about which format to choose or how the parameter affects output, so it fails to compensate for the low schema coverage.

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?

The description uses a specific verb ('Inventory') and names the resource: supported Eight Sleep domains, mutation tools, and recommended first calls. It also explicitly distinguishes itself from API-calling siblings by stating 'Does not call Eight Sleep APIs,' making its role as a metadata/inventory tool unmistakable.

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

Usage Guidelines4/5

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

The description clearly implies use when an agent needs an overview of supported domains, mutation tools, or recommended starting points. The explicit exclusion 'Does not call Eight Sleep APIs' tells the agent this is not for data retrieval or mutation, though it does not name specific sibling alternatives or provide explicit when-to-use/when-not-to-use language.

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

eight_sleep_dismiss_alarmDismiss Eight Sleep AlarmA
Destructive

Dismiss an actively ringing alarm. Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
alarm_idYesEight Sleep alarm id from eight_sleep_get_alarms.
response_formatNomarkdown
explicit_user_intentNoMust be true after the user explicitly asked for this write. Combined with EIGHT_SLEEP_ALLOW_MUTATIONS=true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
noteNo
methodYes
endpointYes

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context by disclosing the gating requirements (explicit user intent and the mutation flag), which the agent must verify before invoking, and also warns that it only acts on an actively ringing alarm. It does not contradict the annotations, and the added gating info meaningfully extends what the structured fields alone would tell the agent.

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?

The description is two terse sentences, front-loaded with the core action followed by the gating constraint. Every clause earns its place and there is no filler or repeated title information.

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 an output schema, safety-relevant annotations, and only four simple parameters, the description covers the essential purpose and invocation prerequisites. What is missing is sibling routing (when to dismiss vs snooze) and the behavioral consequence of dismissing, so the guidance is adequate but has a clear 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 50%, with alarm_id and explicit_user_intent already described in the schema itself. The description reinforces the explicit_user_intent gating condition but adds nothing about user_id or response_format, which remain undocumented in both schema and description. It adds a small amount of meaning beyond the schema but does not fully compensate for the undocumented half of the parameters.

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?

The description states a specific verb ('Dismiss') and a clearly scoped resource ('an actively ringing alarm'), so an agent immediately knows the action and its precondition. The action also distinguishes it from the sibling eight_sleep_snooze_alarm by naming a different operation, so no schema inspection is needed for basic differentiation.

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 gating clause ('Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true') tells the agent the conditions required for the call to succeed, and 'actively ringing' implies when it applies. However, it never explicitly states when NOT to use this tool or points to the sibling snooze_alarm as the alternative for a ringing alarm that should be postponed, leaving routing to inference.

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

eight_sleep_efficiencyEight Sleep Sleep EfficiencyA
Read-onlyIdempotent

v0.2.2 — Sleep efficiency calculator. For each of the last N nights (default 7), computes time_in_bed_minutes (from presenceDuration), time_asleep_minutes (from sleepDuration), efficiency_pct = (asleep / in_bed) * 100, and efficiency_band (excellent ≥85, good 75-84, fair 65-74, poor <65). Returns nights_analyzed, mean / median / min-night / max-night efficiency, a nights_by_band breakdown, per_night array, and natural-language observations (mid-week drop, all-nights-same-band, single-night dip > 15 points below mean) ONLY when supported by the data. Reuses the existing /v1/users/{id}/trends payload — no extra API calls. Graceful degradation when upstream omits presenceDuration / sleepDuration (returns nights_analyzed: 0 with a clarifying note).

ParametersJSON Schema
NameRequiredDescriptionDefault
nightsNoNumber of recent nights to analyze. Default 7.
timezoneNoIANA timezone for grouping nightly records. Default UTC.UTC
response_formatNomarkdown

TDQS

A4.5/5.0
Behavior5/5

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

Despite annotations already declaring readOnlyHint, idempotentHint, and destructiveHint=false, the description adds substantial behavioral detail: the exact efficiency formula, band thresholds, conditional natural-language observations, and graceful degradation when upstream fields are missing. This goes well beyond what annotations alone communicate.

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?

The description is dense but every clause earns its place: the formula, band thresholds, output fields, conditional observations, reuse of the payload, and graceful degradation are all present without filler. The core purpose is front-loaded and structure follows logically.

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?

With no output schema, the description fully enumerates the return fields and edge-case behavior, which is essential for an agent anticipating tool results. It also covers the practical concern of extra API calls and missing upstream data, making the description complete for this tool's complexity.

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 67%, and the description reinforces the `nights` default and purpose but does not add meaningful semantics for `timezone` or `response_format`. The schema already describes timezone adequately, and response_format is self-explanatory from its enum, so the description neither significantly compensates nor creates gaps.

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?

The description opens with 'Sleep efficiency calculator' and immediately specifies the exact computation: time_in_bed_minutes, time_asleep_minutes, efficiency_pct, and efficiency_band. It clearly distinguishes this tool as a derived analysis layer over the trends payload, not just another raw data getter among the siblings.

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

Usage Guidelines4/5

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

Provides clear context: it analyzes the last N nights, defaults to 7, and reuses the existing /v1/users/{id}/trends payload with no extra API calls. It stops short of explicitly naming alternative tools for when this analysis is or isn't appropriate, so it misses the full when/when-not comparison.

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

eight_sleep_get_alarmsGet Eight Sleep AlarmsA
Read-onlyIdempotent

Return the list of configured alarms and the recommended next alarm.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoEight Sleep user id. Defaults to the authenticated user (from stored token).
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the detail that the response includes both configured alarms and a recommended next alarm, but it does not otherwise disclose behavioral traits such as auth requirements or output format specifics.

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?

A single front-loaded sentence states the complete purpose with no filler or repetition of the title. Every word contributes.

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 simple read-only getter, the description, parameter schemas, annotations, and output schema together cover the needed information. Return values are covered by the output schema, so the description does not need to explain them further.

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?

Two of three parameters have schema descriptions, and response_format is self-explanatory with its enum and default. The tool description itself adds no parameter-level semantics, so it stays at the baseline rather than adding value 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?

The description uses a specific verb with a concrete resource: 'Return the list of configured alarms and the recommended next alarm.' This clearly identifies what the tool retrieves and differentiates it from alarm-management siblings like eight_sleep_snooze_alarm or eight_sleep_dismiss_alarm.

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 intended use is implied by the stated return value: an agent should call this when it needs the configured alarms or the recommended next alarm. However, the description does not explicitly name alternatives or give a when-not-to-use condition, so some inference is required.

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

eight_sleep_get_baseGet Eight Sleep Adjustable BaseA
Read-onlyIdempotent

Return adjustable-base state: leg angle, torso angle and preset.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoEight Sleep user id. Defaults to the authenticated user (from stored token).
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by saying 'Return' rather than 'change' and adds the concrete state fields returned. It does not describe side effects because there are none.

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?

A single sentence front-l-loads the action and the exact payload with zero redundancy. Every word contributes information.

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?

The tool has no required parameters, annotations declare it safe and idempotent, and an output schema exists, so the absence of return-type detail in the description is acceptable. The only minor gap is no mention of how 'preset' is represented, which the output schema covers.

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?

The description does not mention parameters, but the schema provides clear descriptions for user_id (defaults to authenticated user), privacy_mode (override with default), and response_format (default markdown). Since the schema is informative, the description adds no extra meaning but the agent can nevertheless invoke the tool correctly.

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?

The description opens with the verb 'Return' and names the specific resource, 'adjustable-base state', plus the exact fields delivered ('leg angle, torso angle and preset'). This clearly distinguishes it from sibling getters like eight_sleep_get_temperature and eight_sleep_get_current_device.

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 description does not explicitly state when to prefer this over alternatives, but the resource name and description make the use case obvious: retrieve the current adjustable-base configuration. There are no overlapping sibling tools for this resource, so an explicit exclusion is not strictly necessary.

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

eight_sleep_get_current_deviceGet Current Eight Sleep DeviceA
Read-onlyIdempotent

Return the bed side currently assigned to the user (solo/left/right).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoEight Sleep user id. Defaults to the authenticated user (from stored token).
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

TDQS

A3.9/5.0
Behavior3/5

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

The readOnlyHint, idempotentHint, and destructiveHint annotations already cover the safety profile, so the description does not need to restate those. It adds the 'currently assigned' nuance and the allowed values, but it does not disclose additional behavior such as default user resolution or output shape; those are left to the schema and output schema.

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?

A single sentence that leads with the action and resource, followed by a compact parenthetical enumerating the possible values. There is no redundant wording or filler.

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 simple read-only lookup with rich annotations, optional parameters documented in the schema, and an output schema, the description is sufficient for an agent to invoke the tool correctly. No critical operational constraint or prerequisite 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?

The schema already documents user_id and privacy_mode with descriptions; response_format lacks a textual description but has a clear enum and default, so its semantics are still decipherable. The description itself adds no parameter-level meaning and does not fully compensate for the 67% schema description coverage, but the gap is minor.

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?

The description uses a specific verb ('Return') and names the exact resource ('bed side currently assigned to the user') with the possible values (solo/left/right) explicitly listed. This clearly distinguishes it from the many get_* sibling tools, even though it does not name a sibling directly.

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 description implies the tool is for retrieving the current bed-side assignment, but it does not explicitly state when to use it versus alternatives like eight_sleep_set_side or eight_sleep_get_base. The usage context is inferable from the purpose statement, but no direct guidance is provided.

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

eight_sleep_get_meGet Eight Sleep Profile (me)B
Read-onlyIdempotent

Return the authenticated user's Eight Sleep profile and assigned devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

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, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the useful scope of 'assigned devices' but does not disclose additional behavioral details such as caching, privacy overrides, or output variability.

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?

The description is a single, front-loaded sentence with no filler. It states the action and the resource immediately, and every word contributes to the tool's core meaning.

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, zero-required-parameter tool with rich annotations and an output schema, the description is largely sufficient. The main completeness gap is the lack of routing guidance among the many sibling getter tools, but that gap is already accounted for in usage_guidelines.

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

Parameters2/5

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

The description does not mention either parameter. Schema coverage is only 50%: privacy_mode has a clear description, but response_format is only documented by its enum and default. Because coverage is below the high threshold and the description provides no compensating parameter guidance, the agent is left to infer response_format semantics.

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 uses a specific verb and resource: it returns the authenticated user's profile and assigned devices. The '(me)' in the title and 'authenticated user' in the description help distinguish this from more general profile or device tools, though it does not explicitly name a sibling to avoid confusion.

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 guidance is given about when to use this tool versus sibling tools like eight_sleep_profile_get, eight_sleep_get_user, or eight_sleep_get_current_device. The description only states what the tool does, not when it should be preferred or avoided.

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

eight_sleep_get_temperatureGet Eight Sleep TemperatureA
Read-onlyIdempotent

Return current heating level, smart-schedule levels and side on/off state.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoEight Sleep user id. Defaults to the authenticated user (from stored token).
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to re-state safety. It adds that the tool returns current state and enumerates the data groups, but does not disclose details like privacy_mode defaults or response format. This is adequate but not rich behavioral context.

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?

The description is a single focused sentence with no filler. It front-loads the action and immediately states what data is returned, making it easy to scan.

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 getter with no required parameters and an output schema present, the description covers the only essential call-decision information. Optional parameters and return structure are already provided through the schema and annotations, so nothing critical is missing for invoking it correctly.

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?

The description adds no parameter-specific meaning, but the schema already documents user_id and privacy_mode with descriptions; only response_format lacks one. With 67% schema coverage and all parameters optional, the description does not need to compensate much, but it contributes nothing either.

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 uses a clear verb ('Return') and names three concrete data elements: current heating level, smart-schedule levels, and side on/off state. This distinguishes it from other temperature-related tools like set_temperature or temperature_trend, though it does not explicitly name any sibling.

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 word 'current' implies this is for reading the present heating/side state, and siblings like set_temperature and set_side make the contrast inferable. However, there is no explicit when-to-use or when-to-use-instead guidance, so the agent must infer usage from context.

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

eight_sleep_get_userGet Eight Sleep UserA
Read-onlyIdempotent

Return Eight Sleep profile data for a specific user_id (defaults to authenticated user).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoEight Sleep user id. Defaults to the authenticated user (from stored token).
privacy_modeNoOptional per-call payload privacy override. Defaults to EIGHT_SLEEP_PRIVACY_MODE or structured.
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
endpointYes
privacy_modeYes

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered and the description does not contradict it. The description adds the default-user behavior as context, but that duplicates the user_id parameter description and discloses nothing about payload shaping by privacy_mode, response content, or other runtime 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?

A single front-loaded sentence with no filler: the verb, resource, and scoping constraint all come first, and the default behavior is the only extra detail. Every word 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 zero-required-param read tool with a present output schema and rich annotations, much is already covered. The clear gaps are the missing sibling differentiation (eight_sleep_get_me / eight_sleep_profile_get) and an explanation of what profile data is returned under each privacy_mode value, both of which an agent would want before invoking.

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 67% (user_id and privacy_mode are described; response_format has only an enum and default). The description restates user_id's defaulting behavior already present in the schema and adds nothing about privacy_mode or response_format, so it compensates little for the undocumented response_format param, though the enum values and default make it largely self-explanatory.

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 uses a specific verb ('Return') and identifies a clear resource ('Eight Sleep profile data') scoped to a user_id with a default behavior. It distinguishes itself from get_me-like siblings only implicitly via the 'specific user_id (defaults to authenticated user)' scoping — it never names a sibling such as eight_sleep_get_me or eight_sleep_profile_get, so an agent must infer the difference.

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 'defaults to authenticated user' phrasing conveys when the tool applies (wanting a specific user's profile or the current user's), but there is no explicit when-not-to-use or alternative routing. With close siblings like eight_sleep_get_me and eight_sleep_profile_get present, the agent gets no guidance to disambiguate between them.

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

eight_sleep_logoutEight Sleep LogoutA
Destructive

Delete the local Eight Sleep token file. Gated by explicit_user_intent: true (requires explicit user intent / consent). Destructive local-only mutation — clears tokens on disk; not gated by EIGHT_SLEEP_ALLOW_MUTATIONS.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown
explicit_user_intentNoPass true only after the user explicitly asked to save, log, set, or delete this personal wellness profile data.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes
token_pathYes
local_tokens_clearedYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds crucial specifics: the exact artifact destroyed (token file on disk), the scope (local-only), the consent requirement, and the exemption from the environment mutation flag. This fully informs the agent of the behavioral and safety profile.

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?

The description is two tight sentences with the primary action front-loaded. Every clause adds meaningful information, and there is no redundant or filler language.

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 destructive local mutation, the description covers what is deleted, the local scope, the consent gate, and the safety flag interaction. It does not describe output details, but an output schema exists, so that responsibility is already handled.

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?

The schema already describes explicit_user_intent, and the description reinforces its role in gating the action. However, response_format has no description in the schema and is not mentioned in the description either; the enum values are self-explanatory, so the partial 50% coverage is only partially compensated.

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?

The description states a concrete action and resource: 'Delete the local Eight Sleep token file.' This unambiguously identifies the logout behavior and distinguishes it from the many get/set/profile siblings by specifying exactly what is affected.

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

Usage Guidelines4/5

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

The description clearly indicates when the tool is permitted: it requires explicit user intent/consent and is not gated by EIGHT_SLEEP_ALLOW_MUTATIONS. While it does not explicitly name alternative tools, no sibling tool offers the same token-clearing logout function, so the usage context is sufficiently clear.

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

eight_sleep_nightly_summaryEight Sleep Nightly SummaryA
Read-onlyIdempotent

Compute a multi-night sleep summary (best night, worst night, mean score, nights under 70 / over 85) from Eight Sleep trend data. One call replaces post-processing raw get_trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
timezoneNoUTC
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
generated_atYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. Beyond that, the description clarifies that this tool performs aggregation/derivation from trend data rather than simply returning raw records, and it names the upstream data source. This adds meaningful behavioral context without contradicting 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.

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the tool's purpose and output specifics, then adds the key sibling distinction. Every sentence 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 simple, zero-required-parameter tool with rich annotations and an output schema, the description covers the core purpose, the computed outputs, and the relationship to get_trends. It is slightly incomplete on timezone semantics and response format, but the schema's defaults and enum constraints give an agent enough to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the three parameters (days, timezone, response_format). It offers only indirect hints like 'multi-night' and the score thresholds, which do not compensate for the missing 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?

The description uses a specific verb ('Compute') with a clear resource ('multi-night sleep summary') and enumerates exact outputs: best night, worst night, mean score, and counts of nights below 70 / above 85. It also distinguishes itself from the sibling get_trends by explicitly stating it replaces post-processing of that raw tool.

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

Usage Guidelines4/5

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

The description names get_trends as the alternative and explains that this tool eliminates the need to post-process raw trend data. It provides clear context for when to prefer this tool, though it does not explicitly state when not to use it (e.g., if raw individual night data is needed).

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

eight_sleep_onboardingEight Sleep onboardingA
Read-onlyIdempotent

Returns the 11-question onboarding flow for the shared Delx Wellness profile (en or pt-BR). The agent should ask these questions next so Eight Sleep (and the rest of the wellness stack) can personalize responses — non-secret data only, stored at ~/.delx-wellness/profile.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoen
response_formatNomarkdown

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive. The description adds meaningful extra context: the flow is for non-secret data and the resulting data is stored at ~/.delx-wellness/profile.json. This gives the agent useful behavioral awareness beyond the structured hints.

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?

A single, well-structured sentence packs the purpose, usage timing, data sensitivity, and storage location into one go. No wasted words; 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 simple read-only, parameter-light tool, the description covers return, usage, locale scope, and data handling. It doesn't detail the exact output shape, but the absence of an output schema is low-risk because the tool's purpose is clear and an agent mainly needs to know to ask these questions.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only clarifies locale ('en or pt-BR'). The response_format parameter is left entirely undescribed; the schema enum provides the only meaning. This is partial compensation at best.

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 ('Returns'), a specific resource ('11-question onboarding flow'), and the exact target profile ('shared Delx Wellness profile'), which distinguishes it from sibling profile and data tools. It is clearly not a tautology and tells an agent exactly what this tool produces.

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

Usage Guidelines4/5

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

Provides clear when-to-use guidance: 'the agent should ask these questions next so ... can personalize responses.' It doesn't explicitly name alternatives to avoid, but the onboarding context and intended follow-up action are unambiguous.

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

eight_sleep_privacy_auditEight Sleep Privacy AuditA
Read-onlyIdempotent

Return local privacy, cache, token-path, env-presence, mutation gate and redaction posture without revealing secret values.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
projectYes
cache_pathYes
token_pathYes
unofficialYes
stdout_safeYes
cache_enabledYes
config_sourceYes
secret_env_varsYes
local_config_pathYes
mutations_enabledYes
local_config_existsYes
raw_payloads_opt_inYes
privacy_mode_defaultYes
required_env_presentYes
redacted_key_patternsYes
local_config_secure_permissionsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds important behavioral context by saying it returns 'local privacy, cache, token-path, env-presence, mutation gate and redaction posture' and explicitly guarantees that it does not 'reveal secret values'. This goes beyond the annotations and clarifies the tool's safety posture without contradicting any hint.

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?

The description is a single focused sentence that front-loads the action and then lists the exact information categories the tool returns. There is no filler, no repetition of the title, and every phrase carries meaning, including the important caveat about not revealing secret values.

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?

Given a simple optional parameter, a rich output schema, and annotations covering read-only/idempotent behavior, the description provides the essential context: what the audit covers and the secret-redaction guarantee. It does not explicitly define the output format or mention when to use this over siblings, but the output schema and the concise scope keep the tool invokable by an agent.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the single response_format parameter or explain how 'markdown' versus 'json' affects the output. The schema's enum and default provide the structural meaning, but the description adds no additional value for choosing between the formats, so it fails to compensate for the parameter documentation gap.

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?

The description names a specific verb ('Return'), a specific resource ('privacy audit'), and enumerates the exact facets it reports: offal privacy, cache, token-path, env-presence, mutation gate, and redaction posture. This distinguishes it from sibling tools like cache_status or connection_status because it covers a broader posture instead of a single status.

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 description implies the tool is for auditing privacy and redaction posture, but it does not explicitly state when to prefer this tool over sibling tools such as eight_sleep_cache_status, eight_sleep_connection_status, or eight_sleep_agent_manifest. There is no when-not-to-use guidance or naming of alternatives, leaving the agent to infer the appropriate context.

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

eight_sleep_profile_getEight Sleep profile getA
Read-onlyIdempotent

Returns the shared Delx Wellness profile (~/.delx-wellness/profile.json). Read-only. Surfaces preferred sleep window, age, goals, and devices so eight_sleep_nightly_summary and bedtime experiments can personalize recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds useful behavioral context: the exact file location, the fields it surfaces, and how downstream tools use it. This goes beyond the structured annotations, though it does not describe failure modes or output-format behavior beyond the schema.

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?

The description is short and front-loaded with the core action and resource. 'Read-only' is somewhat redundant with the annotations, but the overall structure is easy to scan and every remaining sentence adds information about contents or usage.

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 tool with one optional parameter, the description covers the resource, path, contents, and downstream purpose, while the schema covers response_format. It could be stronger on when to choose this instead of other get_* siblings, but it is substantially 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?

Schema-description coverage is 0%, and the description does not mention the response_format parameter. However, response_format is fully defined by its enum and default in the schema, so the paramer is self-explanatory. The description adds no parameter-level meaning but the schema carries the load adequately for this single optional parameter.

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?

The description clearly states a specific verb ('Returns') and resource ('shared Delx Wellness profile (~/.delx-wellness/profile.json)'), and lists the data it surfaces (sleep window, age, goals, devices). It also distinguishes itself from profile_update by emphasizing read-only and from user/device getters by calling out the shared profile.

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?

It identifies downstream consumers (eight_sleep_nightly_summary, bedtime experiments) and implies when the profile data is needed, but it does not explicitly specify when to prefer this over siblings like eight_sleep_get_me or eight_sleep_get_user, nor does it provide exclusion criteria.

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

eight_sleep_profile_updateEight Sleep profile updateA
Idempotent

Persist a partial patch to the shared Delx Wellness profile (~/.delx-wellness/profile.json). Requires explicit_user_intent: true. Rejects any field whose key looks like a credential (oauth/token/secret/password/cookie/refresh/api_key/bearer/credential/session_id) or whose value matches credential-shaped patterns (JWT, Bearer token, sk_live_, sk-proj-, xoxb-, github_pat_).

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYesPartial WellnessProfileDocument patch. Top-level keys: profile, goals, devices, training, nutrition, preferences, safety, notes.
response_formatNomarkdown
explicit_user_intentNoPass true only after the user explicitly asked to save, log, set, or delete this personal wellness profile data.

TDQS

A4.4/5.0
Behavior4/5

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

The description adds useful behavioral details beyond the annotations: it persists to a specific file, applies a partial patch, requires explicit user intent, and actively rejects credential-shaped data. This is consistent with annotations like idempotentHint=true and destructiveHint=false.

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 front-load the action and target, then add the key safety constraints. Every sentence earns its place with no redundant wording.

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 nested-patch tool without an output schema, the description covers the target file, patch semantics, explicit-intent gating, and credential rejection. A minor gap is the absence of any mention of return values or error behavior, but response_format and idempotency are covered by the schema and annotations.

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 description enriches the patch parameter by explaining it is a partial patch persisted to a specific profile path and that credential-like input is rejected. The schema already documents the allowed top-level keys and explicit_user_intent semantics. response_format gets no additional description, but schema coverage is decent and the key parameter is well explained.

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?

The description uses a specific verb ('Persist') and names the exact resource with its file path (~/.delx-wellness/profile.json), clarifying it is a partial patch to the wellness profile. This distinguishes it from sibling tools that read data or control device settings like eight_sleep_set_temperature.

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

Usage Guidelines4/5

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

The description clearly states a prerequisite: explicit_user_intent must be true, which tells the agent when calling is appropriate. It also states an exclusion: fields with credential-like keys or values are rejected. It does not name alternative sibling tools for specific device updates, but the gating condition provides solid usage guidance.

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

eight_sleep_set_away_modeSet Eight Sleep Away ModeA
Idempotent

Toggle away mode. Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_awayYes
user_idNo
response_formatNomarkdown
explicit_user_intentNoMust be true after the user explicitly asked for this write. Combined with EIGHT_SLEEP_ALLOW_MUTATIONS=true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
noteNo
methodYes
endpointYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish this is a non-read-only, idempotent, non-destructive mutation. The description adds a meaningful behavioral constraint: the mutation is gated by explicit user intent and an environment flag. It does not explain side effects of away mode, but the idempotent and non-destructive hints cover the main safety profile.

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?

The description is two short sentences with no filler. The core action is front-loaded, and the gating condition immediately follows. Every word contributes useful information.

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 boolean setter with an output schema, annotations, and a clear required parameter, the description is mostly sufficient. The main missing context is a brief note on what away mode affects or when user_id would be needed, but the required call path is clear.

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 schema description coverage at 25%, the description partially compensates: 'away mode' clarifies what the is_away boolean controls, and the gating line adds meaning to explicit_user_intent. However, user_id and response_format receive no additional semantic guidance beyond their names and schema definitions, so the compensation is incomplete.

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 action ('Toggle') and resource ('away mode'), which clearly identifies what the tool does and distinguishes it from sibling setters like set_temperature and set_side. However, 'Toggle' is slightly imprecise because the actual parameter is an explicit boolean setter, not a state-flipping toggle.

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 description implies the tool is for enabling or disabling away mode and gives a hard precondition: explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true. It does not explicitly say when to prefer this tool over alternatives or when not to use it, so usage guidance is mostly 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.

eight_sleep_set_sideSet Eight Sleep Side On/OffA
Idempotent

Turn the user's bed side on or off. Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_onYesTurn the side on (true) or off (false).
user_idNo
response_formatNomarkdown
explicit_user_intentNoMust be true after the user explicitly asked for this write. Combined with EIGHT_SLEEP_ALLOW_MUTATIONS=true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
noteNo
methodYes
endpointYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate this is a write (readOnlyHint=false), idempotent, and non-destructive. The description adds value beyond annotations by disclosing the mutation gate requiring explicit user intent and an environment flag, which is meaningful behavioral context the agent needs before invoking.

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, both essential: the first states the action, the second states the gating requirement. No filler, front-loaded action first.

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?

The core action and gate are fully conveyed, and the output schema plus annotations cover the return contract and safety profile. Minor gaps remain: the purpose of user_id and response_format isn't clarified, and behavior when the gate fails isn't described, but these are secondary for a simple boolean toggle tool.

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 50%, with user_id and response_format lacking descriptions in the schema. The tool description reinforces the explicit_user_intent gate but adds no new meaning for is_on, user_id, or response_format beyond what the schema already provides, so it doesn't compensate for the undocumented parameters.

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 and resource: 'Turn the user's bed side on or off.' This is unambiguous and distinct from sibling tools like eight_sleep_set_temperature or eight_sleep_set_away_mode, though it doesn't explicitly name a sibling for differentiation.

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

Usage Guidelines4/5

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

The description provides clear invocation context: the tool is gated by explicit_user_intent=true and EIGHT_SLEEP_ALLOW_MUTATIONS=true, telling the agent the precondition for calling it. It doesn't mention exclusions or alternatives, but the gate condition is actionable guidance.

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

eight_sleep_set_temperatureSet Eight Sleep Temperature LevelA
Idempotent

Set the heating level (-100 .. 100). Optionally set a duration in seconds. Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesHeating level. -100 = coldest, 0 = neutral, 100 = hottest. Eight Sleep clamps client-side.
user_idNo
response_formatNomarkdown
duration_secondsNoOptional duration in seconds. Omit for persistent override.
explicit_user_intentNoMust be true after the user explicitly asked for this write. Combined with EIGHT_SLEEP_ALLOW_MUTATIONS=true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
noteNo
methodYes
endpointYes

TDQS

A4/5.0
Behavior4/5

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

The description adds a meaningful behavioral constraint beyond the annotations: the operation requires explicit_user_intent: true and the environment variable EIGHT_SLEEP_ALLOW_MUTATIONS=true. The annotations already convey readOnly false, idempotent true, and destructive false, so the description's added value is the mutation gate and the duration 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?

The description is extremely concise and front-loaded: it states the action, range, and optional duration first, then the critical gating requirement. Every sentence earns its place and no filler or repeated schema content is present.

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?

Given that the output schema exists, return values need not be documented. Annotations cover safety and idempotence, and the description supplies the main invocation gate and core behavior. It lacks explicit sibling routing and does not explain user_id or response_format, but optional parameters and naming conventions make this adequate for a mutation tool of this complexity.

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?

The description reinforces the level range and optional duration, which are already fairly well documented in the schema. It also clarifies the explicit_user_intent gating, but it adds nothing about user_id or response_format. With schema coverage at 60%, the description provides some value but does not substantially fill the remaining gaps.

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?

The description clearly states the action: set the heating level with an explicit range of -100 to 100, plus an optional duration. This distinguishes it from sibling tools like eight_sleep_get_temperature and eight_sleep_set_side by naming the resource precisely.

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 description implies when to use it (when a user asks to set temperature) and adds a key precondition: it must be gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true. However, it never mentions alternatives or explicitly says not to use it for read operations, leaving some routing to the agent.

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

eight_sleep_snooze_alarmSnooze Eight Sleep AlarmA
Idempotent

Snooze an actively ringing alarm. Gated by explicit_user_intent: true and EIGHT_SLEEP_ALLOW_MUTATIONS=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
alarm_idYesEight Sleep alarm id from eight_sleep_get_alarms.
response_formatNomarkdown
explicit_user_intentNoMust be true after the user explicitly asked for this write. Combined with EIGHT_SLEEP_ALLOW_MUTATIONS=true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
noteNo
methodYes
endpointYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey that this is a mutating, non-destructive, idempotent operation. The description adds valuable behavioral context beyond the annotations by stating the preconditions: the alarm must be actively ringing and the call is gated by explicit user intent plus an environment flag.

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?

The description is two short sentences with no filler. The core action is front-loaded, and the gating requirement is stated separately and clearly.

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?

Given the output schema exists and annotations are present, the description is adequately complete. It states the core action, the precondition, and the authorization gate. It could mention what happens if the alarm is not actively ringing, but the output schema likely covers error cases.

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 50%, and the two most behaviorally important parameters (alarm_id and explicit_user_intent) have descriptions in the schema. The tool description itself does not explain parameters, but the schema covers the critical ones, so the description does not need to fully compensate.

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?

The description states a specific verb ('Snooze') and resource ('an actively ringing alarm'), making the tool's purpose immediately clear. The phrase 'actively ringing' helps distinguish it from related alarm tools such as eight_sleep_dismiss_alarm.

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

Usage Guidelines4/5

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

The description provides clear context: use it to snooze an actively ringing alarm and only when explicit_user_intent is true and EIGHT_SLEEP_ALLOW_MUTATIONS=true. It does not explicitly name alternatives or state when not to use it, but the ringing precondition and gating requirements give solid usage guidance.

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

eight_sleep_temperature_trendEight Sleep Temperature TrendA
Read-onlyIdempotent

Workflow tool: returns the current smart-temperature schedule (bedtime/initial/final level), per-night sleep scores for the last N nights, mean/median/range/most-common for bedtime AND wake temperature settings when the trends payload exposes them, and a correlation note (e.g. 'colder bedtime → higher sleep score') ONLY when 3+ paired nights support |r| >= 0.5. Reuses get_temperature + get_trends data — no extra API calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of recent nights to summarize. Default 7.
timezoneNoIANA timezone for grouping nightly records. Default UTC.UTC
response_formatNomarkdown

TDQS

A4.1/5.0
Behavior5/5

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

The description discloses specific conditional behavior: the correlation note appears only when 3+ paired nights support |r| >= 0.5, and statistics are reported only when the trends payload exposes them. It also states there are no extra API calls, adding value beyond the readOnly and idempotent 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?

The single sentence is information-dense but front-loads the purpose with 'Workflow tool: returns...' and packs conditions into parentheticals. It contains no filler, though splitting it into shorter sentences would improve readability.

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?

The description covers output components, data sources, statistical thresholds, and conditional availability of results, which is strong for a read-only summary tool without an output schema. It does not spell out edge cases like insufficient paired nights or default timezone behavior, but the conditional phrasing implies those cases.

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?

The schema already covers days and timezone with descriptions, and response_format has enum/default values. The description adds some output-level context but does not clarify response_format semantics or the timezone grouping behavior in more detail. With 67% schema coverage, the schema carries the burden adequately, but the description could compensate more.

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?

The description uses a specific verb ('returns') and enumerates concrete resources: the smart-temperature schedule, per-night sleep scores, summary statistics, and a conditional correlation note. It also identifies itself as a workflow reusing get_temperature and get_trends data, which clearly separates it from sibling tools that fetch raw temperature or trend data.

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 description states that it is a workflow tool and that it reuses get_temperature and get_trends data with no extra API calls, implying it is the right choice for consolidated analysis. However, it does not explicitly say when to choose this tool over those raw-data siblings or provide exclusion criteria.

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

eight_sleep_wellness_contextEight Sleep Wellness ContextA
Read-onlyIdempotent

Build a normalized delx-wellness-context/v1 payload from recent Eight Sleep trends so other Delx Wellness tools (nourish, exercise catalog, Telegram coaches) can read sleep context without knowing the Eight Sleep API.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days for Eight Sleep trends.
notesNo
sorenessNo
timezoneNoIANA timezone used by the Eight Sleep API.UTC
injury_flagsNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
sourceYes
windowYes
sorenessYes
sleep_scoreNo
context_typeYes
data_qualityNo
generated_atYes
injury_flagsYes
strain_scoreNo
recovery_scoreNo
telegram_summaryNo
recommended_handoffYes
recent_training_loadYes
context_contract_versionYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide the read-only/idempotent safety profile; the description adds the key behavioral trait that this tool transforms and normalizes trends rather than returning raw data. It discloses that it is a build/compute operation over trends and that its output is intended for downstream tools. No contradiction with annotations.

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?

A single sentence that front-loads the verb, output, and source, then gives the consumer rationale. No filler or repetition of schema details. Every clause 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?

The output schema and rich annotations cover return-value and safety context, and the description explains the tool's role in the ecosystem. However, for a tool with six optional parameters and sparse schema documentation, the description doesn't fully specify how inputs like soreness or injury_flags shape the payload. It is adequate for selection but not fully complete for invocation details.

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

Parameters2/5

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

Only days and timezone have schema descriptions (2 of 6 parameters, ~33% coverage), and the description doesn't explain notes, soreness, injury_flags, or response_format semantics. Soreness and injury_flags are suggestive by name but their effect on the normalized payload is unclear. Since schema coverage is low, the description needed to compensate and did not.

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?

The description states a specific verb ('Build'), an explicit output resource ('delx-wellness-context/v1 payload'), and a source ('recent Eight Sleep trends'). It also names downstream consumers, which differentiates it from sibling Eight Sleep data-access tools like eight_sleep_get_trends. Clear and distinct.

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

Usage Guidelines4/5

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

The description positions the tool as an integration/normalization layer for other Delx tools, implying it should be selected when sleep context is needed in the normalized format rather than raw Eight Sleep API output. It doesn't explicitly exclude direct alternatives or list exhaustive conditions, but the consumer rationale gives clear 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.

TDQS

B3.4/5.0
Disambiguation3/5

Most tools are clearly distinct, but several meta/status tools (capabilities, connection_status, privacy_audit) all report mutation-gate and privacymode info, creating some overlap. Descriptions help differentiate them, but an agent could still be unsure which status tool to call.

Naming Consistency4/5

All tools share the eight_sleep_ prefix and use snake_case consistently. The majority follow get_*/set_* patterns, though a few deviate (profile_get/update instead of get_profile/update_profile) and several noun-only tools (nightly_summary, capabilities, connection_status) are not verb-first.

Tool Count2/5

26 tools is over the heavy threshold, and many are overlapping meta/status helpers (capabilities, connection_status, cache_status, privacy_audit, data_inventory, agent_manifest) that could be consolidated. Several analytic tools (nightly_summary, temperature_trend, efficiency) also overlap in purpose, inflating the count.

Completeness3/5

The surface covers key read/write operations: temperature, side, away, alarms (dismiss/snooze), trends, profile, and basic base get. However, there is no tool to create or update alarms, adjust smart schedules, or set base presets, which are notable gaps for a sleep-device control server.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/davidmosiah/eight-sleep-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server