ProofHub MCP by usefulapi

Read projects, tasks, comments, people and time entries; create tasks and comments in ProofHub.

Should I use this

Quality & Safety

C
Description quality
87%
Schema completeness
60%
Naming quality
80%
Poisoning risk
0%
Permission match
100%
Protocol compliance
100%

Findings (17)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'proofhub_list_todolists' description contains placeholder textin proofhub_list_todolists
  • MEDIUMTool 'proofhub_list_tasks' description contains placeholder textin proofhub_list_tasks
  • MEDIUMTool 'proofhub_get_task' description contains placeholder textin proofhub_get_task
  • MEDIUMTool 'proofhub_list_task_comments' description contains placeholder textin proofhub_list_task_comments
  • MEDIUMTool 'proofhub_search_all_tasks' description contains placeholder textin proofhub_search_all_tasks
  • MEDIUMTool 'proofhub_create_task' description contains placeholder textin proofhub_create_task
  • MEDIUMTool 'proofhub_set_task_completed' description contains placeholder textin proofhub_set_task_completed
  • MEDIUMTool 'proofhub_add_task_comment' description contains placeholder textin proofhub_add_task_comment
  • INFOTool description contains placeholder or incomplete textin proofhub_list_todolists

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,559Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (2.00% of 128k context)

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

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools