🕐 Fritto MCP Server

Model Context Protocol server for AI-powered time tracking

Server Status: ⚡ Ready

The MCP server is running and ready to accept connections.

🔌 How to Connect

Method 1: API Token (Recommended for CLI)

Use your Fritto API token for simple, stateless authentication:

1. Get your API Token from Fritto:

  • Log into Fritto web interface
  • Navigate to Settings → API Keys
  • Generate a new API key
  • Copy the key (format: guid.secret)

2. Configure your AI assistant:

For Claude Desktop:

{ "mcpServers": { "fritto": { "url": "https://tt-feature-dev-mcp.i.stein-pilz.com", "headers": { "X-Api-Key": "your-api-key-here" } } } }

For curl testing:

curl https://tt-feature-dev-mcp.i.stein-pilz.com/mcp \ -H "X-Api-Key: your-api-key-here" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Method 2: OAuth 2.0 (Recommended for Web)

Use OAuth for secure, user-specific authentication with automatic token refresh:

️ Available Tools

Common Patterns:
  • Date format: YYYY-MM-DD (e.g., 2025-10-21)
  • Time input: Hours as decimal (e.g., 1.5 = 1 hour 30 minutes)
  • Approval status: 0=Draft, 1=Submitted, 2=Approved, 3=Rejected
  • Group by: 0=Employee, 1=Project, 2=Employee Group, 3=Jira Issue

log_time

Record work hours to a TimeTracker project with optional task URL and description.

Parameters

ParameterTypeRequiredDescription
projectIdstring (UUID)YesUUID of the project to log time to
hoursnumberYesHours worked (decimal, 0.01-24 range)
datestringYesDate in YYYY-MM-DD format
taskUrlstring (URL)NoFull URL of the task/issue/ticket
descriptionstringNoWork description (max 1024 characters)

Sample Prompt

Log 2.5 hours to project TimeTracker Development for today, working on ticket TT-123 with description "Implemented new feature"

Sample Response

Successfully logged 2.5 hours Project: TimeTracker Development (Steinpilz) Date: 2025-10-21 Task: https://steinpilz.atlassian.net/browse/TT-123 Description: Implemented new feature Time record ID: f1e2d3c4-b5a6-7890-fedc-ba0987654321

list_projects

Lists all projects assigned to the current user with IDs, names, and client information.

Parameters

None required.

Sample Prompt

Show me my assigned projects

Sample Response

Found 3 assigned project(s): ┌────────────────────────────────────────┬──────────────────────────┬──────────────────────────┐ │ Project ID │ Project Name │ Client │ ├────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤ │ a1b2c3d4-e5f6-7890-abcd-ef1234567890 │ TimeTracker Development │ Steinpilz │ │ b2c3d4e5-f6a7-8901-bcde-f12345678901 │ Internal Meeting │ Steinpilz │ │ c3d4e5f6-a7b8-9012-cdef-123456789012 │ Customer Support │ External Client │ └────────────────────────────────────────┴──────────────────────────┴──────────────────────────┘

get_time_records

Retrieves your time records for a date range. Returns UserDays with all time records for each day.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format

Sample Prompt

Show my time records for last week

Sample Response

📅 Date: 2025-10-01 Status: Approved Total: 8.00 hours (480 minutes) Records: 2 • TimeTracker Development (Steinpilz) Time: 6.00 hours (360 minutes) Record ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Description: Feature implementation Task: https://steinpilz.atlassian.net/browse/TT-123 📊 Summary: Total days: 5 Total records: 12 Total hours: 40.00

get_tracked_time

Gets total time logged for a specific task URL. Useful to check how much time has been logged to a ticket/issue.

Parameters

ParameterTypeRequiredDescription
taskUrlstring (URL)YesFull URL of the task/issue/ticket

Sample Prompt

How much time has been logged to ticket TT-123?

Sample Response

Task: https://steinpilz.atlassian.net/browse/TT-123 Total time logged: 12.50 hours (750 minutes)

validate_day

Checks if a specific date is editable (not locked by administrator).

Parameters

ParameterTypeRequiredDescription
datestringYesDate in YYYY-MM-DD format

Sample Prompt

Can I log time for September 15th?

Sample Response (Editable)

✓ Date 2025-10-21 is editable. You can log time for this date.

Sample Response (Locked)

✗ Date 2025-09-15 is locked and cannot be edited. Reason: Period closed for September 2025

update_time_record

Updates an existing time record. Modify hours, description, task URL, or date for a time entry.

Parameters

ParameterTypeRequiredDescription
timeRecordIdstring (UUID)YesUUID of the time record to update
projectIdstring (UUID)YesUUID of the project
hoursnumberYesUpdated hours (0.01667-24 range)
datestringYesDate in YYYY-MM-DD format
taskUrlstring (URL)NoTask URL
descriptionstringNoWork description (max 1024 characters)
concurrencyStampstringNoFor optimistic locking

Sample Prompt

Update my time record from today to 3 hours instead of 2

Sample Response

Successfully updated time record Date: 2025-10-21 Project: TimeTracker Development (Steinpilz) Time: 3.00 hours (180 minutes) Description: Updated description Day Status: Draft

delete_time_record

Deletes a time record by its UUID. This action cannot be undone.

Parameters

ParameterTypeRequiredDescription
timeRecordIdstring (UUID)YesUUID of the time record to delete

Sample Prompt

Delete my duplicate time entry from today

Sample Response

Successfully deleted time record with ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890

get_own_time_reports

Gets aggregated time reports for your own tracked time with capacity, tracked hours, and billable hours.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format
clientIdsarray of UUIDsNoFilter by clients
projectIdsarray of UUIDsNoFilter by projects
approvalStatusesarray of numbersNoFilter by status (0=Draft, 1=Submitted, 2=Approved, 3=Rejected)
jiraIssueUrlsarray of stringsNoFilter by Jira issue URLs or keys (max 100)
groupBynumberNo0=Employee, 1=Project, 2=Employee Group, 3=Jira Issue

Sample Prompt

Show my time report for October grouped by project

Sample Response

Time Report for 2025-10-01 to 2025-10-31 Filters: Group by: Project 📊 TimeTracker Development (Steinpilz) Tracked: 120.00 hours (7200 minutes) Billable: 120.00 hours (7200 minutes) 📊 Internal Meeting (Steinpilz) Tracked: 16.00 hours (960 minutes) Billable: 0.00 hours (0 minutes) --- Summary --- Total Items: 2 Total Tracked: 136.00 hours (8160 minutes) Total Billable: 120.00 hours (7200 minutes)

get_all_time_reports

Gets aggregated time reports for all users (manager/admin view). Requires manager/admin permissions.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format
userIdsarray of UUIDsNoFilter by users
employeeGroupIdsarray of UUIDsNoFilter by employee groups
clientIdsarray of UUIDsNoFilter by clients
projectIdsarray of UUIDsNoFilter by projects
approvalStatusesarray of numbersNoFilter by approval status
jiraIssueUrlsarray of stringsNoFilter by Jira issue URLs/keys (max 100)
groupBynumberNoGrouping dimension

Sample Prompt

Show team time report for October grouped by employee

Sample Response

Time Report for 2025-10-01 to 2025-10-31 Filters: Group by: Employee 👤 John Doe Capacity: 168.00 hours Tracked: 160.00 hours (9600 minutes) Billable: 140.00 hours (8400 minutes) Utilization: 95.24% 👤 Jane Smith Capacity: 168.00 hours Tracked: 152.00 hours (9120 minutes) Billable: 145.00 hours (8700 minutes) Utilization: 90.48% --- Summary --- Total Items: 2 Total Tracked: 312.00 hours (18720 minutes) Total Billable: 285.00 hours (17100 minutes)

export_time_reports_json

Gets time reports as raw JSON data for programmatic analysis and custom reporting.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format
prettyPrintbooleanNoFormat JSON with indentation (default: true)

Sample Prompt

Export my time data for this week as JSON

Sample Response

Time Report Data: 2025-10-01 to 2025-10-07 Summary: Records: 15 Total Hours: 42.50 (2550 minutes) Billable Hours: 38.00 (2280 minutes) Unique Users: 1 Unique Projects: 3 Approved Records: 10 [JSON data with fields: date, client, project, description, taskUrl, trackedMinutes, isBillable, isApproved, userId, firstName, lastName, employeeGroups, costRate, currency]

export_time_reports_csv

Exports time reports to a CSV file with optional filtering by clients, projects, users, employee groups, or approval statuses.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format
clientIdsarray of UUIDsNoFilter by clients
projectIdsarray of UUIDsNoFilter by projects
userIdsarray of UUIDsNoFilter by users
employeeGroupIdsarray of UUIDsNoFilter by employee groups
approvalStatusesarray of numbersNoFilter by approval status
jiraIssueUrlsarray of stringsNoFilter by Jira issue URLs/keys (max 100)

Sample Prompt

Export approved time records for October as CSV

Sample Response

Successfully exported time report to CSV File: time-report-2025-10-01-2025-10-31.csv Size: 15.42 KB Rows: ~150 records Period: 2025-10-01 to 2025-10-31 Filters: Approval Status: Approved Columns: Date, Client, Project, Description, Task URL, Hours, Billable, Approved, First Name, Last Name, Employee Groups, Cost Rate, Currency

export_time_reports_xlsx

Exports time reports to an Excel (XLSX) file with formatted columns, auto-filter, and frozen header row.

Parameters

ParameterTypeRequiredDescription
fromstringYesStart date in YYYY-MM-DD format
tostringYesEnd date in YYYY-MM-DD format

Sample Prompt

Export October time report to Excel

Sample Response

Successfully exported time report to Excel File: time-report-2025-10-01-2025-10-31.xlsx Size: 28.75 KB Rows: 150 records Total Hours: 312.50 Period: 2025-10-01 to 2025-10-31 Features: Formatted columns, auto-filter, frozen header row, number formatting for Hours and Cost Rate
📚 Need help getting started?

Visit the Fritto documentation for detailed guides on using the MCP server with your AI assistant.