{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T02:12:11.751Z","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac.md","server":{"slug":"io-usefulapi-timetac","name":"TimeTac MCP by usefulapi","registryName":"io.usefulapi/timetac","description":"Read hours, absences and projects; start timers, add entries, approve leave in TimeTac.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"timetac","type":"remote","identifier":"https://timetac.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac","version":"1.5.3","transport":null,"scoredAt":"2026-11-05T15:05:38.622Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":65},{"date":"2026-10-31","total":64}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"timetac","type":"remote","identifier":"https://timetac.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac.md"}],"facts":[{"label":"Endpoint","value":"https://timetac.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.5.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"timetac_list_users","title":"List users","description":"List employees (users) of the TimeTac account: id, name, department, active flag, entry/exit dates. Only work-related fields are returned (no credentials, payroll, address or birth data). TimeTac API: GET users/read.","inputs":[{"name":"active","type":"boolean","required":false,"description":"Only active (true) or inactive (false) users."},{"name":"department_id","type":"integer","required":false,"description":"Only users of this department id."},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."},{"name":"since","type":"string","required":false,"description":"Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":161},{"name":"timetac_get_user","title":"Get user","description":"Get one employee by user id. Only work-related fields are returned (no credentials, payroll, address or birth data). TimeTac API: GET users/read?id=.","inputs":[{"name":"user_id","type":"integer","required":true,"description":"The TimeTac user id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":58},{"name":"timetac_list_time_trackings","title":"List time trackings","description":"List time entries (start, end, duration, task, notes, approval), newest first. Filter by user, task or approval. start_date/end_date filter the returned page only; page with offset. TimeTac API: GET timeTrackings/read.","inputs":[{"name":"approved_by_admin","type":"boolean","required":false,"description":"Only approved (true) or not approved (false) entries."},{"name":"end_date","type":"string","required":false,"description":"Keep entries that start on or before this date."},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."},{"name":"since","type":"string","required":false,"description":"Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything."},{"name":"start_date","type":"string","required":false,"description":"Keep entries that start on or after this date."},{"name":"task_id","type":"integer","required":false,"description":"Only entries booked on this task id."},{"name":"user_id","type":"integer","required":false,"description":"Only entries of this user id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":216},{"name":"timetac_current_time_trackings","title":"Running timers","description":"List the timers that run right now (who is clocked in, on which task). TimeTac API: GET timeTrackings/current.","inputs":[{"name":"user_id","type":"integer","required":false,"description":"Only the running timer of this user id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"timetac_list_absences","title":"List absences","description":"List absence and leave requests (holiday, sick leave and others) with dates, duration and approval status. from_date/to_date keep requests that overlap the range, on the returned page only. TimeTac API: GET absences/read.","inputs":[{"name":"from_date","type":"string","required":false,"description":"Keep requests that end on or after this date."},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."},{"name":"since","type":"string","required":false,"description":"Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything."},{"name":"status","type":"integer","required":false,"description":"Only this status code (0 = open; see the TimeTac docs for the others)."},{"name":"subtype_id","type":"integer","required":false,"description":"Only this leave type inside the category (see timetac_list_absence_types)."},{"name":"to_date","type":"string","required":false,"description":"Keep requests that start on or before this date."},{"name":"type_id","type":"integer","required":false,"description":"Only this absence category: 1 = holiday, 2 = overtime reduction, 3 = other paid leave."},{"name":"user_id","type":"integer","required":false,"description":"Only requests of this user id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"timetac_list_absence_types","title":"List absence types","description":"List the absence types of the account (holiday, sick leave, special leave) with their ids. TimeTac API: GET absenceTypes/read.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"timetac_list_projects","title":"List projects","description":"List projects (task tree nodes that group tasks) with ids, deadlines and status. TimeTac API: GET projects/read.","inputs":[{"name":"is_done","type":"boolean","required":false,"description":"Only finished (true) or open (false) projects."},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."},{"name":"since","type":"string","required":false,"description":"Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":123},{"name":"timetac_list_tasks","title":"List tasks","description":"List tasks that time can be booked on, with their project (mother_id) and status. TimeTac API: GET tasks/read.","inputs":[{"name":"is_done","type":"boolean","required":false,"description":"Only finished (true) or open (false) tasks."},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"mother_id","type":"integer","required":false,"description":"Only tasks of this project id."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."},{"name":"since","type":"string","required":false,"description":"Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":139},{"name":"timetac_list_departments","title":"List departments","description":"List departments with ids and parent departments. TimeTac API: GET departments/read.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"timetac_list_teams","title":"List teams","description":"List teams with ids and names. TimeTac API: GET teams/read.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (API default 100)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many rows (paging)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":56},{"name":"timetac_start_time_tracking","title":"Start timer","description":"WRITE: start a timer for a user, now or at a given time. Each call can create a new running entry, so do not repeat it. TimeTac API: POST timeTrackings/start.","inputs":[{"name":"notes","type":"string","required":false,"description":null},{"name":"start_time","type":"string","required":false,"description":"Start date-time. Leave empty to start now."},{"name":"start_time_timezone","type":"string","required":false,"description":"IANA time zone of start_time. Needed when start_time is set."},{"name":"task_id","type":"integer","required":false,"description":"The task to book the time on."},{"name":"user_id","type":"integer","required":true,"description":"The user the timer belongs to."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"timetac_stop_time_tracking","title":"Stop timer","description":"WRITE: stop the running timer of a user, now or at a given time. TimeTac API: PUT timeTrackings/stop.","inputs":[{"name":"end_time","type":"string","required":false,"description":"End date-time. Leave empty to stop now."},{"name":"end_time_timezone","type":"string","required":true,"description":"IANA time zone, for example Europe/Vienna."},{"name":"notes","type":"string","required":false,"description":null},{"name":"user_id","type":"integer","required":true,"description":"The user whose running timer stops."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"timetac_create_time_tracking","title":"Add time entry","description":"WRITE: add a finished time entry for a user. Each call creates a new entry, so do not repeat it. TimeTac API: POST timeTrackings/create.","inputs":[{"name":"end_time","type":"string","required":true,"description":null},{"name":"end_time_timezone","type":"string","required":true,"description":"IANA time zone, for example Europe/Vienna."},{"name":"notes","type":"string","required":false,"description":null},{"name":"start_time","type":"string","required":true,"description":null},{"name":"start_time_timezone","type":"string","required":true,"description":"IANA time zone, for example Europe/Vienna."},{"name":"task_id","type":"integer","required":true,"description":"The task to book the time on."},{"name":"user_id","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":130},{"name":"timetac_create_absence","title":"Request absence","description":"WRITE: create an absence or leave request for a user. Each call creates a new request, so do not repeat it. type_id is the category (1 holiday, 2 overtime reduction, 3 other paid leave); subtype_id picks the leave type from timetac_list_absence_types. TimeTac API: POST absences/create.","inputs":[{"name":"duration","type":"number","required":false,"description":"Requested duration, in the unit of duration_unit."},{"name":"duration_unit","type":"string","required":false,"description":"d = days, hs = hours."},{"name":"from_date","type":"string","required":true,"description":null},{"name":"request_comment","type":"string","required":false,"description":null},{"name":"subtype_id","type":"integer","required":false,"description":"Specific leave type inside the category (for example which other paid leave). See timetac_list_absence_types."},{"name":"to_date","type":"string","required":true,"description":null},{"name":"type_id","type":"integer","required":true,"description":"Absence category: 1 = holiday, 2 = overtime reduction, 3 = other paid leave."},{"name":"user_id","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":203},{"name":"timetac_approve_absence","title":"Approve absence","description":"WRITE: approve an open absence request. The employee is notified by TimeTac. TimeTac API: PUT absences/approve.","inputs":[{"name":"absence_id","type":"integer","required":true,"description":"The absence request id (from timetac_list_absences)."},{"name":"comment","type":"string","required":false,"description":"Optional comment shown to the employee."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72},{"name":"timetac_reject_absence","title":"Reject absence","description":"WRITE: reject an open absence request. The employee is notified by TimeTac. TimeTac API: PUT absences/reject.","inputs":[{"name":"absence_id","type":"integer","required":true,"description":"The absence request id (from timetac_list_absences)."},{"name":"comment","type":"string","required":false,"description":"Optional comment shown to the employee."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:05:38.000Z","track":"remote","endpoint":"https://timetac.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"timetac.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a19b28-60c1-7274-9faa-519093337cdd","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c1-7274-9faa-519093337cdd"},{"id":"chg_01a19b28-60c2-71c2-bd41-5fd20135b257","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c2-71c2-bd41-5fd20135b257"},{"id":"chg_01a19b28-60c2-76d5-a7be-c0d68951beaa","kind":"check.unverifiable","summary":"Stability (0.03 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c2-76d5-a7be-c0d68951beaa"},{"id":"chg_01a19b28-60c2-7b31-bb8c-72d9ca6ca699","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c2-7b31-bb8c-72d9ca6ca699"},{"id":"chg_01a19b28-60c3-702b-908e-1e1f3ec4cf1b","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c3-702b-908e-1e1f3ec4cf1b"},{"id":"chg_01a19b28-60c3-74c9-9820-28c280c9fca5","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c3-74c9-9820-28c280c9fca5"},{"id":"chg_01a19b28-60c3-79de-a934-3957ba9ff3a2","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c3-79de-a934-3957ba9ff3a2"},{"id":"chg_01a19b28-60c3-7e1c-98a3-f230dd94220a","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19b28-60c3-7e1c-98a3-f230dd94220a"},{"id":"chg_01a19604-11f6-7a43-951f-fb64e077f490","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19604-11f6-7a43-951f-fb64e077f490"},{"id":"chg_01a19604-11f7-75d8-9e98-c8973192340b","kind":"score.total_changed","summary":"Trust score (64 → 65)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a19604-11f7-75d8-9e98-c8973192340b"},{"id":"chg_01a193fd-1716-78dd-9878-a8426298ded0","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a193fd-1716-78dd-9878-a8426298ded0"},{"id":"chg_01a192b1-05ee-7b43-b48a-850c0bcdfc0e","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac#chg-chg_01a192b1-05ee-7b43-b48a-850c0bcdfc0e"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac","markdown":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-timetac/timetac.xml","external":[{"label":"Remote endpoint","href":"https://timetac.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/timetac/"}]}}