ProofHub MCP by usefulapi
Read projects, tasks, comments, people and time entries; create tasks and comments in ProofHub.
Should I use this
Quality & Safety
Findings (17)
- HIGH
- MEDIUMin proofhub_list_todolists
- MEDIUMin proofhub_list_tasks
- MEDIUMin proofhub_get_task
- MEDIUMin proofhub_list_task_comments
- MEDIUMin proofhub_search_all_tasks
- MEDIUMin proofhub_create_task
- MEDIUMin proofhub_set_task_completed
- MEDIUMin proofhub_add_task_comment
- INFOin proofhub_list_todolists
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"proofhub": {
"url": "https://proofhub.usefulapi.io/mcp"
}
}
}Remote endpoints
https://proofhub.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢proofhub_list_projects
List all projects in the ProofHub account the key belongs to. Start here to find project ids. GET /projects.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_get_project(project_id)
Get one project by id: name, status, dates and the people on it. GET /projects/{project_id}.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_todolists(project_id)
List the to-do lists (task lists) of one project. GET /projects/{project_id}/todolists.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_tasks(project_id, todolist_id)
List the tasks of one to-do list with title, assignees, labels, dates and completion. GET /projects/{project_id}/todolists/{todolist_id}/tasks.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id",
"todolist_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_get_task(project_id, todolist_id, task_id)
Get one task with its description, dates, assignees, labels and progress. GET /projects/{project_id}/todolists/{todolist_id}/tasks/{task_id}.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"task_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id",
"todolist_id",
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_task_comments(project_id, todolist_id, task_id)
List the comments on one task. GET /projects/{project_id}/todolists/{todolist_id}/tasks/{task_id}/comments.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"task_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id",
"todolist_id",
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_search_all_tasks(projects, labels, completed, start, limit)
List tasks across the whole account, filtered by project, label or completion. Paged: when the reply has more records, call again with a higher start. GET /alltodo.
Input Schema
{
"type": "object",
"properties": {
"projects": {
"type": "string",
"pattern": "^\\d+(,\\d+)*$",
"description": "Comma-separated numeric ids."
},
"labels": {
"type": "string",
"pattern": "^\\d+(,\\d+)*$",
"description": "Comma-separated numeric ids."
},
"completed": {
"description": "true for completed tasks only, false for open tasks only.",
"type": "boolean"
},
"start": {
"description": "Offset of the first record (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Records per page, 1 to 100 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_topics(project_id)
List the discussion topics of one project. GET /projects/{project_id}/topics.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_labels
List the task labels of the account. Use the ids in task filters. GET /labels.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_people
List the people (users) of the account with their roles and emails. GET /people.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_get_person(person_id)
Get one person by id. GET /people/{person_id}.
Input Schema
{
"type": "object",
"properties": {
"person_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"required": [
"person_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢proofhub_list_time_entries(start, limit)
List logged time entries across the account, paged. When the reply is full, call again with a higher start. GET /alltime.
Input Schema
{
"type": "object",
"properties": {
"start": {
"description": "Offset of the first record (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Records per page, 1 to 100 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴proofhub_create_task(project_id, todolist_id, title, description, start_date, ...)
Create a task in a to-do list. Writes to the account. Each call makes a new task, so do not retry blindly. POST /projects/{project_id}/todolists/{todolist_id}/tasks.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Task title."
},
"description": {
"type": "string",
"maxLength": 20000
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"assigned": {
"description": "Person ids to assign (from proofhub_list_people).",
"maxItems": 50,
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"labels": {
"description": "Label ids (from proofhub_list_labels).",
"maxItems": 50,
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
}
},
"required": [
"project_id",
"todolist_id",
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡proofhub_set_task_completed(project_id, todolist_id, task_id, completed)
Mark one task completed (true) or open again (false). Setting the same value twice is harmless. PUT /projects/{project_id}/todolists/{todolist_id}/tasks/{task_id}.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"task_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"completed": {
"type": "boolean"
}
},
"required": [
"project_id",
"todolist_id",
"task_id",
"completed"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴proofhub_add_task_comment(project_id, todolist_id, task_id, description)
Post a comment on one task, as the key's user. Each call posts a new comment, so do not retry blindly. POST /projects/{project_id}/todolists/{todolist_id}/tasks/{task_id}/comments.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"todolist_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"task_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Comment text."
}
},
"required": [
"project_id",
"todolist_id",
"task_id",
"description"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence