Kantata MCP by usefulapi
Read workspaces, tasks and time entries, create and update tasks, and log time in Kantata.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen kantata_list_timesheet_submissions
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": {
"kantata": {
"url": "https://kantata.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://kantata.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (12)
🟢kantata_get_current_user
Return the Kantata OX user that the token belongs to, with name, email, role and account membership. Good first call to confirm the connection. Kantata API: GET /api/v1/users/me.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_users(search, page, per_page)
List the users visible to the token, optionally filtered by a search string. Use the returned user ids in other tools. Kantata API: GET /api/v1/users.
Esquema de entrada
{
"type": "object",
"properties": {
"search": {
"description": "Match on name or email.",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_organizations(matching, type, page, per_page)
List client and partner organizations visible to the token. Kantata API: GET /api/v1/organizations.
Esquema de entrada
{
"type": "object",
"properties": {
"matching": {
"description": "Match on the organization name.",
"type": "string"
},
"type": {
"description": "Organization type as Kantata OX stores it (for example, a client type).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_workspaces(search, include_archived, page, per_page)
List workspaces (projects) visible to the token, with title, dates, status and participants. Kantata API: GET /api/v1/workspaces.
Esquema de entrada
{
"type": "object",
"properties": {
"search": {
"description": "Match on the workspace title.",
"type": "string"
},
"include_archived": {
"description": "Include archived workspaces (default false).",
"type": "boolean"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_get_workspace(workspace_id)
Get one workspace (project) by id, with title, dates, budget fields and participants. Kantata API: GET /api/v1/workspaces/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The workspace id (from kantata_list_workspaces)."
}
},
"required": [
"workspace_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_stories(workspace_id, search, assigned_to_current_user, completed, uncompleted, ...)
List stories (tasks) with title, status, due date, assignees and completion. Filter by workspace, assignee, completion or due dates. Kantata API: GET /api/v1/stories.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"description": "Only stories in this workspace id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"search": {
"description": "Match on the story title.",
"type": "string"
},
"assigned_to_current_user": {
"description": "true = only stories assigned to the token's user.",
"type": "boolean"
},
"completed": {
"description": "true = only completed stories.",
"type": "boolean"
},
"uncompleted": {
"description": "true = only open stories.",
"type": "boolean"
},
"due_after": {
"description": "Only stories due after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_before": {
"description": "Only stories due before this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_after": {
"description": "Only stories updated after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_get_story(story_id)
Get one story (task) by id, with its description, dates, assignees, status and checklist. Kantata API: GET /api/v1/stories/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"story_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The story id (from kantata_list_stories)."
}
},
"required": [
"story_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kantata_create_story(workspace_id, title, description, start_date, due_date, ...)
Create a story (task) in a workspace. Writes data: creates a new task each call. Kantata API: POST /api/v1/stories.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The workspace (project) id, from kantata_list_workspaces."
},
"title": {
"type": "string",
"minLength": 1,
"description": "The task title."
},
"description": {
"description": "The task description.",
"type": "string"
},
"start_date": {
"description": "Start date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_date": {
"description": "Due date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"parent_id": {
"description": "Parent story id, to make this a subtask.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"assignee_ids": {
"description": "User ids to assign.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"required": [
"workspace_id",
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kantata_update_story(story_id, title, description, start_date, due_date)
Change the title, description or dates of an existing story (task). Only the fields you pass change. Writes data. Kantata API: PUT /api/v1/stories/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"story_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The story id to change."
},
"title": {
"description": "New title.",
"type": "string",
"minLength": 1
},
"description": {
"description": "New description.",
"type": "string"
},
"start_date": {
"description": "New start date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_date": {
"description": "New due date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"story_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_time_entries(workspace_id, created_by, on_my_account, date_performed_between, page, ...)
List logged time entries with minutes, date performed, user, story and billable flag. Filter by workspace, user or date range. Kantata API: GET /api/v1/time_entries.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"description": "Only entries in this workspace id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_by": {
"description": "Only entries created by this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"on_my_account": {
"description": "true = only entries on the token's account.",
"type": "boolean"
},
"date_performed_between": {
"description": "Work dates from and to, as yyyy-mm-dd:yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}:\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kantata_list_timesheet_submissions(workspace_id, user_ids, statuses, start_date, end_date, ...)
List timesheet submissions with their status and period, filtered by workspace, user or dates. Kantata API: GET /api/v1/timesheet_submissions.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"description": "Only submissions in this workspace id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_ids": {
"description": "Comma-separated user ids.",
"type": "string"
},
"statuses": {
"description": "Comma-separated submission statuses as Kantata OX stores them.",
"type": "string"
},
"start_date": {
"description": "Period start (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"description": "Period end (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kantata_log_time(workspace_id, date_performed, time_in_minutes, story_id, notes, ...)
Log a time entry against a workspace, optionally a story. Writes data: creates a new entry each call, so do not retry it blindly. Kantata API: POST /api/v1/time_entries.
Esquema de entrada
{
"type": "object",
"properties": {
"workspace_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The workspace (project) id, from kantata_list_workspaces."
},
"date_performed": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The date the work was done (yyyy-mm-dd)."
},
"time_in_minutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Minutes worked."
},
"story_id": {
"description": "Story id to log against (optional).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"notes": {
"description": "Free-text note for the entry.",
"type": "string"
},
"billable": {
"description": "Whether the time is billable.",
"type": "boolean"
}
},
"required": [
"workspace_id",
"date_performed",
"time_in_minutes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia