Skip to main content
Glama
fortytimer

fortytimer-mcp

Official
by fortytimer

Servidor MCP fortyTimer (solo lectura)

Un servidor MCP ligero que expone la API de solo lectura de una instalación de fortyTimer como herramientas para clientes MCP (Claude Desktop, Claude Code y otros). El servidor no contiene lógica de negocio propia: la autorización, la delimitación de la visibilidad y la minimización de datos las aplica exclusivamente la instalación de fortyTimer a la que se conecta el usuario.

Requisitos

  1. Una instalación de fortyTimer con el módulo de licencia api_readonly ("fortyTimer API") incluido en su licencia.

  2. Un token de API personal, creado en fortyTimer en Perfil → Seguridad → Tokens de API. El token se muestra una sola vez. Hereda la visibilidad de la cuenta de su propietario (admin: todos los usuarios, supervisor: conocimientos, administrador: solo él mismo) y nunca puede modificar nada (solo GET, capacidad read).

  3. Node.js ≥ 18 (se instala automáticamente cuando se instala como extensión de Claude Desktop).

Related MCP server: solidtime-mcp-server

Instalación (extensión de Claude Desktop)

Instale el archivo empaquetado fortytimer-<version>.mcpb con un doble clic o mediante Claude Desktop → Ajustes → Extensiones. Durante la instalación se le piden dos valores:

Campo

Valor

URL de fortyTimer

URL base de su instalación, p.ej. https://42.fortytimer.de (para instalaciones en subdirectorio incluya la ruta, p.ej. https://example.com/fortytimer/public)

Token de API

Su token personal de fortyTimer → Perfil → Seguridad

El token se guarda en el llavero del sistema operativo, no en texto plano.

Configuración manual (cualquier cliente MCP)

{
    "mcpServers": {
        "fortytimer": {
            "command": "node",
            "args": ["/path/to/fortytimer-mcp/dist/index.js"],
            "env": {
                "FORTYTIMER_URL": "https://42.fortytimer.de",
                "FORTYTIMER_TOKEN": "<token>"
            }
        }
    }
}

Compilación desde el código fuente

npm install
npm run build

Empaquetado como extensión de Claude Desktop:

npm prune --omit=dev
npx @anthropic-ai/mcpb pack . fortytimer-<version>.mcpb
npm install

Herramientas

Herramienta

Devuelve

fortytimer_me

Identidad + alcance de visibilidad del propietario del token

fortytimer_get_overtime_balance

Saldo de horas flexibles en determinada fecha (por defecto: ayer)

fortytimer_get_vacation_balance

Cuenta de vacaciones de un año (número de días /remodal/pendiente)

fortytimer_list_time_entries

Registros de jornada de un intervalo de fechas con totales exactos al minuto

fortytimer_list_project_times

Horas project, filtrables por proyecto/facturabilidad

fortytimer_list_requests

Solicitudes de ausencia por usuario/estado/tipo/rango de fechas

fortytimer_list_users

Usuarios dentro del alcance de visibilidad (para el parámetro user_idheres)

fortytimer_list_projects

Proyectos (para los filtros project_id)

Todas las herramientas son de solo lectura (readOnlyHint). Los intervalos de fechas tienen un máximo de 366 días en el servidor; las listas se paginan con 50 entradas por página (parámetro page). Las duraciones se devuelven como minutos enteros exactos más cadenas preformateadas de horas:minutosmodernización. Los campos de texto libre de las solicitudes de baja por enfermedad nunca son devueltos por la API por motivos de protección de datos.

Pruebas sin un cliente

npx @modelcontextprotocol/inspector node dist/index.js

(Establezca las variables de entorno FORTYTIMER_URL / FORTYTIMER_TOKEN en la interfaz de usuario del Inspector en el apartado "Variables de entorno").

Política de privacidad

Política de provacidad completa: https://fortytimer.de/privacy-policy.md

Resumen:

  • Este servidor MCP no almacena ningún dato. Además de sus bases de datos, cachés, registros de accesoelos o análisis.

  • Todos los datos fluyen únicamente entre el ordenador del usuario y la instalación de fortyTimer que el usuario ha configurado; no interviene ningún servicio de terceros y no se envían datos al autor de la extensión.

  • El token de API lo proporciona el el director del usuario usuario, lo conserva el cliente MCP (Claude Desktop lo guarda en el llavero del sistema) y se usa exclusivamente como cabecera Bearer frente a la URL de fortyTimer configurada.

  • Qué primeros datos personales pueden verse lo decide por completo la instalación de fortyTimer conectada: el token hereda la visibilidad de la cuenta de su propietario, y fortyTimer suprime los datos las partes de categorías de datos especiales (textos libres de las solicitudes de enfermedad) de todas las respuestas de la API.

  • El período de conservación de datos lo determina la instalación de fortyTimer conectada (su operador actuadoresolo como responsable del control de datos); la extensión no conserva nada.

  • Contacto: info@fortytwo-consulting.de / https://fortytimer.de

Seguridad

  • El token debe permanecer en la configuración local del cliente y nunca debe incorporarse a un repositorio, ni compartirse.

  • El token debe conservarse correctamente: fortyTimer → Perfil → Seguridad → Tokens de API → Eliminar (efecto inmediato); la creación y eliminación de tokens queda registrada en el registro de auditoría de fortyTimer como eventos de seguridad.

  • Límite de frecuencia de la API: 60 solicitudes por minuto.

Licencia

MIT – ver LICENSE.# Servidor fortyTimer MCP (read-only)

Un servidor MCP ligero que expone la API de solo lectura de una instalación de fortyTimer como herramientas para clientes MCP (Claude Desktop, Claude Code y otros). El servidor no contiene lógica de negocio propia: la autorización, la delimitación de visibilidad y la minimización de datos las aplica exclusivamente la instalación de fortyTimer a la que se conecta el usuario.

Requisitos

  1. Una instalación de fortyTimer con el módulo de licencia api_readonly ("fortyTimer API") incluido en su licencia.

  2. Un token de API personal, creado en fortyTimer en Perfil → Seguridad → Tokens de API. El token se muestra una sola vez. Hereda la visibilidad de la cuenta de su propietario (admin: todos los usuarios, supervisor: sus propios grupos de aprobación, empleado: solo él mismo) y nunca puede modificar nada (solo GET, permiso read).

  3. Node.js ≥ 18 (se incluye automáticamente al instalarse como extensión de Claude Desktop).

Instalación (extensión de Claude Desktop)

Instale el archivo empaquetado fortytimer-<versión>.mcpb mediante doble clic o desde Claude Desktop → Configuración → Extensiones. Durante la instalación se le solicitarán dos valores:

Campo

Valor

fortyTimer URL

URL base de su instalación, p.ej. https://42.fortytimer.de (para instalaciones en subdirectorio incluya la ruta, p.ej. https://example.com/fortytimer/public)

API token

Su token personal de fortyTimer → Perfil → Seguridad

El token se guarda en el llavero del sistema operativo, no almacenado en claro.

Configuración manual (cualquier cliemre MCP)

{
    "mcpServers": {
        "fortytimer": {
            "command": "node",
            "args": ["/path/to/fortytimer-mcp/dist/index.js"],
            "env": {
                "FORTYTIMER_URL": "https://42.fortytimer.de",
                "FORTYTIMER_TOKEN": "<token>"
            }
        }
    }
}

Compilación desde el código fuente

npm install
npm run build

Empaquetado como extensión de Claude Desktop:

npm prune --omit=dev
npx @anthropic-ai/mcpb pack . fortytimer-<version>.mcpb
npm install

Herramientas

Herramienta

Devuelve

fortytimer_me

Identidad y alcance de visibilidad del propietario del token

fortytimer_get_overtime_balance

Saldo de horas flexibles a una fecha (por defecto: ayer)

fortytimer_get_vacation_balance

Cuenta de vacaciones de un año (días disponibles/pendiente/restante)

fortytimer_list_time_entries

Registros de jornada de un período de fechas con totales exactos al minuto

fortytimer_list_project_times

Registrar de tiempos por proyecto, filtrarlos por proyecto/tipo de coste

fortytimer_list_requests

Solicitudes de ausencia por usuario/estado/tipo perior

fortytimer_list_users

Usuarios dentro del ámbito (para el parámetro user_id)

fortytimer_list_projects

Proyectos (para el filtro project_id)

Todas las herramientas son de solo lectura (readOnlyHint). Los intervalos de fechas están limitados a 366 días en el servidor, las listas se pueden paginar en 50 entradas por página (parámetro page). Las duraciones se devuelven como minutos exactos enteros y con un texto preformado horas:minutos. Los campos de texto libre de las solicitudes de enfermedad nunca son devueltos por la API por motivos de protección de datos.

Pruebas sin cliente

npx @modelcontextprotocol/inspector node dist/index.js

(Configure las variables de entorno FORTYTIMER_URL / FORTYTIMER_TOKEN en la interfaz del Inspector, bajo "Variables de entorno".)

Política de provacidad

Política de privacidad completa: https://fortytimer.de/privacy-policy.md

Resumen:

  • Este servidor MCP no almacena ningún dato. No contiene bases de datos, cachés, archivos de registro ni herramientas de análisis.

  • Todos los datos fluyen exclusivamente entre el propio dispositivo y la instalación de fortyTimer que el usuario ha configurado: no hay ningún servicio de terceros y no se transmiten datos al autor de la extensión.

  • El token que se usa es la clave de autorización, la conserva la herramienta (Claude Desktop la archiva en el llavero del SO) y se usa solamente como contrato Bearer contra la URL de fortyTimer configurada.

  • Qué datos personales se pueden ver lo determina completamente la instalación de fortyTimer a la que se conecta: el token hereda la visibilidad de la cuenta del propietario, y fortyTimer omple los datos de la categoría especial (textos libres de solicitudes por enfermedad) en todas las respuestas.

  • La conservación de datos la controla la instalación de fortyTimer en la que se use la tarjeta (su modelo de operador el responsable), la extensión no retiene nada.

  • Contacto: info@fortytwo-consulting.de / https://fortytimer.de

Seguridad

  • El token pertence a la configuración local de la propia manera – nunca lo en envíe a un repositorio ni lo comparta.

  • Recupero de revoco: fortyTimer → Perfil → Seguridad → Tokens de API → Elimilar (efectivo de inmediato); la creación y lessarrección de tokens se registran en el registro de auditoría el seguridad de fortyTimer.

  • Límite de solicitudes: 60 peticiones por minuto.

Licencia

MIT: véase el archivo LICENSE.

Available Tools

8 tools
fortytimer_get_overtime_balanceFlextime balanceA
Read-only

Flextime balance (Gleitzeit/overtime account) of a user as of a given date. Defaults to yesterday – the same figure shown on the fortyTimer dashboard. The response contains the exact balance as a signed hours:minutes string (formatted).

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoAs-of date in YYYY-MM-DD format
user_idNoUser ID (from fortytimer_list_users). Omitted: the token owner. Visibility is enforced server-side (admin: all users, supervisor: own approver groups, employee: self only).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds relevant behavioral details: the default as-of date is yesterday, the value matches the dashboard, and the response contains a signed hours:minutes string. No contradictions with annotations.

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

Conciseness5/5

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

Three short sentences with no filler: purpose, default behavior, and response format. The most important scoping information is front-loaded.

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?

There is no output schema, so the description compensates by stating the response contains the exact balance as a signed hours:minutes string. Parameter behavior is fully covered by the input schema, including visibility rules and defaults. For a simple read-only balance query, this is complete.

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 input schema has 100% coverage, so the baseline is 3. The description adds meaning for as_of by stating it defaults to yesterday, and for user_id by framing it as 'of a user' while the schema already documents visibility and defaulting to the token owner.

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 identifies the resource as 'Flextime balance (Gleitzeit/overtime account) of a user as of a given date' and uses a specific verb 'get' via the tool name. It also distinguishes itself from sibling fortytimer_get_vacation_balance by naming the overtime account and referencing the dashboard figure.

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 implicitly tells when to use this tool: to retrieve the flextime/overtime balance as of a date, with yesterday as the default matching the dashboard. It does not explicitly name alternatives or exclusion cases, but the resource is clearly scoped enough for an agent to select it appropriately.

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

fortytimer_get_vacation_balanceVacation balanceA
Read-only

Vacation account of a user for one year: entitlement, carry-over, adjustments, used, remaining and pending (requested but not yet approved) days. Defaults to the current year. Values are day counts; half days (0.5) are valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoVacation year, default: current year
user_idNoUser ID (from fortytimer_list_users). Omitted: the token owner. Visibility is enforced server-side (admin: all users, supervisor: own approver groups, employee: self only).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral details: default year behavior, day-count units, half-day validity, and the precise meaning of 'pending' as requested-but-not-approved. This goes beyond what annotations provide without contradicting them.

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

Conciseness5/5

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

Three short sentences, each earning its place: the account components, the default year behavior, and the day-count/half-day clarification. The information is front-loaded and there is no 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?

With no output schema, the description compensates well by enumerating the reported values and their units. It also clarifies default year and relies on the schema for user_id authorization semantics, leaving no major gap for an agent deciding whether and how to call it.

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 input schema already covers both parameters with descriptions, including the year default and user_id visibility rules, so schema coverage is 100%. The description mostly restates the year default and adds output-unit context rather than new parameter meaning.

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 identifies the resource: a user's vacation account for a year, with concrete components such as entitlement, carry-over, used, and remaining days. The tool name includes 'get_vacation_balance', and the sibling list shows a distinct overtime-balance alternative, 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 Guidelines4/5

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

The description establishes clear context: this is the vacation-balance read for a user in a given year, defaulting to the current year. It does not explicitly mention when not to use it or name alternatives, but the resource and sibling names make the intended use obvious.

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

fortytimer_list_projectsProject listA
Read-only

All projects with ID, name and active status (source of project_id values for project time filters).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare this as a safe, read-only, non-destructive operation, so the description does not need to repeat that. It adds useful context about the output fields and the tool's role as an ID source, but it does not disclose details like pagination, ordering, or whether the project list is exhaustive.

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

Conciseness5/5

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

A single sentence delivers the core purpose and the key detail about returned fields. There is no redundant phrasing or repetition of the title or schema information.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool, the description is complete: it states what is returned and why an agent would use it. The absence of an output schema is mitigated by naming the expected fields, and annotations cover the safety profile.

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 tool has zero parameters, so there is no parameter ambiguity to resolve. The description still adds value by explaining that the returned project IDs are meaningful inputs for project time filters, which is the closest relevant semantic context.

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 identifies the tool as listing all projects and specifies the returned fields: ID, name, and active status. It also distinguishes itself from sibling time-entry tools by framing the output as the source of project_id values for time filters.

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 a concrete use case: use this tool to obtain project_id values before applying project time filters. It does not explicitly list exclusions or alternatives, but the stated purpose is clear enough for an agent to know when to call it.

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

fortytimer_list_project_timesProject time entriesA
Read-only

Project time bookings of a user within a date range (default: last 30 days, max. 366 days), optionally filtered by project and billability, paginated with 50 entries per page. Durations are provided as exact integer minutes (minutes, total_minutes) together with preformatted hours:minutes strings (*_formatted); these minute-exact fields are the authoritative values, decimal hour sums would introduce rounding errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoResult page (50 entries per page)
date_toNoTo date in YYYY-MM-DD format
user_idNoUser ID (from fortytimer_list_users). Omitted: the token owner. Visibility is enforced server-side (admin: all users, supervisor: own approver groups, employee: self only).
billableNotrue = billable only, false = non-billable only
date_fromNoFrom date in YYYY-MM-DD format
project_idNoProject ID (from fortytimer_list_projects)

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already mark this as read-only and non-destructive, and the description adds valuable behavioral context: default 30-day windows up to 366 days, 50-per-page pagination, and a warning that minute-exact fields are authoritative to avoid decimal rounding errors. These details go beyond the structured annotations and help the agent know exactly what to expect.

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

Conciseness5/5

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

Two dense sentences contain the entire behavior contract with no filler or repetition. The operation and scope are front-loaded, and the clarification about minute-exact durations is placed at the end as an important caveat.

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

Completeness5/5

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

For a read-only listing tool with no required parameters and a fully documented schema, the description covers scope, filters, defaults, limits, pagination, and an output precision caveat. Nothing essential for selecting or invoking the tool correctly is missing.

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 100%, so the baseline is 3. The description earns a higher score by tying parameters to behavior, stating the default date range, the maximum allowed range, optional filters, and page size. Individual parameter meanings are already fully covered by the schema.

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 names a specific resource, Project time bookings of a user, a list operation, and the scoping dimensions (date range, filters, pagination). It is clear and self-contained, but it does not explicitly differentiate this tool from the similarly named sibling fortytimer_list_time_entries, so it stops short of full sibling distinction.

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 implied when to use the tool:retrieve a user's project time bookings within a date range, optionally filtered by project and billability. However, it provides no explicit when-not-to-use guidance or comparison to alternatives such as fortytimer_list_time_entries, leaving selection to inference.

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

fortytimer_list_requestsLeave requestsA
Read-only

Leave requests (vacation, flextime, sick leave) within the visibility scope of the token owner, filterable by user, status, type and date range (overlap semantics). Note: free-text fields of sick-leave requests are never returned by the API for data-protection reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoResult page (50 entries per page)
typeNoRequest type
statusNoRequest status
date_toNoTo date in YYYY-MM-DD format
user_idNoUser ID (from fortytimer_list_users). Omitted: the token owner. Visibility is enforced server-side (admin: all users, supervisor: own approver groups, employee: self only).
date_fromNoFrom date in YYYY-MM-DD format

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark the operation read-only and non-destructive, so the bar is lower. The description adds genuine behavioral context beyond that: visibility scoping of results, the overlap semantics for date-range filters, and a meaningful caveat that sick-leave free-text fields are never returned for data-protection reasons. These prepare the agent for response-shape gotchas. It is not exhaustive (no ordering or pagination behavior beyond the schema), hence 4 rather than 5.

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

Conciseness5/5

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

Two sentences with zero waste. The first front-loads the resource, scope, and filter capabilities; the second carries the data-protection caveat. Every clause earns its place and the description is easily scanned by an agent.

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?

With no output schema, the response structure is unspecified, but the description flags the one important ommission (sick-lave free-text fields) and covers the filter semantics and result scoping. The schema supplies page size, parameter formats, and the admin/supervisor/emplyee visability enforcement for user_id. Remaining gaps such as response ordering are minor for a filtered-list tool whose safety profile is already annotated.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description contributes 'overlap semantics' for date ranges, which adds meaning the schema's 'From/To date in YYYY-MM-DD format' descriptions lack. That is a single useful concept rather than substatial compensation, and the remaining parameter meanings are already fully carried by the schema.

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 identifies the resource (leave requests), enumerates its subtypes (vacation, flextime, sick leave), scopes it to the token owner's visibility, and lists the filter dimensions. The description reads as a noun phrase rather than an explicit 'Lists...', but the tool name supplies the verb and the content clearly distinguishes it from sibling list tools by resource. It stops short of a 5 because it never explicitly contrasts itself with a sibling like fortytimer_list_time_entries.

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?

Usage context is implied: the resource type and the visible sibling domains (balances, time entries, projects, users) make it reasonably clear this tool is for retrieving leave requests. However, there is no explicit when-to-use or when-not-to-use guidance, no alternative routing, and no statement about how this relates to the balance tools. The agent must infer the choice from the tool names.

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

fortytimer_list_time_entriesWork time entriesA
Read-only

Work time entries of a user within a date range (default: last 30 days, max. 366 days), paginated with 50 entries per page. Durations are provided as exact integer minutes (worked_minutes, total_worked_minutes) together with preformatted hours:minutes strings (*_formatted); these minute-exact fields are the authoritative values, decimal hour sums would introduce rounding errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoResult page (50 entries per page)
date_toNoTo date in YYYY-MM-DD format
user_idNoUser ID (from fortytimer_list_users). Omitted: the token owner. Visibility is enforced server-side (admin: all users, supervisor: own approver groups, employee: self only).
date_fromNoFrom date in YYYY-MM-DD format

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and non-destructive behavior. The description adds valuable behavioral details: 50-entry pagination, a 366-day maximum range, and the critical caveat that minute-exact durations are authoritative over preformatted strings to avoid rounding errors.

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 front-loaded: the first sentence establishes scope, date range, and pagination; the second sentence explains the authoritative duration fields and rounding risk. Every sentence adds necessary information without 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 read-only paginated list, the description covers the key invocation details: date range defaults, pagination, and response semantics for durations. It does not describe the full return envelope or ordering, but the annotations and schema cover safety and parameters well, making it sufficient 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 input schema covers all four parameters, so the baseline is 3. The description adds operational meaning beyond the schema by stating the default last-30-days range, the maximum range, and the page size, which helps agents set date_from, date_to, and page correctly.

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

Purpose5/5

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

The description states a specific resource and scope: a user's work time entries filtered by date range, with pagination. It distinguishes itself from sibling tools by focusing on time entries and user/date filtering, so an agent can select it correctly without opening the schema.

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 usage context: retrieve work time entries for a user within a date range, with default and maximum range values. It does not explicitly contrast with alternatives like list_project_times, but the scope is unambiguous and no misleading exclusions are present.

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

fortytimer_list_usersUser listA
Read-only

Users within the visibility scope of the token owner (source of user_id values for the other tools). Active users by default; include_inactive = true also lists deactivated users.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_inactiveNoAlso list inactive users

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds useful context about visibility scope and the active/inactive default, but does not disclose return format, pagination, or fields included in the response. This is similar to other list tools where annotations cover safety but response details remain unspecified.

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

Conciseness5/5

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

Two sentences deliver the tool's purpose, scope, relationship to other tools, and the single parameter's behavior with no wasted wording. The key usage context is front-loaded.

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

Completeness4/5

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

For a simple read-only list tool with one optional parameter, the description covers the essential invocation details: visibility scope, default active-only behavior, and how to include inactive users. It does not describe the response shape beyond mentioning user_id values, and there is no output schema, so a little more detail about returned fields could make it fully complete.

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 100% and the schema already describes include_inactive, but the description adds the crucial default behavior ('Active users by default') and clarifies that include_inactive = true includes deactivated users. This goes beyond the schema's brief 'Also list inactive users'.

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 identifies the tool as a user-listing operation with a specific scope ('visibility scope of the token owner') and explicitly frames it as the source of user_id values for other tools. This makes its purpose distinct from sibling tools that list time entries, projects, or requests.

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 states when to use the tool: as the source of user_id values for other tools, and clarifies the default behavior for active users versus the include_inactive flag for deactivated users. It does not explicitly name alternative tools for exclusion, so it stops short of full when-not guidance.

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

fortytimer_meOwn accountA
Read-only

Identity and visibility scope of the token owner (admin | vorgesetzter/supervisor | mitarbeiter/employee). Useful as a first call to know whose data is returned when no user_id is given.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds useful behavioral context about role scope and data ownership, but does not detail the output shape or whether the role list is exhaustive.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and then adds practical usage context. No redundant wording.

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

Completeness4/5

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

For a parameterless identity/scope tool with rich annotations, the description covers the essential use case and clarifies its role in a workflow. Minor omission is the lack of explicit return format, but this is not critical for a read-only token introspection tool.

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 description does not need to explain parameter behavior. The baseline of 4 applies, and the description adds contextual value about how this tool relates to user_id in other calls.

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

Purpose4/5

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

The description clearly identifies the tool as returning the token owner's identity and visibility scope, including the three role values. It is distinct from the sibling tools that operate on balances, entries, or users, though it does not explicitly name an alternative.

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 concrete guidance: use it as a first call to understand whose data will be returned when no user_id is provided. It does not explicitly state when not to use it, but the context of a self-identity lookup is clear enough.

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. 8 tool updatesv0.2.2
    • First observedfortytimer_get_overtime_balance
    • First observedfortytimer_get_vacation_balance
    • First observedfortytimer_list_project_times
    • First observedfortytimer_list_projects
    • First observedfortytimer_list_requests
    • First observedfortytimer_list_time_entries
    • First observedfortytimer_list_users
    • First observedfortytimer_me

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource: identity, overtime balance, vacation balance, time entries, project bookings, leave requests, users, and projects. The two time-related list tools are clearly separated by their descriptions, so there is little risk of an agent choosing the wrong one.

Naming Consistency4/5

The set follows a clear fortytimer_<verb>_<resource> pattern, with list_ for collections and get_ for balances. The only outlier is fortytimer_me, which lacks a verb but is a recognizable identity endpoint, making the naming mostly consistent with a minor deviation.

Tool Count5/5

Eight tools is well-scoped for a time-tracking data server: reference data, balances, and detailed time/request records are each represented without redundancy. No tool feels extraneous, and the count is appropriate for the apparent purpose.

Completeness4/5

The read-side coverage is strong: identities, balances, time entries, project times, requests, users, and projects are all represented. However, no write or approval operations are exposed, so it cannot drive the full request lifecycle; for a query-oriented assistant this is a minor gap rather than a fatal one.

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/fortytimer/fortytimer-mcp'

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