Tick MCP by usefulapi
Read Tick clients, projects, tasks, users and time entries; log and edit time entries.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"tick": {
"url": "https://tick.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://tick.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (14)
🟢tick_list_clients(include_all, page)
List Tick clients. By default only clients that have open projects; set include_all=true for every client (also archived or without projects). 100 per page. GET /clients.json or /clients/all.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"include_all": {
"description": "true = all clients, false/omitted = only clients with open projects.",
"type": "boolean"
},
"page": {
"description": "Page number, from 1 (default 1; 100 records per page). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_get_client(client_id)
One client by id, with a summary of its projects (count and URL). GET /clients/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Tick client id."
}
},
"required": [
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_list_projects(status, page)
List Tick projects with budget (hours or money), billable flag, client_id and owner_id. Open projects by default; status=closed for closed ones. 100 per page. GET /projects.json or /projects/closed.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"status": {
"description": "open (default) or closed.",
"type": "string",
"enum": [
"open",
"closed"
]
},
"page": {
"description": "Page number, from 1 (default 1; 100 records per page). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_get_project(project_id)
One project by id, with total_hours entered, a summary of its tasks (count and URL) and its client. GET /projects/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Tick project id."
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_list_tasks(project_id, status, page)
List Tick tasks (the budget lines that time entries are logged against). Across all projects, or for one project when project_id is given. Open tasks by default; status=closed for closed ones. You need a task id to log time. 100 per page. GET /tasks.json, /tasks/closed.json, /projects/{id}/tasks.json or /projects/{id}/tasks/closed.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"project_id": {
"description": "Only the tasks of this project.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "open (default) or closed.",
"type": "string",
"enum": [
"open",
"closed"
]
},
"page": {
"description": "Page number, from 1 (default 1; 100 records per page). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_get_task(task_id)
One task by id, with total_hours entered, a summary of its entries (count and URL) and its project. GET /tasks/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Tick task id."
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_list_users(deleted, page)
List the users of the Tick subscription (id, name, e-mail, timezone). A non-administrator sees only themself. Use deleted=true for removed users who still have time entries (administrators only). GET /users.json or /users/deleted.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"deleted": {
"description": "true = deleted users that have time entries.",
"type": "boolean"
},
"page": {
"description": "Page number, from 1 (default 1; 100 records per page). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_list_entries(start_date, end_date, updated_at, project_id, task_id, ...)
List time entries. Tick requires EITHER start_date AND end_date (entries dated in that range) OR updated_at (entries created or changed after that time). Optional filters: project_id, task_id, user_id, billable, billed. Each entry has date, hours, notes, task_id, user_id. 100 per page. GET /entries.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"start_date": {
"description": "First day of the range (with end_date).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"end_date": {
"description": "Last day of the range (with start_date).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updated_at": {
"description": "Only entries created or modified after this time (instead of a date range).",
"type": "string"
},
"project_id": {
"description": "Only entries of this project.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"task_id": {
"description": "Only entries of this task.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_id": {
"description": "Only entries of this user.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"billable": {
"description": "Only billable (true) or non-billable (false) entries.",
"type": "boolean"
},
"billed": {
"description": "Only billed (true) or not yet billed (false) entries.",
"type": "boolean"
},
"page": {
"description": "Page number, from 1 (default 1; 100 records per page). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢tick_get_entry(entry_id)
One time entry by id, with its task. GET /entries/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"entry_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Tick entry id."
}
},
"required": [
"entry_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡tick_create_entry(task_id, date, hours, notes, user_id)
WRITE: log a new time entry on a task (POST /entries.json). Needs the task id (see tick_list_tasks). hours is a decimal (1.5 = 1h30m). user_id is only honored for administrators (otherwise the entry is yours). Creates a new entry every call; nothing is sent to anyone.
Eingabe-Schema
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Task to log the time on."
},
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Day the work was done, yyyy-mm-dd."
},
"hours": {
"type": "number",
"minimum": 0,
"maximum": 24,
"description": "Hours worked, decimal (1.5 = one and a half hours)."
},
"notes": {
"description": "What was done.",
"type": "string",
"maxLength": 5000
},
"user_id": {
"description": "Administrators only: log the time for this user.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"task_id",
"date",
"hours"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴tick_update_entry(entry_id, hours, notes, date, task_id, ...)
WRITE: change an existing time entry (PUT /entries/{id}.json): hours, notes, date, task, or mark it billed. Only the fields you pass change; the previous values are overwritten.
Eingabe-Schema
{
"type": "object",
"properties": {
"entry_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Entry to change."
},
"hours": {
"description": "New hours (decimal).",
"type": "number",
"minimum": 0,
"maximum": 24
},
"notes": {
"description": "New notes (replaces the old notes).",
"type": "string",
"maxLength": 5000
},
"date": {
"description": "New date, yyyy-mm-dd.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"task_id": {
"description": "Move the entry to this task.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"billed": {
"description": "Mark the entry as billed / not billed.",
"type": "boolean"
}
},
"required": [
"entry_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡tick_create_client(name, archive)
WRITE: create a new client (POST /clients.json). Tick administrators only (403 otherwise). Creates a new client every call.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Client name."
},
"archive": {
"description": "Create the client archived (default false).",
"type": "boolean"
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡tick_create_project(name, client_id, budget, billable, notifications, ...)
WRITE: create a new project (POST /projects.json). Tick administrators only. The project has no tasks: create at least one with tick_create_task before time can be logged. Creates a new project every call.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Project name."
},
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Client the project belongs to (see tick_list_clients)."
},
"budget": {
"description": "Project budget (hours, or money for a money-based subscription).",
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"billable": {
"description": "Whether the project is billable.",
"type": "boolean"
},
"notifications": {
"description": "Send budget notifications.",
"type": "boolean"
},
"recurring": {
"description": "Recurring budget.",
"type": "boolean"
},
"owner_id": {
"description": "User id of the project owner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"name",
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡tick_create_task(project_id, name, budget, billable)
WRITE: create a new task on a project (POST /tasks.json). Tick administrators only. Creates a new task every call.
Eingabe-Schema
{
"type": "object",
"properties": {
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Project the task belongs to."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task name."
},
"budget": {
"description": "Task budget (hours).",
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"billable": {
"description": "Whether the task is billable.",
"type": "boolean"
}
},
"required": [
"project_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis