Skip to main content
Glama
MSPbotsAI

simpleinout-mcp

by MSPbotsAI

simpleinout-mcp

Simple In/Out MCP Service — a stateless HTTP MCP server wrapping the Simple In/Out APIv4, covering company info, in/out statuses, users, groups, beacons, geofences, networks, announcements, and roles.

Tech stack: Python 3.12 + uv + FastMCP (Starlette/Uvicorn)

It follows the MSPbots Vendor MCP Service SOP: stateless, no stored credentials, per-request header authentication only (no environment-variable credential fallback on the HTTP path).

Scope

15 tools, going beyond MSPbots' historical usage (which was just 1 endpoint — "Companies") to cover the broader resource catalog, prioritizing the core check-in/check-out status feature plus the read-side of every other resource category the API exposes.

Related MCP server: Hello World MCP Server

Authentication

Simple In/Out's API is pure OAuth2 with no non-redirect alternative (confirmed against the official docs — only authorization_code and refresh_token grants exist; no client_credentials, no API key). However, the redirect step is only needed once, by a human, out-of-band — not by this service at runtime:

  1. One-time setup (a person does this, not the MCP): visit GET /oauth/authorize?response_type=code&client_id=...&redirect_uri=...&scope=write, log in, approve. Exchange the returned code for an access_token + refresh_token via POST /oauth/token with grant_type=authorization_code.

  2. Ongoing operation (this service does this, per call): exchange the refresh_token for a fresh access_token via POST /oauth/token with grant_type=refresh_token — this grant needs only client_id + client_secret + refresh_token, no redirect_uri. Since access tokens are cheap to re-mint and this service must stay stateless, it does this on every call rather than caching (no cross-request caching of tokens either — see SOP §3.4).

So the only credentials this service needs are client_id, client_secret, and a refresh_token obtained once via step 1. These values are supplied per-request via HTTP headers only — there is no environment variable or config field for them, and no fallback that would read them from the environment.

Quick Start

docker compose up --build

The server starts on http://localhost:8080.

Local (uv)

uv sync
python -m simpleinout_mcp

Health Check

curl http://localhost:8080/health
# {"status": "ok"}

No credentials are required for the health endpoint (it is a pure local liveness probe and does not call the Simple In/Out API).

HEADER 授权参数说明 (Authentication)

Every request to /mcp must include all three of the following HTTP headers:

Header

类型

是否必填

默认值

枚举值

字段描述

Example

X-SimpleInOut-Client-Id

string

Simple In/Out OAuth2 client ID(发邮件到 help@simplymadeapps.com 申请)

abc123def456

X-SimpleInOut-Client-Secret

string

Simple In/Out OAuth2 client secret

xyz789uvw012

X-SimpleInOut-Refresh-Token

string

一次性人工登录授权换出来的 refresh_token(本服务用它每次调用换新的 access_token,不需要 redirect_uri)

osm5x33j2wd6rlsnwenrdrlgk1jpgsi5

Missing any of the three headers returns 401 Unauthorized with the list of required header names in the response body.

Environment Variables

Non-credential configuration only — see Authentication above for how credentials are supplied.

Variable

Default

Description

MCP_HTTP_PORT

8080

HTTP server listening port

MCP_HTTP_HOST

0.0.0.0

HTTP server listening host

SIMPLEINOUT_CLIENT_ID_HEADER

X-SimpleInOut-Client-Id

Header name the Gateway sends the client ID under (name only, not a credential value)

SIMPLEINOUT_CLIENT_SECRET_HEADER

X-SimpleInOut-Client-Secret

Header name for the client secret

SIMPLEINOUT_REFRESH_TOKEN_HEADER

X-SimpleInOut-Refresh-Token

Header name for the refresh token

MCP Endpoint

POST http://localhost:8080/mcp

Connect your MCP client with:

  • Transport: http (Streamable HTTP)

  • Headers: X-SimpleInOut-Client-Id, X-SimpleInOut-Client-Secret, X-SimpleInOut-Refresh-Token (all required)

Available Tools (15)

Tool

Description

Simple In/Out endpoint

simpleinout_get_current_company

Get the current company's profile

GET /companies/my

simpleinout_list_statuses

List status-change history company-wide

GET /statuses

simpleinout_list_my_statuses

List the current user's status history

GET /users/my/statuses

simpleinout_list_user_statuses

List a specific user's status history

GET /users/:id/statuses

simpleinout_create_my_status

Create a new status for the current user (check in/out)

POST /users/my/statuses

simpleinout_create_user_status

Create a new status for another user

POST /users/:id/statuses

simpleinout_list_users

List all users, optionally filtered

GET /users

simpleinout_get_user

Get a specific user

GET /users/:id

simpleinout_get_current_user

Get the current authenticated user

GET /users/my

simpleinout_list_groups

List all groups

GET /groups

simpleinout_list_beacons

List all beacons

GET /beacons

simpleinout_list_fences

List all geofences

GET /fences

simpleinout_list_networks

List all Wi-Fi networks

GET /networks

simpleinout_list_announcements

List all announcements

GET /announcements

simpleinout_list_roles

List all roles

GET /roles

All tools are read-only except simpleinout_create_my_status and simpleinout_create_user_status. page_size on the list_groups/list_beacons/list_fences/list_networks/list_announcements tools is clamped server-side to 200 (Simple In/Out's docs specify a default of 25 but do not document a hard maximum, so the SOP's fallback ceiling is used).

测试示例 (Test Example)

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-SimpleInOut-Client-Id: <client_id>" \
  -H "X-SimpleInOut-Client-Secret: <client_secret>" \
  -H "X-SimpleInOut-Refresh-Token: <refresh_token>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "simpleinout_get_current_user", "arguments": {} }
  }'

Per SOP §12, run initializetools/listtools/call in that order with your own test credentials before considering the service verified end-to-end — /health returning 200 does not imply /mcp is usable.

Known Gaps

  • ⚠️ Not yet tested against a live Simple In/Out account. All 15 tools checked structurally only (MCP handshake, tools-list, schema validity, /health, gateway 401 credential-gating). Per the parent ClickUp task, the previously-applied API client has expired; a new one has been requested via email (registering MSPbots' own MCP Management Service OAuth callback URLs as the redirect URIs) and is pending Simple In/Out's reply. Once a client_id/secret comes back, someone still needs to do the one-time interactive authorization to obtain the initial refresh_token before this can be tested end-to-end.

  • Endpoint paths/params verified directly against the docs' verbatim Endpoint/Route/Parameters blocks (page text extraction, not an AI-summarized fetch) — not guessed.

  • "Settings" has no documented endpoint at all — it only appears as a timestamp key inside the meta.last_updated_at object on every response, not as its own resource. Not built as a tool.

  • "Favorites" is not a top-level resource — all favorites actions live under /users/my/favorites (bulk-replace via POST) and /users/my/statuses/favorite//hide//unfavorite (per-item). No GET /favorites exists. Not built as a tool in this 15-tool scope; the POST /users/my/favorites bulk-replace endpoint could be added if favorites management is needed.

  • Statuses have no update/PATCH — a status is an immutable log entry; "changing" status means creating a new one (simpleinout_create_my_status/simpleinout_create_user_status).

  • Scope is limited to the 15 operations above, not the full API surface (which also includes user/role/group create-update-delete, beacon/fence/network create-update-delete, and the newer Reporting API endpoint mentioned in Simple In/Out's changelog).

  • simpleinout_list_users has no documented pagination parameters in the vendor docs (unlike groups/beacons/fences/networks/announcements), so no page/page_size args were added to it.

API Reference

Available Tools

15 tools
simpleinout_create_my_statusA

Create (change) the current authenticated user's status — the core check-in/check-out action.

    API: POST /users/my/statuses

    Args:
        status: Required. One of "in", "remote", "busy", "break", "out",
            "sick", "vacation".
        comment: Optional comment to attach to the status change.
        created_at: Optional timestamp to backdate/schedule the status change.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
commentNo
created_atNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It clearly states the mutation effect ('Create (change)') and the intended use as a check-in/check-out action. It also includes the API endpoint and argument semantics. Lacks explicit side-effect details (e.g., notifications, irreversibility), but the core behavior is well disclosed.

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: a clear one-liner purpose, API endpoint, and bullet-like args. Every sentence earns its place; no wasted words. Scannable and informative.

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

Completeness5/5

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

Given the tool's moderate complexity and absence of annotations, the description covers purpose, API, parameters, enums, and behavioral context. Output schema exists, so return values need no explanation. This is complete for an agent to select and invoke correctly.

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%, but the description fully compensates: it lists allowed status values, explains comment and created_at semantics including backdating/scheduling. This provides meaning far 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 the action: 'Create (change) the current authenticated user's status' and identifies it as 'the core check-in/check-out action.' This specific verb+resource and scope fully distinguishes it from sibling tools like create_user_status (which targets other users).

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

Usage Guidelines4/5

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

The description provides clear context by specifying 'current authenticated user' and calling it the core check-in/check-out action. It does not explicitly mention alternative tools or when-not to use, but the scope is self-evident from the name and description, meeting the 'clear context, no exclusions' bar.

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

simpleinout_create_user_statusA

Create (change) another user's status on their behalf. Requires the acting account to have permission to manage that user's status.

    API: POST /users/:id/statuses

    Args:
        user_id: Required. The user's ID to change the status for.
        status: Required. One of "in", "remote", "busy", "break", "out",
            "sick", "vacation".
        comment: Optional comment to attach to the status change.
        created_at: Optional timestamp to backdate/schedule the status change.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
commentNo
user_idYes
created_atNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It mentions the permission requirement and that created_at can backdate/schedule the change, adding useful context. Yet it does not disclose whether the operation overwrites the existing status, triggers notifications, or has other side effects, leaving some behavioral ambiguity.

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 with an API line and a clean Args list, and every sentence adds value. The API endpoint may be technically useful but is not strictly necessary for an AI agent, making it slightly less concise than optimal.

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 complexity and lack of annotations, the description covers purpose, permission, parameters, and allowed values. The presence of an output schema alleviates the need to describe return values. It does not address error scenarios or invalid input handling, but for a simple status-update tool it is reasonably complete.

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 schema has zero parameter descriptions, and the description fully compensates by detailing each argument. It lists required fields, provides the exact allowed values for 'status' (in, remote, busy, break, out, sick, vacation), and explains the optional nature and purpose of 'comment' and 'created_at'.

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 function: 'Create (change) another user's status on their behalf.' This distinguishes it from sibling tools like simpleinout_create_my_status, which would handle the acting user's own status. The verb 'Create' plus the resource 'status' makes the purpose 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 clarifies that permission is required to manage the user's status, providing a prerequisite. It implies usage for changing another user's status, which differentiates it from tools like create_my_status. However, it does not explicitly state exclusions or mention alternative tools by name, so it falls slightly short of full guidance.

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

simpleinout_get_current_companyA

Retrieve the current company.

    API: GET /companies/my

    Args:
        expand: Optional comma-separated list of related resources to embed.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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. It discloses the HTTP method (GET) and API endpoint, implying a safe read operation. However, it does not mention authentication requirements, rate limits, or what happens if no company exists. The GET path adds some context but leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise, with the core purpose front-loaded in the first sentence. The API reference and parameter explanation are minimal and directly relevant, with no 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?

Given the single parameter, presence of an output schema, and absence of annotations, the description provides enough context for a basic retrieval tool. It clearly identifies the resource and parameter, though it could be enhanced with usage scenarios or notes on the return value beyond what the output schema presumably covers.

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 explain the parameter. It does: 'Optional comma-separated list of related resources to embed' clarifies the expand parameter's purpose and format. This is a strong compensation beyond the bare schema definition.

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 'Retrieve the current company' with a specific verb and resource. This unambiguously distinguishes it from sibling tools like list_users or get_current_user, making the tool's purpose immediately apparent.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives or provide exclusions. The usage is implied by the 'current company' phrasing, but no explicit guidance or alternative tools are mentioned.

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

simpleinout_get_current_userA

Retrieve the current authenticated user.

    API: GET /users/my
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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. It states the API endpoint, but does not mention authentication requirements, error cases, or read-only nature beyond the word 'Retrieve'. This is a safe read operation, but no explicit behavioral context is provided.

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

Conciseness5/5

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

The description is extremely concise—one sentence plus the API path. Every token is informative, with no fluff or repetition. It is well-structured and front-loaded.

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

Completeness3/5

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

For a simple zero-parameter retrieval with an output schema, the description provides the essential purpose and endpoint. However, it lacks usage guidance and behavioral disclaimers, making it only minimally complete. The output schema covers return format, but the description could mention authentication or typical use cases.

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, and the schema coverage is 100% (trivially). The description does not need to explain parameters since none exist. Baseline for zero parameters is 4.

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 'Retrieve' and the resource 'the current authenticated user', distinguishing it from sibling tools like get_user or list_users. The API path 'GET /users/my' reinforces specificity, making it unambiguous.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention scenarios like retrieving the session user's profile or contrast with get_user. The description is purely declarative, leaving usage decisions to the agent.

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

simpleinout_get_userA

Retrieve a specific user.

    API: GET /users/:id

    Args:
        user_id: Required. The user's ID.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/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 behavioral disclosure. It only states the API endpoint and parameter, but does not mention potential errors (e.g., not found), authentication requirements, or any side effects. The behavior is largely opaque.

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: a one-sentence purpose, the API reference, and the argument definition. No unnecessary words, and it 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?

Given the tool's simplicity and the presence of an output schema, the description suffices for basic usage. However, it misses the opportunity to clarify differentiation from sibling tools like get_current_user, which could cause confusion during tool selection.

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 schema description coverage is 0%, the description adds meaningful semantic context for the single parameter: 'user_id: Required. The user's ID.' This clarifies the purpose of the parameter beyond the schema's bare type declaration.

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 'Retrieve a specific user' with a direct API endpoint, making the tool's purpose unambiguous. It distinguishes itself from list_users by emphasizing 'specific user' and from get_current_user by implying a user ID is provided.

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

Usage Guidelines3/5

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

The description implies usage (provide user_id to get a specific user) but does not explicitly discuss when to use this tool over alternatives like get_current_user or list_users. No exclusions or alternative tool names are mentioned.

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

simpleinout_list_announcementsA

List all announcements for the company.

    API: GET /announcements

    Args:
        page: Page number.
        page_size: Results per page.
        expand: Optional comma-separated list of related resources to embed.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
expandNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 the full burden of disclosing behavioral traits. It reveals the HTTP method GET, implying a read-only operation, and mentions pagination parameters. However, it does not clarify authentication needs, rate limits, or that 'all announcements' requires paginating through pages. The description could have provided more safety and operational context.

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 follows a clear structure: a one-sentence purpose, an API line, and an Args list. There is no extraneous content, though the API line is slightly redundant given the purpose statement. It is well-organized and appropriately sized for the tool's simplicity.

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 (3 optional parameters) and the existence of an output schema, the description covers the essential parameters and endpoint. However, it lacks contextual details like usage scenarios, prerequisites, or pagination iteration behavior. It is minimally viable but not fully complete for an agent unfamiliar with the company's API conventions.

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 add meaning to the parameters. It provides brief explanations for each parameter: page as 'Page number', page_size as 'Results per page', and expand as 'optional comma-separated list of related resources to embed.' This adds value beyond the schema's types and defaults, especially for expand. However, page/page_size descriptions are somewhat tautological, and expand could specify which resources are embeddable.

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 explicitly states 'List all announcements for the company,' using a specific verb and resource. This clearly distinguishes the tool from sibling list tools for roles, statuses, users, etc. The phrase 'for the company' adds contextual scope, making the purpose unambiguous.

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 provide explicit when-to-use guidance or mention alternatives. Usage is implied by the resource name and purpose, but there are no exclusions or comparisons to other sibling list tools. It is easy to infer when to use this tool, but the description lacks direct guidance.

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

simpleinout_list_beaconsA

List all beacons (Bluetooth presence beacons).

    API: GET /beacons

    Args:
        page: Page number.
        page_size: Results per page.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It states 'List all beacons' and specifies 'GET /beacons', which implies a read-only operation, but it does not clarify scope (e.g., all beacons across all companies or current company), authentication, or any other behavioral details. The word 'all' is ambiguous in a multi-tenant context.

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

Conciseness5/5

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

The description is concise and front-loaded with the core purpose, followed by the API endpoint and argument explanations. Each section earns its place, with no unnecessary fluff or repetition of the schema.

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

Completeness3/5

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

The description covers the essential purpose and parameters, and an output schema exists, so return values need not be explained. However, it lacks clarity on the scope of 'all beacons' and does not mention any context about filtering, sorting, or company scoping that might be relevant given the sibling tools. This leaves some ambiguity for correct invocation.

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 schema provides only parameter names, types, and defaults with no descriptions. The description adds 'page: Page number' and 'page_size: Results per page', giving meaningful semantics that help the agent understand pagination. It does not go deeper into default values or indexing, but it covers the basics effectively.

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

Purpose5/5

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

The description opens with 'List all beacons (Bluetooth presence beacons)' — a specific verb and resource that clearly identifies the tool's function. It also disambiguates 'beacons' as Bluetooth presence beacons, distinguishing it from other list tools for roles, fences, etc.

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

Usage Guidelines3/5

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

The description implies usage for listing beacons but gives no explicit guidance on when to choose it over sibling list tools. Sibling tools like list_fences and list_networks exist, but no alternatives or exclusions are mentioned. The usage context is clear only from the resource name.

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

simpleinout_list_fencesA

List all geofences.

    API: GET /fences

    Args:
        page: Page number.
        page_size: Results per page.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It provides the API endpoint (GET /fences) and pagination parameters, but does not mention any scoping (e.g., current company) or authentication requirements. This leaves some ambiguity about the tool's full behavior.

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

Conciseness5/5

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

The description is extremely concise, with the main purpose front-loaded and no unnecessary words. It efficiently conveys the API and args in a clear structure.

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

Completeness3/5

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

The tool is simple and has an output schema, so return values are covered. The description covers purpose and parameters, but lacks contextual details such as scoping rules or preconditions, which could be important for correct usage.

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

Parameters3/5

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

The description adds brief semantic meaning for both parameters ('Page number' and 'Results per page') which is not present in the schema beyond titles. Since schema coverage is 0%, this compensation is helpful but minimal for a simple two-parameter tool.

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 'List all geofences' with a specific verb and resource. It distinguishes itself from sibling list tools by naming 'geofences' and emphasizing 'all', which implies a comprehensive listing without filters.

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

Usage Guidelines3/5

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

The description implies usage by stating the purpose, but it does not explicitly mention when to use this tool versus alternatives or provide exclusions. Given the sibling tools are for different resources, the implied usage is clear, but explicit guidance is absent.

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

simpleinout_list_groupsA

List all groups.

    API: GET /groups

    Args:
        page: Page number.
        page_size: Results per page.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It discloses the API method (GET) and parameters, implying a read-only operation, but it does not explicitly mention pagination behavior or any side effects. This adds some context but lacks depth.

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

Conciseness5/5

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

The description is extremely concise with a clear structure: action, API endpoint, and args. Every line serves a purpose, and there is no unnecessary redundancy.

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 paginated list tool with an output schema, the description covers the key aspects: action, API endpoint, and parameter semantics. It lacks notes on pagination specifics or error handling, but is reasonably complete for its simplicity.

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

Parameters3/5

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

The description provides brief descriptions for both parameters ('Page number' and 'Results per page'), which adds meaning beyond the schema titles. However, it lacks details like default behavior, constraints, or indexing (e.g., 1-based vs 0-based).

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 all groups', identifying the verb 'list' and resource 'groups'. It doesn't explicitly distinguish from sibling tools, but the resource is unique among the siblings, making the purpose unambiguous.

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 when-to-use or alternative tool guidance is provided. The usage is implied by the tool name and description (i.e., when you need to list groups), but there are no exclusions or alternatives mentioned.

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

simpleinout_list_my_statusesA

List the current authenticated user's status history within a date range.

    API: GET /users/my/statuses

    Args:
        created_at: Required. Date/time range filter, e.g. "1523854800..1524459599".
    
ParametersJSON Schema
NameRequiredDescriptionDefault
created_atYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description adds value by specifying the API endpoint (GET /users/my/statuses) and the required date-range filter, implying a read-only operation. It does not disclose pagination, ordering, or error behavior, but for a simple list tool with an output schema, this is acceptable context.

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

Conciseness5/5

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

The description is compact and focused, with no wasted words. Each line serves a purpose: stating the action, providing the API endpoint, and explaining the required parameter.

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 required parameter) and the presence of an output schema, the description covers all essential aspects: purpose, parameter format, and API reference. It does not discuss alternatives or edge cases, but these are not critical for a straightforward list operation.

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 schema only defines created_at as a string with no additional meaning. The description fully compensates by explaining it is a date/time range filter and providing an explicit format example ('1523854800..1524459599'), making the parameter semantics clear.

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 ('List'), the resource ('status history'), and the scope ('current authenticated user'), distinguishing it from sibling tools like list_statuses or list_user_statuses. The verb+resource structure is explicit 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 clearly indicates this tool is for the current authenticated user's status history within a date range, providing clear context for when to use it. However, it does not explicitly exclude alternatives or mention cases where sibling tools like list_user_statuses should be preferred.

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

simpleinout_list_networksA

List all Wi-Fi networks used for automatic presence detection.

    API: GET /networks

    Args:
        page: Page number.
        page_size: Results per page.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/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 disclosing behavioral traits. It only states the action 'List' and the HTTP method, which implies read-only, but does not disclose pagination behavior, permissions, rate limits, or any other side effects. The description is minimal and does not add meaningful behavioral context beyond the obvious.

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 well-structured, with a clear purpose statement, the API endpoint, and a simple args list. It contains no unnecessary words or repetition, earning a high score for efficiency.

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 list tool with two optional parameters and an output schema, the description covers the essential aspects: what it lists, the endpoint, and the parameters. It does not include additional context like filters or business rules, but the tool's simplicity makes it reasonably 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?

The description provides brief meanings for the two parameters ('page: Page number', 'page_size: Results per page'), which adds a little value over the schema titles 'Page' and 'Page Size'. However, schema coverage is 0% and the explanations are minimal, not compensating enough for the lack of detailed schema descriptions.

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 function with a specific verb and resource: 'List all Wi-Fi networks used for automatic presence detection.' It also provides the API endpoint (GET /networks) and distinguishes itself from sibling list tools that target roles, statuses, users, etc.

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 gives clear context for when to use this tool: when you need to list Wi-Fi networks for presence detection. The sibling tool names are distinct, so the intended use is evident. However, it does not explicitly mention alternatives or exclusionary conditions, so it falls short of a 5.

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

simpleinout_list_rolesA

List all roles defined in the company (needed to create a user, which requires a role_id).

    API: GET /roles
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description discloses the API method (GET /roles), which implies a read-only, safe operation. It also specifies 'all roles', giving a sense of scope. No rate limits or pagination are mentioned, but the simplicity of the tool lowers the burden.

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

Conciseness5/5

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

The description is two sentences, with the primary purpose first and the API endpoint second. Every word adds value, and there is no redundancy or filler.

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

Completeness5/5

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

Given the tool's simplicity (0 params, output schema present), the description adequately explains what it does, why it matters (role_id for user creation), and the HTTP endpoint. No further context is needed.

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 zero parameters, so the schema already fully covers the input space. The description adds no parameter details because none exist, which is appropriate; the baseline for 0 params is 4.

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 ('List all roles defined in the company') with a specific verb and resource. It also distinguishes from sibling tools by noting the relationship to creating a user, which requires a role_id.

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?

It provides clear usage context by stating that roles are needed to create a user, implying when this tool would be invoked. It does not explicitly exclude alternatives, but for a simple list tool this is sufficient.

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

simpleinout_list_statusesA

List status-change history across the whole company within a date range.

    API: GET /statuses

    Args:
        created_at: Required. Date/time range filter, e.g. "1523854800..1524459599"
            (epoch seconds, `..` between two values for a range).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
created_atYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 responsibility. It discloses the HTTP method (GET) and parameter format, but does not mention any behavioral traits such as auth requirements, pagination, rate limits, or response details. The read-only nature is implied by 'List' but not explicitly stated.

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 succinct and well-structured. The main purpose is front-loaded, the API endpoint is provided in a single line, and the parameter explanation is clear without unnecessary fluff. 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?

For a simple one-parameter tool with an output schema, the description covers the essential aspects: purpose, parameter meaning, and endpoint. It does not explain pagination or potential limitations, but given the simplicity and output schema availability, it is nearly complete.

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%, but the description thoroughly explains the only parameter 'created_at': it is required, acts as a date/time range filter, includes a concrete example, and specifies the epoch seconds format with '..' separator. This fully compensates for the schema's lack of description.

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 function: 'List status-change history across the whole company within a date range.' This uses a specific verb and resource, and explicitly scopes it to the whole company, distinguishing it from sibling tools like simpleinout_list_my_statuses and simpleinout_list_user_statuses.

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

Usage Guidelines3/5

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

The description implies usage for company-wide status history within a date range, but it does not explicitly mention when to use this tool versus alternatives. It provides context (whole company) but no direct exclusions or alternative recommendations.

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

simpleinout_list_usersA

List all users in the company.

    API: GET /users

    Args:
        name: Filter by name.
        email: Filter by email address.
        group_id: Filter by group ID.
        status: Filter by current status.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
emailNo
statusNo
group_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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. It discloses the HTTP method 'GET', which implies read-only behavior, and lists filter parameters. However, it does not mention pagination, ordering, authentication needs, or response size, leaving some behavioral aspects untold.

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: a one-sentence summary, the API endpoint, and a clean list of parameters with one-line explanations. Every element earns its place without unnecessary verbosity.

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 straightforward list tool with four optional filters, the description covers the essential purpose and parameters. An output schema exists, so return values are already documented. Minor gaps like pagination or ordering are not addressed, but overall the description is sufficient for a simple list operation.

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 compensates by explaining each parameter's purpose (e.g., 'name: Filter by name'). This adds clear meaning beyond the raw schema types and defaults, though it doesn't provide details on matching behavior or allowed values.

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 'List all users in the company' with a specific verb and resource, and it maps to the GET /users endpoint. It distinguishes itself from sibling tools like list_roles and list_groups by focusing on users.

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

Usage Guidelines3/5

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

The description implies usage when you need to list users and optionally filter them, but it does not explicitly state when to use this tool versus alternatives like get_user or list_user_statuses. No exclusions or alternative tools are mentioned.

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

simpleinout_list_user_statusesA

List a specific user's status history within a date range.

    API: GET /users/:id/statuses

    Args:
        user_id: Required. The user's ID.
        created_at: Required. Date/time range filter, e.g. "1523854800..1524459599".
    
ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
created_atYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It clearly discloses the read operation and the API endpoint, and notes required inputs. However, it does not mention pagination, ordering, permissions, or potential errors. With an output schema present, the description adds moderate value.

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, using a summary line, the API endpoint, and a clean args list. Every element earns its place, and there is no redundant or filler content.

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 two-parameter tool with an output schema, the description is nearly complete. It gives the purpose, endpoint, and parameter details. It lacks minor context like authentication or pagination, but these are not critical for this simple list operation. The output schema reduces the need to describe return values.

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 coverage is 0% (no descriptions in the schema properties). The description compensates by fully explaining both parameters: user_id is 'The user's ID' and created_at is a 'Date/time range filter' with an example format. This is essential and adds 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 the action ('List'), the resource ('specific user's status history'), and the scope ('within a date range'). It distinguishes this tool from siblings like list_statuses and list_my_statuses by emphasizing 'specific user' and date range.

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 this tool: when you need a specific user's status history within a date range. It does not explicitly mention alternatives but the wording effectively differentiates it from sibling tools. Context is clear, but explicit exclusionary guidance is missing.

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. 15 tool updatesv0.1.0
    • First observedsimpleinout_create_my_status
    • First observedsimpleinout_create_user_status
    • First observedsimpleinout_get_current_company
    • First observedsimpleinout_get_current_user
    • First observedsimpleinout_get_user
    • First observedsimpleinout_list_announcements
    • First observedsimpleinout_list_beacons
    • First observedsimpleinout_list_fences
    • First observedsimpleinout_list_groups
    • First observedsimpleinout_list_my_statuses
    • First observedsimpleinout_list_networks
    • First observedsimpleinout_list_roles
    • First observedsimpleinout_list_statuses
    • First observedsimpleinout_list_user_statuses
    • First observedsimpleinout_list_users

TDQS

A3.9/5.0
Disambiguation4/5

Most tools target distinct resources (roles, users, groups, announcements, beacons, etc.), and the three status-listing tools are differentiated by scope (company, self, specific user). The only potential confusion is between list_my_statuses and list_user_statuses, but descriptions clearly indicate self vs. other.

Naming Consistency5/5

All tools follow a consistent `simpleinout_` prefix with a clear verb_noun pattern (list_*, get_*, create_*). No mixed conventions or ambiguous verbs; the naming is uniform and predictable.

Tool Count4/5

15 tools is within a reasonable range for a presence/status management server. A few list-only tools (beacons, fences, networks) feel slightly peripheral, but they align with the presence detection domain and do not make the set unwieldy.

Completeness3/5

The core workflow of checking in/out is covered via create_my_status and create_user_status, and status history is queryable. However, there are notable gaps: no create/update/delete for users, roles, groups, announcements, or configuration entities like beacons/fences/networks, limiting full lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

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/MSPbotsAI/simpleinout-mcp'

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