Tick MCP by usefulapi
Read Tick clients, projects, tasks, users and time entries; log and edit time entries.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"tick": {
"url": "https://tick.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://tick.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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"
}Comunidad
Evidencia