Sensor Bio MCP Server
OfficialClick 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., "@Sensor Bio MCP ServerShow me my sleep data from the past week"
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.
Sensor Bio MCP Server
Connect your Sensor Bio wearable data to Claude, ChatGPT, and other AI assistants using the Model Context Protocol (MCP).
Ask your AI assistant things like "How did I sleep last week?", "What's my resting heart rate trend?", or "Show me my recovery scores for the past month" and get answers pulled directly from your Sensor Bio data.
Quick Start
1. Get your API token
Log in to your Sensor Bio developer portal and grab your Organization API Token.
2. Install uv
This server uses uv to run. Install it with one command:
Mac / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"3. Add to Claude Desktop
Open your Claude Desktop config file:
OS | Path |
macOS |
|
Windows |
|
Linux |
|
Add (or merge into) the mcpServers section:
{
"mcpServers": {
"sensorbio": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/GetSensr-io/sensorbio-mcp-server",
"sensorbio-mcp-server"
],
"env": {
"SENSR_ORG_TOKEN": "paste-your-token-here"
}
}
}
}4. Restart Claude Desktop
Quit and reopen Claude Desktop. You should see "sensorbio" in the MCP tools list (look for the hammer icon).
5. Try it out
Ask Claude something like:
"Show me my sleep data from the past week"
"How many calories did I burn yesterday?"
"List all users in my organization"
Related MCP server: runalyze-mcp-server
Other MCP Clients
Cursor / Windsurf
These editors support MCP servers natively. Use the same config format above in their respective MCP settings.
OpenAI (ChatGPT)
MCP support in ChatGPT is rolling out. When available, the same server and config pattern will work.
Any MCP Client
Any application that supports the Model Context Protocol can connect using this server. Just point it at:
uvx --from git+https://github.com/GetSensr-io/sensorbio-mcp-server sensorbio-mcp-serverAuthentication
Method | Env Vars | Best For |
API Token |
| Most users (recommended) |
OAuth2 |
| Programmatic / advanced use |
The server checks for SENSR_ORG_TOKEN first, then SENSR_API_KEY as a fallback. If neither is set, it tries OAuth2 client credentials.
OAuth2 Config (advanced)
{
"mcpServers": {
"sensorbio": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/GetSensr-io/sensorbio-mcp-server",
"sensorbio-mcp-server"
],
"env": {
"SENSR_CLIENT_ID": "your-client-id",
"SENSR_CLIENT_SECRET": "your-client-secret"
}
}
}
}What You Can Ask
Once connected, your AI assistant has access to these tools:
Tool | What it does | Example question |
list_users | List all users in your organization | "Show me all users" |
get_user_ids | Get all user IDs | "How many users are in the org?" |
get_user_by_email | Find a user by their email address | "Look up john@example.com" |
get_user_profile | Get a specific user's full profile | "Show me Bryan's profile" |
search_user | Search users by name or email | "Find users named Sarah" |
get_sleep | Sleep data: duration, score, stages | "How did I sleep last week?" |
get_scores | Recovery, sleep, and activity scores | "What's my recovery score today?" |
get_activities | Workouts and activity sessions | "What workouts did I do this week?" |
get_biometrics | Heart rate, HRV, SpO2, respiratory rate | "What's my resting heart rate?" |
get_calories | Calorie burn details | "How many calories did I burn today?" |
get_org_sleep_summary | Sleep overview across your whole org | "How did the team sleep last night?" |
get_org_scores_summary | Score overview across your whole org | "Show me the team's recovery scores" |
debug_request | Raw API request (for troubleshooting) | Usually not needed directly |
Most tools support flexible date ranges. You can say things like "last 7 days", "March 1st to March 10th", or "yesterday" and the AI will figure out the right parameters.
Environment Variables
Variable | Required | Description |
| * | Organization API token (recommended) |
| * | Alias for |
| ** | OAuth2 client ID |
| ** | OAuth2 client secret |
| OAuth2 scope (optional) | |
| Override API base URL (default: | |
| Timezone for "today" calculations (default: |
* Set one of SENSR_ORG_TOKEN or SENSR_API_KEY for token auth.
** Set both for OAuth2 auth. Token auth takes precedence if both are configured.
Troubleshooting
"Server not connecting"
Make sure
uvis installed: runuv --versionin your terminalCheck that your config file path is correct (see table above)
Make sure you restarted Claude Desktop after editing the config
"Authentication error" or "Invalid API Key"
Double-check your token. Copy it fresh from the developer portal.
Make sure there are no extra spaces or line breaks in the token
Tokens can expire. Generate a new one if yours is old.
"No data showing"
Your Sensor Bio device needs to have synced recently
Check that the user ID exists in your organization
Try asking for a specific date: "Show my sleep for March 10th"
"Tool not found"
Make sure the MCP server name in your config is exactly
sensorbioCheck Claude Desktop's MCP tools list for connection status
Development
Want to contribute or run locally?
# Clone the repo
git clone https://github.com/GetSensr-io/sensorbio-mcp-server.git
cd sensorbio-mcp-server
# Install dependencies
uv sync --dev
# Run tests
uv run pytest -v
# Lint
uv run ruff check .
# Run the server locally
SENSR_ORG_TOKEN=your-token uvx --from . sensorbio-mcp-server
# Smoke test (needs a valid token)
SENSR_ORG_TOKEN=your-token uv run python scripts/smoke_test.pyLicense
MIT
Available Tools
13 toolsdebug_requestA
Low-level debugging helper: make a GET request and return {status, headers_subset, body_preview}.
Params:
path (str, required): may be '/v1/...' or 'v1/...'
query (dict[str,str], optional)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description transparently describes the tool's behavior (GET request, return format) and parameter details (path format). It adequately covers the key behavioral aspects without 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 very concise: a single sentence with a clear structure followed by bullet-pointed parameter details. 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?
Given that the tool is a simple debug GET with an output schema, the description covers the essential aspects: purpose, parameters, and return format. It could be slightly more detailed about the output schema but is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the input schema has 0% description coverage, the description adds valuable meaning: it clarifies that the path parameter may start with '/v1/' or 'v1/', and that query is an optional dictionary. This compensates for the schema's lack of 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 it is a low-level debugging helper that makes a GET request and returns status, headers, and a body preview. This is specific and distinct from sibling tools focused on user/organization data, but it does not explicitly highlight the differentiation.
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 'low-level debugging helper' label implies usage for debugging rather than production, but there is no explicit guidance on when not to use it or mention of alternative tools for regular data retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activitiesB
Get activities for a user with optional date/timestamp filtering.
Params:
user_id (str, required)
start_date/end_date (YYYY-MM-DD, optional): filter by activity timestamp
start_timestamp_ms/end_timestamp_ms (int, optional): filter by ms since epoch
cursor (str, optional): pagination cursor
limit (int, default 50)
Returns: {data, next_cursor, has_more, next_url}
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| user_id | Yes | ||
| end_date | No | ||
| start_date | No | ||
| last_timestamp | No | ||
| end_timestamp_ms | No | ||
| start_timestamp_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It explains that the tool returns data with pagination (cursor, has_more, next_url) and filtering options. However, it does not mention side effects, permissions, rate limits, or error handling. The return format is partially described, but lacks detail on the data structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It leads with the main purpose, then lists parameters in a bullet-like format, and ends with the return structure. Every sentence adds value without 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 tool has 8 parameters and an output schema, the description explains filtering and pagination but lacks explanation of what activities represent, potential errors, or limitations. It also misses the 'last_timestamp' parameter. For moderate complexity, it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to most parameters beyond the schema: formats for dates (YYYY-MM-DD), default for limit (50), and optional/required status. However, it omits the 'last_timestamp' parameter present in the schema, leaving a gap. Schema coverage is 0%, so the description carries the full burden; it covers 7 of 8 parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets activities for a user with optional filtering. It specifies the resource ('activities') and the filtering options, but does not explicitly differentiate from sibling tools like get_sleep or get_biometrics. However, the verb+resource combination is specific enough for most agents.
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 does not provide guidance on when to use this tool versus alternatives. It does not mention when not to use it or list sibling tools for comparison. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_biometricsB
Get biometrics for a user with optional date/timestamp filtering.
Params:
user_id (str, required)
start_date/end_date (YYYY-MM-DD, optional)
start_timestamp_ms/end_timestamp_ms (int, optional)
cursor (str, optional)
limit (int, default 50)
Returns: {data, next_cursor, has_more, next_url}
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| user_id | Yes | ||
| end_date | No | ||
| start_date | No | ||
| last_timestamp | No | ||
| end_timestamp_ms | No | ||
| start_timestamp_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It states the return structure (pagination fields) and param defaults, but lacks details on side effects, authentication needs, or rate limits. Basic behavioral info is present.
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, starting with the main purpose, then listing parameters. The param block is clean but slightly lengthy. No unnecessary sentences, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, and description specifies return fields. However, it does not explain what 'biometrics' data actually contains (e.g., heart rate, blood pressure), leaving ambiguity. With an output schema, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description enumerates all parameters with types and optionality, adding value by clarifying format (e.g., YYYY-MM-DD) and defaults. However, it adds no deeper meaning about parameter relationships or usage constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get biometrics', the target 'for a user', and filtering options. It distinguishes from siblings that focus on other data types like sleep, scores, activities, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description only lists parameters without advising on appropriate contexts or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_caloriesB
Get calorie details for a user.
Params:
user_id (str, required)
date (YYYY-MM-DD, optional; default: today in SENSR_TZ or America/Chicago)
granularity (enum str, optional; default 'day'): day|week|month|year
Returns: Sensr /v1/calorie/details response
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| user_id | Yes | ||
| granularity | No | day |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the verb and resource. It omits details about authentication requirements, data freshness, or whether the request is idempotent. The return line merely references an endpoint without explaining the response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. The parameter list is clearly structured, though it could be more integrated into a flowing sentence. The inclusion of the return line adds value without excessive length.
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 and the presence of an output schema, the description provides basic completeness. However, it lacks context about the scope of data (e.g., whether it includes all users or a specific user) and does not explain the significance of the granularity parameter or the default date behavior in practical terms.
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 the input schema has no descriptions, the description adds meaning by specifying the date format (YYYY-MM-DD), the default time zone (SENSR_TZ or America/Chicago), and the valid granularity values (day|week|month|year). This compensates for the 0% schema description coverage and clarifies usage for the optional 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's action: 'Get calorie details for a user.' The verb 'get' and resource 'calorie details' are specific and distinct from sibling tools like get_sleep or get_scores, which target different health metrics.
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 does not mention prerequisites, such as whether the user must have data for the specified date, nor does it indicate when another tool like get_activities would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_org_scores_summaryA
Bulk: scores summary across users in the org.
Date selection (mutually exclusive): date OR (start_date+end_date) OR days. Params:
date (YYYY-MM-DD, optional; default today)
start_date/end_date (YYYY-MM-DD, optional)
days (int>=1, optional)
max_users (int, default 50)
concurrency (int, default 5)
Returns: {range, users:[{user_id,days:[{date,data}],summary}], errors}
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| days | No | ||
| end_date | No | ||
| max_users | No | ||
| start_date | No | ||
| concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the burden. It discloses the return structure (range, users, errors) and the concurrency parameter, which hints at potential parallel execution. However, it does not mention side effects, rate limits, or performance considerations for large orgs. The disclosure is good but not exhaustive.
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 fairly long but well-organized. It starts with the tool's purpose, then clearly presents parameters with bullet points, and ends with the return structure. It is front-loaded and each sentence serves a purpose. Could be slightly more concise, but overall it is effective.
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 6 optional parameters, no annotations, and an existing output schema, the description covers parameter behavior, mutual exclusivity, and return structure. It addresses the missing schema coverage. However, it does not mention error handling, pagination, or limits beyond max_users default. For most uses, it is complete enough.
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?
Despite 0% schema description coverage, the description compensates thoroughly by listing all 6 parameters with types, defaults, and mutual exclusivity rules (date selection: mutually exclusive). It adds format hints (YYYY-MM-DD) and constraints (days int>=1). This provides significant meaning beyond the bare 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 'Bulk: scores summary across users in the org.' This indicates a bulk operation for the entire organization, distinguishing it from individual score tools like get_scores. The verb 'get' and resource 'org scores summary' 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 explicitly notes the mutually exclusive date selection (date OR start_date+end_date OR days) and lists all parameters with defaults. It does not explicitly mention when to use this tool versus sibling tools like get_scores, but the bulk nature is implied. A slight improvement could be an explicit alternative suggestion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_org_sleep_summaryA
Bulk: sleep summary across users in the org.
Date selection (mutually exclusive): date OR (start_date+end_date) OR days. Params:
date (YYYY-MM-DD, optional; default today)
start_date/end_date (YYYY-MM-DD, optional)
days (int>=1, optional)
max_users (int, default 50)
concurrency (int, default 5)
Returns: {range, users:[{user_id,days:[{date,data}],summary}], errors}
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| days | No | ||
| end_date | No | ||
| max_users | No | ||
| start_date | No | ||
| concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry transparency. It explains date selection logic, parameter defaults, and return format, but does not declare safety (read-only), permissions, or behavior under errors. The inclusion of concurrency hints at internal behavior, but overall it leaves important aspects implicit.
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 well-structured with a one-line summary, a line explaining date selection logic, a bullet list of parameters, and a return format outline. It is front-loaded with key information and every sentence adds value, though it is somewhat lengthy due to the parameter list. Structure is clear 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?
Given the tool has 6 parameters and an output schema, the description covers the main functional aspects: date selection modes, parameters, and return structure. However, it omits information about pagination, ordering, or handling of missing data. The concurrency and max_users hints are present but not fully explained. Overall, it is reasonably complete for basic usage.
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 lacks any descriptions (coverage 0%). The description compensates fully by listing all six parameters with formats, defaults, and the critical mutual exclusivity rule for date selection. It adds significant meaning beyond the schema, making it very helpful for the agent.
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 provides a bulk sleep summary across users in the org using the verb 'get' and resource 'org sleep summary'. It distinguishes from sibling tools like get_sleep (individual) and get_org_scores_summary (scores) by explicitly labeling it as 'Bulk' and specifying the domain (sleep).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly compare to alternatives or provide guidance on when not to use. It implies usage for org-level sleep summaries via 'Bulk' but lacks explicit exclusion criteria or mentions of sibling tools. This is borderline implied usage, falling short of clear guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scoresA
Get scores for a user.
Accepted date inputs (mutually exclusive):
date (YYYY-MM-DD, optional; default: today in SENSR_TZ or America/Chicago)
OR start_date/end_date (YYYY-MM-DD, inclusive)
OR days (int >=1): last N days ending today
Returns: {range, results:[{date,data}], summary}
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| days | No | ||
| user_id | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the return format (range, results, summary), date behavior (timezone, mutual exclusivity), and default date. Absent are potential error handling or access constraints, but the core behavior is well-covered.
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 about 5 sentences with bullet-like formatting for date options. It is efficient, scannable, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (5 params, date constraints) and an output schema, the description covers core functionality and return structure. Missing details include error messages, limits on days or date range, and explicit clarification that the tool is read-only (though implied).
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%, so the description must compensate. It fully explains each date parameter (date, start_date, end_date, days) with format, mutual exclusivity, and defaults. user_id is required but its purpose is obvious from the tool name.
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 starts with a clear verb+resource: 'Get scores for a user.' It distinguishes from sibling tools like get_sleep, get_biometrics, etc., by focusing on 'scores' and specifying date range behavior.
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 explains the three mutually exclusive date input options with formats and constraints, and mentions the default timezone. However, it does not provide guidance on when to use this tool over siblings like get_org_scores_summary or get_user_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sleepA
Get sleep for a user.
Accepted date inputs (mutually exclusive):
date (YYYY-MM-DD, optional; default: today in SENSR_TZ or America/Chicago)
OR start_date/end_date (YYYY-MM-DD, inclusive)
OR days (int >=1): last N days ending today
Other params:
summary_only (bool, default true): if true, strips verbose time-series
Returns: {range, results:[{date,data}], summary}
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| days | No | ||
| user_id | Yes | ||
| end_date | No | ||
| start_date | No | ||
| summary_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It explains date parameter mutual exclusivity, default timezone, the effect of summary_only, and the return structure. This provides good insight into tool behavior, though it doesn't explicitly state side-effect safety (e.g., read-only nature).
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 well-structured, starting with a clear purpose then listing parameter groups. It is detailed but not verbose. A slight improvement could be more bullet-like with less prose, but it remains concise enough for efficient reading.
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 no annotations and a moderate-complexity tool, the description covers input semantics, default behavior, and output format. It mentions timezone handling and parameter mutual exclusivity. It does not cover error conditions or rate limits, but for a read-like tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so by detailing each date input variant, defaults, and constraints. The summary_only parameter is explained. User_id is not explicitly described but is required and self-evident. Overall, it adds significant value beyond the bare 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 'Get sleep for a user' and elaborates on multiple input methods (date, range, days). This verb+resource combination is unambiguous and distinct from sibling tools like get_biometrics or get_activities, which cover different health metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the description explains the date input options, it does not mention prerequisites, exclusion of other tools, or scenarios where get_sleep is preferable over get_biometrics or similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_by_emailC
Find a user by email (exact match preferred).
Params:
email (str, required)
Returns: {data: user|null} or {error:...}
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It states the basic read operation and return format but omits permissions, rate limits, or behavior on missing input. 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 short and front-loaded with the core purpose. It uses a clear param listing format, but could be more efficiently structured. Every sentence serves a purpose without unnecessary 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?
For a simple 1-param lookup with an output schema present, the description covers input, return format, and basic behavior. It is adequate, but could benefit from mentioning exact match fallback or error handling nuance.
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's 'email (str, required)' merely echoes the schema. Schema coverage is 0%, and the description adds only the phrase 'exact match preferred', which provides minimal extra meaning beyond the schema definition.
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 finds a user by email, which is specific and distinct from siblings like get_user_profile or search_user. The phrase 'exact match preferred' adds nuance, but it doesn't explicitly differentiate from other search 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 provides no explicit guidance on when to use this tool versus alternatives like search_user or get_user_profile. It only implies exact match usage, but lacks when-not-to-use instructions for a multi-tool context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_idsA
Get all organization user IDs. Returns /v1/organizations/users/ids
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the endpoint and basic function, omitting details like rate limits, pagination, or output format. For a zero-parameter tool, this is minimally adequate.
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: one for function, one for endpoint. Concise and front-loaded. The endpoint information is slightly redundant but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description should convey what the output contains (list of IDs). It mentions the endpoint but not the return format, leaving some gaps. Adequate but not thorough.
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?
There are no parameters, so schema coverage is 100%. Per guidelines, baseline is 4. The description adds no extra parameter info, which is acceptable given no parameters exist.
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 'Get', the resource 'all organization user IDs', and provides the API endpoint, making it distinct from sibling tools like get_user_by_email or search_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not use this tool versus alternatives. Usage is implied by the name and description, but explicit differentiation from siblings is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileA
Get a specific user's full profile by user ID.
Params:
user_id (str, required): the user's ID
Returns: {data: user|null} or {error:...}
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It mentions that the tool returns user data or null and can return an error, but it does not discuss side effects, permissions, rate limits, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with the purpose stated first, followed by the parameter list and return format. Every sentence serves a clear purpose without 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?
Given the tool's simplicity (one parameter, no nested objects, output schema exists), the description is fairly complete. It specifies the required param and the return structure. Additional context about the user profile structure might be beneficial but is not critical.
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%, so the description must compensate. It adds a brief but clear description of the user_id parameter ('the user's ID'), which adds meaning beyond the schema's type and title. For a single parameter, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a specific user's full profile by user ID. The verb 'Get' and resource 'user profile' are specific, and the method 'by user ID' distinguishes it from siblings like get_user_by_email or search_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying the required parameter (user_id) and the return format. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersB
List organization users.
Params:
page (int, default 1)
limit (int, default 100)
search (str, optional): substring query
Returns: Sensr /v1/organizations/users response
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It merely mentions the return type ('Sensr /v1/organizations/users response') without detailing pagination, idempotency, or safety traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, purpose front-loaded, no redundant sentences. Each line (purpose, params, returns) is necessary and 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?
With 3 parameters and no output schema details in description, the description is sufficient for basic understanding but lacks context on pagination behavior or response structure. Output schema exists but description doesn't leverage it.
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%, but the description adds meaning by listing parameters with defaults and explaining 'search' as 'substring query'. This adds value beyond the schema but is minimal.
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 organization users,' which is a specific verb+resource. It distinguishes from siblings like get_user_by_email and search_user by implying a full listing, but no explicit differentiation.
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 vs alternatives like search_user. The description only states what it does, without context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_userA
Search for users by a free-text query (name/email).
Params:
query (str, required)
page (int, default 1)
limit (int, default 50)
Returns: Sensr /v1/organizations/users response
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavior. It mentions the return type ('Sensr /v1/organizations/users response'), but lacks details on side effects, authentication, or error handling. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose, a clear parameter list, and a return line. It is front-loaded and 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 the tool's simplicity (3 params, output schema exists), the description covers purpose, parameters, and return type. It does not explain pagination details or edge cases, but is sufficiently complete for a straightforward search 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 0%, so the description must add meaning. However, it merely lists parameter names, types, and defaults, which are already present in the input schema. No additional context like allowed values, formats, or examples is provided.
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 'Search for users by a free-text query (name/email)', specifying the verb and resource, and distinguishes from siblings like get_user_by_email (specific email) and list_users (no query).
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 when to use (free-text query) and the return type, but does not explicitly state when not to use or mention alternatives. It provides clear context for the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v0.2.0- First observed
debug_request - First observed
get_activities - First observed
get_biometrics - First observed
get_calories - First observed
get_org_scores_summary - First observed
get_org_sleep_summary - First observed
get_scores - First observed
get_sleep - First observed
get_user_by_email - First observed
get_user_ids - First observed
get_user_profile - First observed
list_users - First observed
search_user
TDQS
Each tool targets a distinct resource or action: user lookups by email, ID, or query; sleep, scores, biometrics, activities, calories are separate data types; bulk summaries are distinct; debug_request is a utility. No overlapping purposes.
All tools follow snake_case with a consistent verb_noun pattern: get_*, list_*, search_*, debug_*. No mixing of camelCase or inconsistent verb styles.
13 tools is well within the ideal 3-15 range for a focused sensor bio API. Each tool serves a clear purpose without being excessive or insufficient.
The tool surface covers user management (lookup, search, list) and key health data (sleep, scores, biometrics, activities, calories) both individually and in bulk for sleep and scores. Minor omission: no bulk versions for biometrics, activities, or calories, but core workflows are complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- freddyOAuthcoach.freddy
Connect your wearables, rings and training apps, then ask your AI about your own health data.
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Collect Apple Health data from your wearables through the Context app and query it via MCP
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides access to Oura Ring health data, including sleep, activity, readiness, and stress metrics via the Model Context Protocol. It enables users to query their personal biometric information and daily health summaries through natural language in MCP-compatible clients.2,013MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and analyze health metrics from Runalyze, including HRV, sleep, resting heart rate, and activities, through the Model Context Protocol.9-
- FlicenseAqualityDmaintenanceExposes real-time health data from the Ultrahuman Ring to AI agents via the Model Context Protocol, providing optimized summaries with trend analysis and actionable insights.7-
- AlicenseAqualityDmaintenanceConnects AI assistants to health data via the Biological Sovereignty Protocol, with cryptographically verified user consent enforced on-chain.1315Apache 2.0
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/GetSensr-io/sensorbio-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server