Skip to main content
Glama
fortytimer

fortytimer-mcp

Official
by fortytimer

fortyTimer MCP Server (только чтение)

Тонкий MCP-сервер, который предоставляет read-only API установки fortyTimer в виде инструментов для MCP-клиентов (Claude Desktop, Claude Code и других). Сервер не содержит собственной бизнес-логики — авторизация, ограничение видимости и минимизация данных обеспечиваются исключительно установкой fortyTimer, к которой подключается пользователь.

Требования

  1. Установка fortyTimer с лицензионным модулем api_readonly ("fortyTimer API"), включённым в лицензию.

  2. Персональный API-токен, созданный в fortyTimer в разделе Профиль → Безопасность → API-токены. Токен показывается только один раз. Он наследует видимость учётной записи владельца (администратор: все пользователи, супервизор: свои группы утверждающих, сотрудник: только себя) и никогда не может изменять что-либо (только GET, способность read).

  3. Node.js ≥ 18 (автоматически включается при установке в качестве расширения Claude Desktop).

Related MCP server: solidtime-mcp-server

Установка (расширение Claude Desktop)

Установите упакованный файл fortytimer-<version>.mcpb двойным щелчком или через Claude Desktop → Настройки → Расширения. Во время установки вас попросят указать два значения:

Поле

Значение

fortyTimer URL

Базовый URL вашей установки, например https://42.fortytimer.de (для установок в подкаталоге укажите путь, например https://example.com/fortytimer/public)

API token

Ваш персональный токен из fortyTimer → Профиль → Безопасность

Токен хранится в связке ключей операционной системы, а не в открытом виде.

Ручная настройка (любой MCP-клиент)

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

Сборка из исходного кода

npm install
npm run build

Упаковка в качестве расширения Claude Desktop:

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

Инструменты

Инструмент

Возвращает

fortytimer_me

Идентичность + область видимости владельца токена

fortytimer_get_overtime_balance

Баланс гибкого рабочего времени на дату (по умолчанию: вчера)

fortytimer_get_vacation_balance

Отпускной счёт за год (право/перенос/остаток/ожидающие)

fortytimer_list_time_entries

Записи рабочего времени за диапазон дат, включая итоги с точностью до минут

fortytimer_list_project_times

Учёт времени по проектам, фильтрация по проекту/биллингу

fortytimer_list_requests

Заявки на отпуск по пользователю/статусу/типу/диапазону дат

fortytimer_list_users

Пользователи в пределах области видимости (для параметров user_id)

fortytimer_list_projects

Проекты (для фильтров project_id)

Все инструменты доступны только для чтения (readOnlyHint). Диапазоны дат ограничены 366 днями на стороне сервера, списки разбиваются на страницы по 50 записей (параметр page). Длительности возвращаются как точные целые минуты плюс предварительно отформатированные строки часы:минуты. Поля свободного текста заявок на больничный никогда не возвращаются API по соображениям защиты данных.

Тестирование без клиента

npx @modelcontextprotocol/inspector node dist/index.js

(Установите переменные окружения FORTYTIMER_URL / FORTYTIMER_TOKEN в интерфейсе Inspector в разделе "Environment Variables".)

Политика конфиденциальности

Полная политика конфиденциальности: https://fortytimer.de/privacy-policy.md

Краткое содержание:

  • Этот MCP-сервер не хранит никаких данных. Он не содержит баз данных, кэшей, файлов журналов или аналитики.

  • Все данные передаются исключительно между компьютером пользователя и установкой fortyTimer, которую настроил пользователь — никаких сторонних сервисов не задействовано, и никакие данные не передаются автору расширения.

  • API-токен предоставляется пользователем, хранится MCP-клиентом (Claude Desktop хранит его в связке ключей операционной системы) и используется только как заголовок Bearer для настроенного URL fortyTimer.

  • Какие персональные данные видны, полностью решает подключённая установка fortyTimer: токен наследует видимость учётной записи владельца, а fortyTimer подавляет данные особых категорий (свободные тексты заявок на больничный) в каждом ответе API.

  • Хранение данных регулируется подключённой установкой fortyTimer (её оператор является контролёром данных); расширение ничего не сохраняет.

  • Контакт: info@fortytwo-consulting.de / https://fortytimer.de

Безопасность

  • Токен должен находиться в локальной конфигурации клиента конкретного пользователя — никогда не фиксируйте его в репозитории и не передавайте.

  • Отзыв токена: fortyTimer → Профиль → Безопасность → API-токены → Удалить (действует немедленно); создание и удаление токенов записываются в журнал аудита fortyTimer как события безопасности.

  • Ограничение скорости API: 60 запросов в минуту.

Лицензия

MIT — см. 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