Skip to main content
Glama
GetSensr-io

Sensor Bio MCP Server

Official
by GetSensr-io

Sensor Bio MCP Server

CI Python 3.11+ License: MIT

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 | sh

Windows (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

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

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-server

Authentication

Method

Env Vars

Best For

API Token

SENSR_ORG_TOKEN or SENSR_API_KEY

Most users (recommended)

OAuth2

SENSR_CLIENT_ID + SENSR_CLIENT_SECRET

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

SENSR_ORG_TOKEN

*

Organization API token (recommended)

SENSR_API_KEY

*

Alias for SENSR_ORG_TOKEN

SENSR_CLIENT_ID

**

OAuth2 client ID

SENSR_CLIENT_SECRET

**

OAuth2 client secret

SENSR_SCOPE

OAuth2 scope (optional)

SENSR_BASE_URL

Override API base URL (default: https://api.sensorbio.com)

SENSR_TZ

Timezone for "today" calculations (default: America/Chicago)

* 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 uv is installed: run uv --version in your terminal

  • Check 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 sensorbio

  • Check 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.py

License

MIT

Available Tools

13 tools
debug_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)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
user_idYes
end_dateNo
start_dateNo
last_timestampNo
end_timestamp_msNo
start_timestamp_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
user_idYes
end_dateNo
start_dateNo
last_timestampNo
end_timestamp_msNo
start_timestamp_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
user_idYes
granularityNoday

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
daysNo
end_dateNo
max_usersNo
start_dateNo
concurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
daysNo
end_dateNo
max_usersNo
start_dateNo
concurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
daysNo
user_idYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. 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.

Purpose5/5

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.

Usage Guidelines4/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
daysNo
user_idYes
end_dateNo
start_dateNo
summary_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. 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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 13 tool updatesv0.2.0
    • First observeddebug_request
    • First observedget_activities
    • First observedget_biometrics
    • First observedget_calories
    • First observedget_org_scores_summary
    • First observedget_org_sleep_summary
    • First observedget_scores
    • First observedget_sleep
    • First observedget_user_by_email
    • First observedget_user_ids
    • First observedget_user_profile
    • First observedlist_users
    • First observedsearch_user

TDQS

A3.8/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tools follow snake_case with a consistent verb_noun pattern: get_*, list_*, search_*, debug_*. No mixing of camelCase or inconsistent verb styles.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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,013
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Exposes 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
    -

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GetSensr-io/sensorbio-mcp-server'

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