Polar MCP
The Polar MCP server connects AI agents to your Polar wearable data (training, sleep, Nightly Recharge, HRV/PPI, and more) via the Polar AccessLink API, with a local-first, privacy-focused design — tokens never leave your machine.
Setup & Authentication
Interactive setup/onboarding, OAuth URL generation, code exchange, and token revocation
Tokens stored locally with
0600permissions and never returned by any tool
Diagnostics & Status
Connection status, cache status, privacy audit, capability listing, agent manifest, and demo payloads
Account & Devices
Read user account fields, list registered devices, and view subscription entitlements
Activity & Calendar
List daily activity logs and calendar entries by date range
Sleep & Recovery
Sleep records with evaluation/scoring, sleep/wake vectors, and Nightly Recharge recovery scores
Heart Rate & Physiology
Continuous heart rate samples, pulse-to-pulse (PPI/HRV) intervals, temperature measurements, and skin contact periods
Training
Training sessions, calendar targets, target favorites, and fitness/orthostatic/running test results
Sports & Routes
Available sports, sport profile catalog, user sport profiles, and GPS routes (coordinates redacted by default)
AI-Friendly Summaries
Daily summary, weekly scorecard with trends and recommendations, and normalized wellness context for recommendation engines
Wellness Profile (Cross-Connector)
Read/update a shared Delx Wellness profile and run an 11-question onboarding flow compatible with other Delx connectors
Key Features
Three privacy modes:
summary,structured, orrawGPS redaction by default (only exposed in
rawmode)Pagination and date-range filtering across all list tools
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Polar MCPGet my latest Nightly Recharge data"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ One-command install with Delx Wellness for Hermes:
npx -y delx-wellness-hermes setup— preconfigures this connector and the other 8 in a dedicated Hermes profile.Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop — see the install section below.
HTTP (v2 stateless)
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
npx -y polar-mcp-unofficial --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)Env: POLAR_MCP_HOST, POLAR_MCP_PORT, POLAR_MCP_TRANSPORT=http.
Local-first MCP server that connects AI agents to your Polar training, sleep, Nightly Recharge and continuous-sample data.
Unofficial project. Not affiliated with, endorsed by or supported by Polar Electro Oy. Polar is a trademark of its respective owner. Use this only with your own Polar account and in line with the Polar AccessLink API terms.
Built by David Mosiah for people who use Claude, Cursor, Hermes, OpenClaw or other MCP-compatible agents to think about training load, recovery and endurance - without copy-pasting numbers from Polar Flow.
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: Withings MCP
Why this exists
Polar has one of the deepest training-physiology stacks among consumer wearables - Nightly Recharge, continuous samples, PPI (pulse-to-pulse intervals), training targets, sport profiles, orthostatic and fitness tests. The Polar AccessLink Dynamic API v4 exposes this data, but with 16 fine-grained OAuth scopes and a structure that's harder to navigate than typical consumer APIs.
This package handles the OAuth dance locally, normalizes responses across the v4 endpoints, redacts GPS by default, and exposes Polar through the Model Context Protocol. Tokens never leave your machine.
Setup in 60 seconds
You'll need a Polar AccessLink client (create one here) with redirect URI http://127.0.0.1:3000/callback.
npx -y polar-mcp-unofficial setup # interactive: paste client id + secret
npx -y polar-mcp-unofficial auth # opens browser, captures the OAuth code
npx -y polar-mcp-unofficial doctor # verifies you're readyRecommended scopes (request the ones matching the data you want):
activity:read calendar:read continuous_samples:read devices:read
nightly_recharge:read ppi_data:read profile:read routes:read
skin_contact:read sleep:read sports:read temperature_measurement:read
tests:read training_sessions:read training_targets:read user_subscription:readThen add this to your MCP client config:
{
"mcpServers": {
"polar": {
"command": "npx",
"args": ["-y", "polar-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 polar_connection_status to check setup, then run polar_daily_summary.
Give me a 5-line training brief for today.Call polar_weekly_summary with response_format=json. Identify my biggest
training-load/recovery bottleneck and give me a next-week plan.Use the polar_training_load_investigation prompt, after=2026-04-01.
Walk me through my recent training sessions + Nightly Recharge.Data availability
This package uses the official Polar AccessLink Dynamic API v4. When this README says raw, it means the upstream Polar JSON for a supported endpoint - not raw device sensor streams.
Data | Available | Notes |
Daily activity + calendar | yes | Requires |
Sleep + sleep/wake vectors | yes | Requires |
Nightly Recharge (recovery score) | yes | Requires |
Training sessions + training targets | yes | Requires |
Continuous samples (HR over time) | yes | Requires |
PPI samples (pulse-to-pulse intervals, HRV-relevant) | yes | Requires |
Temperature measurements | yes | Requires |
Skin contact periods | yes | Requires |
Tests (fitness / orthostatic / running) | yes | Requires |
Routes + GPS geometry | opt-in | GPS coordinates redacted unless raw mode |
Sports + sport profiles + devices | yes | Catalog and user metadata |
Live device telemetry | - | Not exposed by Polar AccessLink |
Tools
Start with these:
polar_quickstart- personalized 3-step setup walkthrough that adapts to what's already configuredpolar_connection_status- verify local setup, scopes and readiness before calling Polarpolar_data_inventory— inventory supported data domains, scopes, privacy modes and recommended first calls without calling Polar APIs.polar_demo- synthetic example payloads so agents see the contract before calling the real APIpolar_daily_summary- sleep, activity, Nightly Recharge and training brief for todaypolar_weekly_summary- scorecard, comparison vs prior week, next-week planpolar_wellness_context- Nightly Recharge, sleep and training load in the sharedwellness_contextshape
Auth & diagnostics
polar_capabilities,polar_agent_manifest,polar_privacy_audit,polar_cache_statuspolar_get_auth_url,polar_exchange_code,polar_revoke_access
Account
polar_get_account_data,polar_list_user_devices,polar_list_subscriptions
Shared wellness profile (local, never Polar data)
polar_onboarding,polar_profile_get,polar_profile_update— the Delx Wellness profile shared with the other connectors; stores only what the user typed, never tokens or biomarkers
Activity & sleep
polar_list_activity,polar_list_calendarpolar_list_sleeps,polar_list_sleep_wake_vectors— sleep lists hydrate available dates with the v4sleep-result,sleep-evaluation, andsleep-scorefeatures by defaultpolar_list_nightly_recharge
Heart & physiology (date range)
polar_heart_series— agent-safe-series/v1 bounded HR from continuous samples (prefer this for agents)polar_list_continuous_samples,polar_list_ppi_samplespolar_list_temperature_measurements,polar_list_skin_contacts
Training
polar_list_training_sessions,polar_list_training_targets,polar_list_training_target_favoritespolar_list_tests
Sports & routes
polar_list_sports,polar_list_sport_profile_catalog,polar_list_sport_profilespolar_get_route- GPS coordinates redacted unless raw mode
Prompts
polar_daily_checkin- practical daily training and recovery check-inpolar_weekly_review- review trends across activity, sleep and recoverypolar_training_load_investigation- investigate training sessions + recovery context
Resources
polar://capabilities,polar://agent-manifest,polar://inventorypolar://summary/daily,polar://summary/weeklypolar://account-data,polar://latest/sleep
Privacy & security
OAuth tokens are stored in
~/.polar-mcp/tokens.jsonwith0600permissions and are never returned by tools.The server never prints access or refresh tokens.
POLAR_PRIVACY_MODEdefaults tostructured. Structured mode preserves the complete upstream physiological payload while removing secret/GPS fields; normalized aliases are additive and never replace nested v4 objects. Raw Polar JSON is opt-in viarawmode or per-call override.GPS route geometry is redacted in
summaryandstructuredmodes - onlyrawmode exposes raw coordinates.Date formats and supported
featuresare validated per endpoint. Feature queries that Polar limits to one day are hydrated one available date at a time.The MCP client never sees access or refresh tokens.
This is not medical advice. The server exposes user-authorized data for personal AI workflows, not diagnosis or training prescription.
Configuration
setup writes most of these into ~/.polar-mcp/config.json (0600). Manual env override is supported:
POLAR_CLIENT_ID=<client-id>
POLAR_CLIENT_SECRET=<client-secret>
POLAR_REDIRECT_URI=http://127.0.0.1:3000/callback
# Optional
POLAR_SCOPES="activity:read calendar:read continuous_samples:read ..."
POLAR_PRIVACY_MODE=structured # summary | structured | raw
POLAR_CACHE=sqlite # optional read-through cache
POLAR_TOKEN_PATH=~/.polar-mcp/tokens.json
POLAR_CACHE_PATH=~/.polar-mcp/cache.sqliteHermes / remote setup
npx -y polar-mcp-unofficial setup --client hermes --no-auth
npx -y polar-mcp-unofficial auth # run locally if browser auth is needed
npx -y polar-mcp-unofficial doctor --client hermes
hermes mcp test polarAfter Hermes config changes, use /reload-mcp or hermes mcp test polar. Don't restart the gateway for normal data access.
If browser OAuth has to happen on a different machine than Hermes, run auth locally and copy ~/.polar-mcp/tokens.json to the server with chmod 600.
Requirements
Node.js 20+
A Polar AccessLink client at https://admin.polaraccesslink.com with redirect URI
http://127.0.0.1:3000/callback
Development
git clone https://github.com/davidmosiah/polar-mcp.git
cd polar-mcp
npm install
npm test
npm run buildTest with MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsLinks
Docs site: https://wellness.delx.ai/connectors/polar
Legacy docs: https://polarmcp.vercel.app/
Delx Wellness registry: https://github.com/davidmosiah/delx-wellness
Connector quality standard: https://github.com/davidmosiah/delx-wellness/blob/main/docs/connector-quality-standard.md
Polar AccessLink Dynamic API v4 docs: https://www.polar.com/polar-api-v4/
See also
The full Delx Wellness connector library:
Provider | Package | Repo |
WHOOP | ||
Oura | ||
Garmin | ||
Strava | ||
Fitbit | ||
Withings | ||
Apple Health | ||
Polar | ||
Nourish (nutrition) |
One-command setup for Hermes — preconfigures every connector above plus wellness skills + onboarding: delx-wellness-hermes.
📧 Contact & Support
📨 support@delx.ai — general questions, integration help, partnerships
🐛 Bug reports / feature requests — GitHub Issues
🐦 Updates — @delx369 on X
🌐 Site — wellness.delx.ai
License
MIT - see LICENSE.
Disclaimer
This software is provided as-is. It is not a medical device, does not provide medical advice, and should not be used for diagnosis, treatment or training prescription. Always consult qualified professionals for medical or training concerns.
Available Tools
37 toolspolar_agent_manifestPolar Agent ManifestARead-onlyIdempotent
Machine-readable install, runtime and client guidance for AI agents. Does not call Polar or expose secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | generic | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| oauth | Yes | |
| client | Yes | |
| hermes | Yes | |
| package | Yes | |
| project | Yes | |
| mcp_name | Yes | |
| resources | Yes | |
| unofficial | Yes | |
| agent_rules | Yes | |
| standard_tools | Yes | |
| troubleshooting | Yes | |
| recommended_first_calls | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: 'Does not call Polar or expose secrets,' which goes beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words, no filler, front-loaded with purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema existing, the description omits parameter meaning and usage details, which are critical for a tool with zero schema descriptions. Incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the two parameters (client, response_format) or their enums. Fails to compensate for lacking schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it provides 'machine-readable install, runtime and client guidance' and explicitly says it 'does not call Polar or expose secrets,' clearly distinguishing it from sibling tools that involve API calls or data access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setup and guidance contexts but does not explicitly state when not to use or name alternative tools. Clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_cache_statusPolar Cache StatusARead-onlyIdempotent
Show optional local SQLite cache status. Enable with POLAR_CACHE=sqlite or POLAR_CACHE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| enabled | Yes | |
| entries | Yes | |
| http_cache | No | |
| newest_cached_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description adds value by explaining that the cache is optional and how to enable it (via environment variables), which provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema, so the description does not need to detail return values. It covers the key context (optional cache, enablement) but lacks explanation of what 'status' entails. Still, it is complete enough for an agent with access to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. However, the description does not mention the 'response_format' parameter at all, failing to clarify its purpose or the available options (markdown/json). The agent cannot infer the configurable output format from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows local SQLite cache status, using a specific verb and resource. However, it does not explicitly differentiate from sibling tools like polar_connection_status or polar_data_inventory, leaving room for ambiguity in tool selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it shows cache status and how to enable it, but it does not specify when to use this tool over alternatives or provide exclusions. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_capabilitiesPolar MCP CapabilitiesARead-onlyIdempotent
Explain supported Polar data, privacy boundaries, recommended agent workflow and project links.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| creator | Yes | |
| project | Yes | |
| mcp_name | Yes | |
| auth_model | Yes | |
| unofficial | Yes | |
| api_boundary | Yes | |
| privacy_modes | Yes | |
| client_aliases | Yes | |
| supported_data | Yes | |
| contribution_paths | Yes | |
| recommended_agent_flow | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description is not required to repeat those. It adds context by specifying the topics covered (Polar data, privacy boundaries, workflow, project links), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, highly concise. Could be improved by listing topics more explicitly, but it's sufficiently clear and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a meta capabilities overview, the description covers the key topics. An output schema exists to describe return values. The description is complete enough for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (response_format) is self-explanatory from its enum and default, and the schema coverage is 0%, so the description should ideally mention it. However, the parameter is trivial and the default is 'markdown', so the lack of mention is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it explains supported Polar data, privacy boundaries, recommended agent workflow, and project links. This distinguishes it from sibling tools that retrieve specific data types (e.g., polar_list_activity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for understanding capabilities and workflow, but does not explicitly state when to use it vs. alternatives or when not to use it. No exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_connection_statusPolar Connection StatusARead-onlyIdempotent
Check local Polar config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Polar or exposing secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | generic | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| node | Yes | |
| cache | Yes | |
| oauth | Yes | |
| token | Yes | |
| client | No | |
| config | Yes | |
| next_steps | Yes | |
| missing_env | Yes | |
| privacy_mode | Yes | |
| redirect_uri | No | |
| required_env | Yes | |
| client_checks | No | |
| ready_for_polar_api | Yes | |
| automatic_auth_supported | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. The description adds detailed behavioral context: checks specific local states, avoids network calls, does not expose secrets, and optionally checks MCP client readiness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the verb 'Check' and lists all items concisely with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool's purpose and behavior are well-covered, and an output schema exists to document return values. However, the lack of parameter descriptions leaves a gap in completeness, especially given the low schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the two parameters ('client' and 'response_format') or their enums. The mention of 'optional MCP client readiness' hints at the client parameter but is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it checks local Polar configuration items (config, token, Node version, privacy mode, cache, MCP client) without external calls. This distinguishes it from siblings that interact with the Polar API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for local diagnostics by explicitly stating 'without calling Polar'. No explicit when-not-to-use or alternative tools are mentioned, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_daily_summaryPolar Daily Training SummaryARead-onlyIdempotent
Build a practical daily summary from Polar sleep, activity, Nightly Recharge and training data when available. Read-only and non-medical.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window for recent training context. | |
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| generated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds 'non-medical' context and mentions graceful handling of missing data ('when available'), which goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to convey purpose, data sources, and safety. Every word serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations are rich, the description adequately covers the tool's function. However, it lacks specifics about the summary contents (e.g., format or key metrics), which would slightly improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides clear descriptions for all three parameters (days, timezone, response_format) with 67% coverage. The description adds no further parameter details, so it meets the baseline expectation without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Build') and the resource ('practical daily summary') from specific data types (sleep, activity, Nightly Recharge, training). It also clarifies it's read-only and non-medical, and distinguishes from siblings that list raw data by offering an aggregated summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for daily summaries ('when available') but does not explicitly state when to use this tool vs alternatives like polar_weekly_summary or polar_wellness_context. There is no guidance on when not to use it or which sibling to prefer for different needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_data_inventoryPolar Data InventoryARead-onlyIdempotent
Inventory supported Polar data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Polar APIs or expose user data.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| auth | No | |
| kind | Yes | |
| links | Yes | |
| notes | Yes | |
| scopes | Yes | |
| source | Yes | |
| totals | Yes | |
| mcp_name | Yes | |
| categories | Yes | |
| unofficial | Yes | |
| first_tools | Yes | |
| api_boundary | No | |
| generated_at | Yes | |
| privacy_modes | Yes | |
| data_access_model | Yes | |
| recommended_agent_flow | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context that it does not call Polar APIs or expose user data, reinforcing safety and clarifying what the tool actually does beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the core purpose and key exclusions. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple informational tool with one optional parameter and an output schema, the description covers what the tool returns (inventory of data domains, auth scopes, privacy boundaries, recommended first calls) and its non-API nature. No gaps remain for an agent to execute correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter (response_format) with enum but no description (0% coverage). The tool description does not mention the parameter, even though it controls output format. The enum values are self-explanatory, but the description should have explicitly stated the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Inventory' and specific resources: data domains, auth scope requirements, privacy boundary, and recommended first calls. It distinguishes from siblings by noting it does not call Polar APIs or expose user data, making its purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for understanding prerequisites before making API calls and notes it does not call APIs, guiding agents away from using it for data retrieval. However, it does not explicitly name alternative tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_demoPolar DemoARead-onlyIdempotent
Returns realistic example payloads of polar_daily_summary, polar_wellness_context, and polar_list_nightly_recharge so agents see the contract before calling real Polar APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations by specifying that it returns example payloads, but annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the core action and purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one optional parameter and no output schema; description covers purpose and example content, though omits mention of the response format parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description does not mention the response_format parameter or its enum values, so it adds no meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb 'Returns' and specific resource 'example payloads of polar_daily_summary, polar_wellness_context, and polar_list_nightly_recharge'. Clearly distinguishes from sibling tools that are the real endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage to see contract before calling real APIs, providing clear context but not explicitly stating when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_exchange_codeExchange Polar OAuth CodeA
Exchange a Polar OAuth authorization code for local tokens. Tokens are stored locally with 0600 permissions and are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | OAuth authorization code, or a full redirect URL containing ?code=... | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | Yes | |
| scope | No | |
| expires_at | No | |
| token_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: tokens are stored locally with 0600 permissions and never returned. Annotations indicate readOnlyHint=false consistent with write operation; no contradiction. However, lacks details on error handling or token lifetime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, efficient sentence conveying the main purpose and notable behavior (permissions, non-return of tokens). No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers the core operation, but lacks mention of the prerequisite step (needs a valid authorization code from polar_get_auth_url) and potential errors. Output schema exists so return values may be documented externally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the 'code' parameter well (accepts code or redirect URL), but the 'response_format' parameter has no description and appears only in enum/default. The tool description adds no additional semantics beyond schema, and schema coverage is only 50%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exchanges an OAuth code for tokens, which is specific and distinguishes it from siblings like polar_get_auth_url that generate the auth URL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage as the second step after obtaining an OAuth code, but no explicit mention of prerequisites (e.g., 'use after polar_get_auth_url') or conditions when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_get_account_dataPolar Account DataARead-onlyIdempotent
Read Polar user account fields exposed by AccessLink. Requires profile:read.
| Name | Required | Description | Default |
|---|---|---|---|
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the description adds value by specifying the OAuth scope requirement ('profile:read') and hinting at the data scope ('exposed by AccessLink'). It also partially describes the privacy_mode parameter's behavior. This adds meaningful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the core purpose, second adds a key requirement. No extra words. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 optional parameters and an output schema (not shown). The description covers purpose and auth requirement, and hints at privacy_mode behavior. However, it does not explain what 'account fields' includes, nor does it address response_format or the nature of the output. With openWorldHint, some completeness is acceptable, but more detail would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only privacy_mode has a schema description; response_format has a default but no description). The description adds value for privacy_mode by explaining defaults and effects, but does not mention response_format. With low coverage, the description partially compensates but could do more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read Polar user account fields', which is a specific verb+resource. The title 'Polar Account Data' matches. Among many sibling tools, this is distinct from polar_profile_get (which likely reads profile fields) by mentioning 'account fields' and 'AccessLink'. Purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite ('Requires profile:read'), which gives some usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., polar_profile_get for more specific profile data), nor does it provide exclusions or failure conditions. Usage is implied but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_get_auth_urlGet Polar OAuth URLARead-onlyIdempotent
Generate a Polar OAuth authorization URL. Use this first when no local token exists.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional OAuth state value generated by the caller. | |
| scopes | No | Optional scope override. Defaults to read-only Polar scopes used by this server. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| scopes | Yes | |
| auth_url | Yes | |
| next_step | Yes | |
| redirect_uri | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it generates a URL, consistent with these hints. No additional behavioral traits are disclosed, but annotations cover the main safety and idempotency aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (two sentences) and front-loaded with the purpose. It effectively communicates the core function and usage context, though could be slightly expanded to cover parameter semantics without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the tool is simple, the description is mostly adequate. However, it omits mention of the response_format parameter controlling output format, which is relevant for an agent to properly handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (state and scopes have descriptions, response_format does not). The description does not add any parameter details beyond what the schema provides, failing to compensate for the missing response_format description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate' and resource 'Polar OAuth authorization URL'. It distinguishes from sibling tools by specifying 'Use this first when no local token exists.' indicating the tool's role in the OAuth flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this first when no local token exists.' This implies the workflow order relative to polar_exchange_code, but does not mention scenarios where a token already exists or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_get_routePolar RouteARead-onlyIdempotent
Load a Polar route by route id. Routes are GPS-sensitive; default privacy modes redact coordinates. Requires routes:read.
| Name | Required | Description | Default |
|---|---|---|---|
| route_id | Yes | Polar route id returned by a calendar or training-session record. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context about GPS sensitivity, default privacy redaction, and required scope 'routes:read', enhancing transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence provides unique value. No redundant or excessive text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (get by ID) and the presence of an output schema, the description covers purpose, privacy, and auth requirements fully. No gaps for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 67% of parameters with descriptions. The description adds privacy context that clarifies the behavior of the 'privacy_mode' parameter, but does not detail 'response_format'. Overall, it adds meaningful explanation beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Load a Polar route by route id.' This provides a specific verb-resource pair that distinguishes this tool from siblings, most of which are list or other operation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions privacy sensitivity and authentication requirement, but does not explicitly guide when to use this tool versus alternatives or when not to use it. Context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_activityPolar Daily ActivityBRead-onlyIdempotent
List Polar daily activity records. Requires activity:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as false, covering safety and idempotency. The description adds the requirement for 'activity:read' scope, which is useful beyond annotations. However, no further behavioral traits are disclosed, such as pagination behavior or rate limits, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no superfluous words. It front-loads the core action and includes essential permission info. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8 parameters with detailed schema descriptions, output schema exists, and annotations provide safety guarantees, the tool is well-documented contextually. The description could add contextual context about when it is appropriate to use compared to other list tools, but overall completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (88%), so the schema already documents parameters well. The description does not add additional parameter meaning beyond what is in the schema; it only adds a general permission note. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List Polar daily activity records', specifying the verb 'List' and the resource 'daily activity records'. It distinguishes from siblings by focusing on daily activity, but does not explicitly differentiate from other list tools like list_training_sessions, which is acceptable given the specific resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions 'Requires activity:read', which is a permission requirement. It provides no guidance on when to use this tool versus alternatives, nor does it specify when not to use it. No explicit when/when-not/alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_calendarPolar CalendarARead-onlyIdempotent
List Polar calendar entries in a date range. Requires calendar:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds only the auth requirement (calendar:read), which is useful but minimal. No contradictions observed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus a scope note. Every word adds value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 8 parameters (including pagination and privacy options) and an output schema, the description omits details about pagination and response format. However, the high schema coverage and presence of output schema partially compensate, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the baseline is 3. The description only implicitly references date range parameters (after/before) but adds no additional meaning beyond what the schema provides for other parameters like privacy_mode or pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Polar calendar entries in a date range, which is a specific verb-resource combination. It also specifies required scope (calendar:read), distinguishing it from sibling tools like polar_list_activity or polar_list_sleeps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool instead of alternatives, such as other list tools. It does not mention when not to use it or provide explicit context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_continuous_samplesPolar Continuous SamplesARead-onlyIdempotent
List continuous sample records for a date range. Requires continuous_samples:read. Not medical advice.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint false, etc. The description adds permission requirement and 'Not medical advice' disclaimer, but does not elaborate on pagination behavior or other nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and resource. Concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has output schema and annotations cover safety. The description provides permission info but lacks details on pagination or how all_pages works. Mostly sufficient given richness of schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so baseline is 3. The description only adds 'date range' which aligns with after/before parameters. No additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists continuous sample records for a date range, using a specific verb and resource. This distinguishes it from sibling list tools for other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor when not to use it. The required permission is mentioned but no comparisons to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_nightly_rechargePolar Nightly RechargeARead-onlyIdempotent
List Nightly Recharge results in a date range. Requires nightly_recharge:read. Not medical advice.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context by stating the required auth scope and a disclaimer ('Not medical advice'). No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences covering purpose, scope requirement, and disclaimer. It is front-loaded with the core action and avoids unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8 parameters and optional features like privacy_mode and response_format, the description is minimal. However, the presence of an output schema and high schema coverage reduce the need for extensive description. It could explain what Nightly Recharge is or how pagination works, but this is adequately covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 88% schema description coverage, the schema already thoroughly documents parameters. The description adds minimal extra value beyond stating 'in a date range', which is implied by the 'after' and 'before' parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Nightly Recharge results with a date range, using a specific verb and resource. However, it does not distinguish this tool from sibling list tools like polar_list_activity or polar_list_sleeps, missing an opportunity to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required scope 'nightly_recharge:read', which provides some usage guidance. However, it does not specify when to use this tool versus alternatives, nor does it provide exclusion criteria or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_ppi_samplesPolar PPI SamplesBRead-onlyIdempotent
List pulse-to-pulse interval samples in a date range. Requires ppi_data:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds the auth requirement 'Requires ppi_data:read', which is useful but does not disclose other behavioral traits like pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a permission note, with no superfluous content. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and an output schema present, the description is adequate but minimal. It does not explain what PPI samples are or provide context beyond the date range and permission. Could be more complete for a health data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema handles most parameter explanations. The description's mention of 'date range' maps to after/before parameters but adds no new meaning. Baseline is 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'pulse-to-pulse interval samples', with a date range constraint. It also mentions required permission. However, it does not explicitly differentiate from sibling list tools like polar_list_activity or polar_list_sleeps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions the date range and permission, but no context on when this tool is appropriate or when other tools should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_skin_contactsPolar Skin ContactsARead-onlyIdempotent
List skin contact periods in a date range. Requires skin_contact:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
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, indicating a safe read operation. The description adds the date range constraint and required scope, but does not elaborate on behavior like pagination limits or rate limiting. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise with no unnecessary words. It efficiently conveys the core purpose. However, it could be slightly expanded to include more context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, detailed annotations, and an output schema, the description covers the basic purpose but misses details about pagination (all_pages, max_pages), privacy modes, and response format. The schema compensates, but the description could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, with most parameters having descriptive explanations. The description does not add any additional meaning beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', resource 'skin contact periods', and scope 'in a date range'. It further specifies the required OAuth scope 'skin_contact:read'. This distinguishes it from sibling list tools like polar_list_activity or polar_list_sleeps by the specific resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required scope but does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to choose skin contacts over other list tools). It lacks 'when-not-to-use' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_sleepsPolar SleepsARead-onlyIdempotent
List Polar sleep records in a date range. Requires sleep:read. Not medical advice.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by stating the required authorization scope 'sleep:read' and the disclaimer 'Not medical advice'. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of three short sentences, each providing essential information. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and detailed parameter descriptions, the description provides adequate completeness by adding authorization requirements and a disclaimer. It covers the key contextual points.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (88%), so the baseline is 3. The description does not add significant meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'Polar sleep records', and the scope 'in a date range'. It distinguishes from sibling tools by specifying 'sleep records', which is not used by any other sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required authorization scope 'sleep:read', which provides some context for when the tool can be used, but it does not compare to alternative tools or specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_sleep_wake_vectorsPolar Sleep Wake VectorsBRead-onlyIdempotent
List sleep/wake vector records in a date range. Requires sleep:read. Not medical advice.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, read-only operation. The description adds only a medical disclaimer, which does not contradict annotations but provides minimal additional behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. The first sentence front-loads the core functionality, and the second adds essential context (permission and disclaimer). No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description does not need to detail return values. However, it lacks mention of pagination behavior, default ordering, or how date range filtering interacts with the after/before parameters, which could help the agent use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters are described in the input schema with meaningful descriptions (100% coverage). The description itself adds no additional parameter information beyond the schema, so it neither harms nor significantly aids interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'sleep/wake vector records' with a scope of 'in a date range'. However, it does not explicitly differentiate this tool from siblings like polar_list_sleeps, which appears to list sleep data but may have a different purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a required permission ('sleep:read') and a disclaimer ('Not medical advice'), but offers no guidance on when to use this tool versus alternatives. No explicit when-to-use or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_sport_profile_catalogPolar Sport Profile CatalogBRead-onlyIdempotent
Load Polar sport profile catalog. Requires sports:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds the required auth scope 'sports:read', which provides some extra context beyond annotations, but no further behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that front-load the purpose. No wasted words, though slightly terse for a tool with 8 parameters and potential sibling confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, multiple siblings), the description is too sparse. It does not explain what the catalog contains, how it differs from polar_list_sport_profiles, or any pagination behavior beyond what the schema implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema itself documents most parameters. The description does not add any parameter-specific meaning beyond what the schema provides, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Load) and resource (Polar sport profile catalog), but does not distinguish from the sibling tool polar_list_sport_profiles, which may have a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like polar_list_sport_profiles. Only mentions required scope, no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_sport_profilesPolar Sport ProfilesBRead-onlyIdempotent
List the user's Polar sport profiles. Requires sports:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, non-destructive. The description adds a required authentication scope (sports:read), which is helpful but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage and presence of an output schema, the description is adequate but does not elaborate on pagination or output behavior beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema carries most parameter meaning. The description adds no additional parameter insight beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a specific resource (Polar sport profiles) and notes a required scope. However, it does not differentiate from sibling tools like polar_list_sport_profile_catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of when-not or other strategies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_sportsPolar SportsARead-onlyIdempotent
List sports available in the Polar ecosystem. Requires sports:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the auth requirement 'Requires sports:read', which is helpful beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action. Every word is needed. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (list sports) and has an output schema, so return values are documented. However, the description does not differentiate from closely related sibling tools like sport_profiles or sport_profile_catalog, which may confuse agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so most parameter details are in the schema. The description does not add any parameter-specific information beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List sports available in the Polar ecosystem', providing a specific verb and resource. It distinguishes from sibling list tools by focusing on sports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like polar_list_sport_profiles or polar_list_sport_profile_catalog. It only mentions the required scope 'sports:read', which is minimal context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_subscriptionsPolar SubscriptionsARead-onlyIdempotent
List user subscriptions and entitlements. Requires user_subscription:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the permission scope requirement, which is helpful but not extensive. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action, no redundant or missing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, output schema, and high schema coverage, the description is sufficient for a list tool. It lacks some behavioral details but the overall definition is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 88% schema coverage, the description does not add any parameter-specific information beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'user subscriptions and entitlements' with a specific verb. While it doesn't explicitly differentiate from sibling 'list_*' tools, the resource name is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission scope ('user_subscription:read') but provides no guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_temperature_measurementsPolar Temperature MeasurementsBRead-onlyIdempotent
List temperature measurements in a date range. Requires temperature_measurement:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) already cover safety and idempotency. Description adds the permission requirement but does not contradict annotations. Provides minimal additional behavioral context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load purpose and permission. No redundant or irrelevant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return format details are not needed. Description is adequate for a list tool with rich schema and annotations. Lacks guidance on pagination or when to paginate, but schema covers parameters. Minor gap in usage guidance, but overall complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so parameters are well-documented in the schema. Description does not add meaning beyond what the schema provides. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (List), resource (temperature measurements), and scope (in a date range). Does not explicitly differentiate from sibling tools, but the resource name is specific enough to avoid ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only mentions required permission (temperature_measurement:read). No guidance on when to use this tool vs alternatives, such as other list tools (e.g., polar_list_activity). No exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_testsPolar Test ResultsARead-onlyIdempotent
List Polar fitness/orthostatic/running test results in a date range. Requires tests:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint=false. The description adds the specific permission requirement (tests:read), which is valuable beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no fluff. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (read-only list with output schema and comprehensive annotations), the description covers the essential purpose and permission. It lacks info on pagination or result format, but output schema and schema descriptions likely fill that gap. Adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already explains most parameters. The description does not add any parameter-level meaning beyond what is in the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the specific resource (fitness/orthostatic/running test results), and the scope (in a date range). It also mentions the required permission (tests:read). This distinguishes it from sibling tools like polar_list_activity or polar_list_sleeps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the required permission (tests:read), which guides when to use. However, it does not explicitly mention when not to use or provide direct comparisons to similar list tools among siblings. The context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_training_sessionsPolar Training SessionsARead-onlyIdempotent
List Polar training sessions in a date range. Requires training_sessions:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the permission requirement ('Requires training_sessions:read'), which is behavioral context not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core purpose and a critical prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and high schema coverage, the description provides necessary context (date range, permission) for a straightforward list tool. It is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the input schema already describes parameters well. The description does not add additional meaning beyond what is in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('Polar training sessions'), and constraints ('in a date range'), effectively distinguishing it from sibling list tools like polar_list_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing training session data but does not explicitly state when to use it versus alternatives or provide exclusion criteria. The resource name provides differentiation, but no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_training_target_favoritesPolar Training Target FavoritesARead-onlyIdempotent
List user training target favorites. Requires training_targets:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
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 safe read behavior is known. The description adds the authorization requirement (training_targets:read), which annotations do not cover. No further behavioral traits like rate limits or error handling are disclosed, but given the annotations, the description adds some value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. The first sentence front-loads the purpose, and the second adds the critical authorization note. Every word earns its place with no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations are rich, the description is adequately complete for a simple list operation. However, it lacks information about pagination behavior or what constitutes a 'favorite' specifically, which could be beneficial. It meets minimum viability but has room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents most parameters well. The description does not add any additional meaning or clarification for parameters beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists user training target favorites, distinguishing it from sibling tools like polar_list_training_targets which list all training targets. The verb 'list' and resource 'training target favorites' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions the required scope 'training_targets:read' but provides no guidance on when to use this tool versus alternatives (e.g., polar_list_training_targets) or under what conditions. No contextual tips or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_training_targetsPolar Training TargetsBRead-onlyIdempotent
List calendar training targets in a date range. Requires training_targets:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds the permission requirement ('Requires training_targets:read'), which is useful context but does not reveal additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus a permission note. It is front-loaded with the primary action and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and an output schema, the description omits important context such as pagination behavior, sorting, or result format. It is too brief to fully inform the agent of all relevant aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents most parameters. The description does not add any parameter-specific meaning beyond what the schema provides, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists calendar training targets in a date range, using a specific verb and resource. However, it does not explicitly differentiate from the similar sibling tool 'polar_list_training_target_favorites'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions a required permission, not context for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_list_user_devicesPolar User DevicesARead-onlyIdempotent
List devices registered to the Polar user. Requires devices:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Polar page number. | |
| after | No | Only return Polar records after this time. Converted to Polar's inclusive from query parameter. | |
| limit | No | Local page-size hint used for pagination safety. | |
| before | No | Only return Polar records before this time. Converted to Polar's exclusive to query parameter. | |
| all_pages | No | Fetch multiple pages up to max_pages. | |
| max_pages | No | Maximum pages to fetch when all_pages is true. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to POLAR_PRIVACY_MODE or structured. raw returns upstream Polar JSON. summary minimizes sensitive health and profile details. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| records | Yes | |
| endpoint | Yes | |
| has_more | Yes | |
| next_page | No | |
| privacy_mode | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the authorization requirement 'Requires devices:read', providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences cover the essential purpose and authorization without unnecessary words, maximizing readability for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for a straightforward listing tool, covering authorization and core purpose. The output schema exists to detail return values, so no further elaboration is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents parameters well. The description adds no further parameter detail, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists devices registered to the Polar user, using a specific verb and resource. It distinguishes from sibling list tools by focusing on the unique resource of devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for listing user devices but lacks explicit guidance on when not to use it or alternatives, making it adequate but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_onboardingWellness Onboarding FlowARead-onlyIdempotent
Read-only. Return the 11-question Delx Wellness onboarding flow (en or pt-BR), the current shared profile, missing critical fields, and a cross-connector hint. Use this when the user starts a fresh wellness session and you need to fill out preferred_name, goals, devices, training context, nutrition, preferences, and safety.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Onboarding locale. Defaults to en. | |
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent; description adds value by detailing what is returned (flow, profile, missing fields, hint) and the session context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. Each sentence serves a distinct purpose: stating the tool's output and when to use it. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description lists all return components and the fields to be filled. Mentions the 11-question nature and locale options. Lacks detail on return format (markdown vs json), but response_format parameter covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only locale described). Description mentions locale as 'en or pt-BR' but does not address response_format parameter, leaving half the parameters without added clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns the 11-question wellness onboarding flow, current profile, missing fields, and cross-connector hint. Verb 'Return' and resource specified distinctly from siblings like polar_wellness_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use when starting a fresh wellness session and needing to fill out specific fields. Lacks explicit mention of when not to use or alternatives, but context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_privacy_auditPolar Privacy AuditARead-onlyIdempotent
Return local privacy, cache, token-path and env-presence posture without revealing secret values.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| project | Yes | |
| cache_path | Yes | |
| token_path | Yes | |
| unofficial | Yes | |
| stdout_safe | Yes | |
| cache_enabled | Yes | |
| config_source | Yes | |
| secret_env_vars | Yes | |
| local_config_path | Yes | |
| local_config_exists | Yes | |
| raw_payloads_opt_in | Yes | |
| privacy_mode_default | Yes | |
| required_env_present | Yes | |
| gps_redaction_default | Yes | |
| redacted_key_patterns | Yes | |
| local_config_secure_permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value by stating it does not reveal secret values, which is an important behavioral trait beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 16-word sentence that is front-loaded with the core purpose and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description is complete. It succinctly explains what the tool returns without needing to detail return values or behavior beyond what is already structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the single optional parameter (response_format) has a clear enum and default in the schema. The description does not mention it, but the parameter is self-explanatory, so it does not significantly hinder understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns local privacy, cache, token-path, and env-presence posture without revealing secrets. It uses a specific verb 'Return' and distinguishes from sibling tools like polar_cache_status or polar_connection_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. It only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_profile_getGet Shared Wellness ProfileARead-onlyIdempotent
Read the canonical Delx Wellness profile shared with the other wellness MCP connectors (Nourish, Cycle Coach, CGM, etc.). Read-only. Profile stores only what the user typed during onboarding — never OAuth tokens, API keys, or biomarkers.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by disclosing that the profile stores only user-typed onboarding data and never OAuth tokens, keys, or biomarkers. This is consistent with the readOnlyHint and idempotentHint annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with purpose and followed by behavioral context. Every sentence earns its place without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and simplicity of the tool, the description provides sufficient context about what the profile contains and the read-only nature. However, it lacks details on the return format or error handling, and the parameter omission reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the single parameter 'response_format' at all, and the input schema has 0% coverage. Although the parameter is simple with an enum, the agent receives no guidance on its purpose or default behavior, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool reads the 'canonical Delx Wellness profile' shared with other connectors, using the verb 'Read' and specifying the resource. It distinguishes from siblings like polar_profile_update and other read tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states it is 'Read-only' and identifies the profile as shared with other wellness connectors, implying when to use it for general profile reading. However, it does not explicitly mention when not to use it or provide alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_profile_updateUpdate Shared Wellness ProfileA
Persist a partial patch to the canonical Delx Wellness profile. Requires explicit_user_intent=true after the user confirms they want to save. Rejects secret-like fields (oauth, token, api_key, password, cookie, refresh, session).
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Partial WellnessProfileDocument patch. Top-level keys: profile, goals, devices, training, nutrition, preferences, safety, notes. | |
| response_format | No | markdown | |
| explicit_user_intent | No | Set to true ONLY after the user has explicitly confirmed they want to save this. Otherwise the tool refuses to write. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so description carries full burden. Discloses critical behaviors: requires user confirmation, rejects secret-like fields. Does not detail error handling or success response, but adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding unique value. No redundancy. Front-loaded with purpose, then usage condition, then security behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core purpose and constraints well, but lacks information about return values or error conditions. As a mutation tool with no output schema, some completeness on expected outcome is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers parameters well (67% coverage individually, but all three have descriptions). Description adds context: clarifies the conditional need for explicit_user_intent and the secret rejection relevant to the patch object. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'persist' and resource 'partial patch to the canonical Delx Wellness profile'. Distinguishes from sibling read tools like polar_profile_get. Includes behavioral specifics like rejection of secret fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states requirement for explicit_user_intent after user confirmation, which is a key usage condition. Does not explicitly name alternatives, but among siblings it is the only update tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_quickstartPolar QuickstartARead-onlyIdempotent
Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Polar?'
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by explaining it adapts to current state (env vars, token presence). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose and usage condition. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and adaptive behavior, but does not mention what output the user can expect. Given the tool's simplicity and the lack of an output schema, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description does not explain the single optional parameter 'response_format' or its enum values. The parameter is simple, but the description should compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a personalized 3-step setup walkthrough for connecting Polar, and it distinguishes itself from sibling tools by instructing to call it first when the user asks 'how do I connect Polar?'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use: 'Call this first when the user asks 'how do I connect Polar?''. This provides clear guidance on the tool's entry-point role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_revoke_accessRevoke Polar OAuth AccessADestructive
Delete the local Polar token file. Use only when the user explicitly wants to disconnect this MCP; revoke the remote grant from Polar if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | Yes | |
| token_path | Yes | |
| local_tokens_cleared | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already label it as destructive and not read-only. The description adds that it deletes a local file, which is consistent but does not disclose further behavioral traits like reversibility or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the purpose and usage with no extraneous content. Front-loaded with the verb 'Delete'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and having an output schema (context), the description is adequate for purpose and usage but fails to explain the response_format parameter, leaving a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not mention the only parameter (response_format). The tool cannot be used correctly without understanding this parameter, which is a critical omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Delete the local Polar token file') and the context ('when the user explicitly wants to disconnect this MCP'). Distinguishes from sibling tools by specifying a unique operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use ('only when the user explicitly wants to disconnect this MCP') and mentions an additional step ('revoke the remote grant from Polar if needed'), providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_weekly_summaryPolar Weekly Training ReviewARead-onlyIdempotent
Build a weekly Polar scorecard with sleep, activity, Nightly Recharge, training load context, bottlenecks and actions. Read-only and non-medical.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Recent analysis window in days. | |
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| compare_days | No | Prior comparison window in days. Use 0 to disable comparison. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| generated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds 'Read-only and non-medical', which aligns with annotations without contradiction, but adds limited additional context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose and key output components without any extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available, the description sufficiently covers the tool's purpose and output components. It is complete enough for a summary tool, though it could briefly note the time range context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (all four parameters have descriptions), so baseline is 3. The description does not add parameter meaning beyond schema; it lists output components but not parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'build' and the resource 'weekly Polar scorecard', listing components (sleep, activity, Nightly Recharge, etc.) and distinguishing from sibling tools like polar_daily_summary by specifying the weekly scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for weekly review but does not explicitly state when to use this tool versus alternatives (e.g., polar_daily_summary for daily needs). No exclusion criteria or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polar_wellness_contextPolar Wellness ContextARead-onlyIdempotent
Normalize Polar Nightly Recharge, sleep and training load into the shared wellness_context shape for recommendation engines.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window for normalized Polar wellness context. | |
| notes | No | ||
| soreness | No | ||
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| injury_flags | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| source | Yes | |
| soreness | Yes | |
| generated_at | Yes | |
| injury_flags | Yes | |
| recent_training_load | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds value by explaining the normalization purpose and target shape, which complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the tool's purpose and output. Every word is necessary with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description offers no details on parameter usage, which is critical given the low schema coverage. The tool's completeness is inadequate for an agent to correctly invoke all parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (days, timezone documented), and the description provides no parameter information. It fails to compensate for the low schema coverage, leaving six parameters without meaningful guidance beyond the schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it normalizes Polar Nightly Recharge, sleep, and training load into a shared wellness_context shape for recommendation engines. It specifies the resource (Polar data types) and the action (normalize), and distinguishes from sibling data retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when normalized context is needed for recommendation engines, but does not explicitly state when not to use it or provide alternatives such as raw list tools. Some inference is possible from sibling names, but not directly from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools have distinct purposes targeting specific Polar data domains (sleep, activity, training, etc.), but the large number of informational/setup tools (e.g., polar_capabilities, polar_data_inventory, polar_quickstart) could cause some confusion about which to call first.
All tools share the 'polar_' prefix, but beyond that the pattern is inconsistent: most data access tools use verb_noun (list_activity, get_route), while informational tools use noun phrases (polar_onboarding, polar_capabilities), and a few use noun_verb (polar_profile_get). This mix reduces predictability.
With 37 tools, the count exceeds the recommended upper limit of 25 for typical servers. While the broad Polar ecosystem may justify many endpoints, the tool surface feels heavy and could be streamlined by grouping related operations.
The tool set covers the major Polar data domains (sleep, activity, training, routes, devices, etc.) and includes authentication and profile management. It is primarily read-only, which fits the Polar API, but lacks write operations for most resources.
Maintenance
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-first MCP server that connects AI agents to your Fitbit activity, sleep, heart-rate, HRV, SpO2 and weight data.331631MIT
- AlicenseAqualityAmaintenanceLocal-first MCP server that connects AI agents to your Withings body, sleep, activity and heart data.232453MIT
- AlicenseBqualityAmaintenanceLocal-first MCP server that connects AI agents to your Garmin sleep, HRV, Body Battery, stress, training readiness and activities, keeping tokens on your machine.4271910MIT
- FlicenseAqualityDmaintenanceAn MCP server for the Polar AccessLink API. Connect your Polar fitness data to Claude AI - access workouts, sleep analysis, recovery metrics, heart rate data, and more.255
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/polar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server