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

A
Calidad de la descripción
99%
Integridad del esquema
96%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,899Tokens (definiciones de herramientas)
~1.4 KBTamaño de respuesta típico
Impacto significativo en la atención (2.26% del contexto de 128k)

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-http

Qué puede hacer

Inventario de herramientas

Herramientas (14)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada14 herramientas