Skip to main content
Glama
fortytimer

fortytimer-mcp

Official
by fortytimer

fortyTimer MCP 서버 (읽기 전용)

fortyTimer 설치본의 읽기 전용 API를 MCP 클라이언트(Claude Desktop, Claude Code 등)용 도구로 노출하는 경량 MCP 서버입니다. 이 서버에는 자체 비즈니스 로직이 포함되어 있지 않습니다. 인증, 가시성 범위 제한, 데이터 최소화는 전적으로 사용자가 연결하는 fortyTimer 설치본에 의해 적용됩니다.

요구 사항

  1. 라이선스 모듈 api_readonly("fortyTimer API") 가 라이선스에 포함된 fortyTimer 설치본.

  2. fortyTimer의 프로필 → 보안 → API 토큰에서 생성한 개인 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 토큰

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

(Inspector UI의 "환경 변수"에서 FORTYTIMER_URL / FORTYTIMER_TOKEN 환경 변수를 설정하세요.)

개인정보 처리방침

전체 개인정보 처리방침: https://fortytimer.de/privacy-policy.md

요약:

  • 이 MCP 서버는 어떤 데이터도 저장하지 않습니다. 데이터베이스, 캐시, 로그 파일 또는 분석 도구를 보유하지 않습니다.

  • 모든 데이터는 사용자 자신의 컴퓨터와 사용자가 구성한 fortyTimer 설치본 사이에서만 흐릅니다. 제3자 서비스는 관여하지 않으며 확장 프로그램 작성자에게 데이터가 전송되지 않습니다.

  • API 토큰은 사용자가 제공하며, MCP 클라이언트(Claude Desktop은 운영 체제 키체인에 저장)가 보관하고 구성된 fortyTimer URL에 대한 Bearer 헤더로만 사용됩니다.

  • 어떤 개인 데이터가 표시되는지는 전적으로 연결된 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.

  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

Scored across 8 tools

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

Related MCP Connectors

Related MCP Servers