proofhub_get_task
Fetch task details (title, description, stage, custom fields, assignees) from ProofHub by specifying project, list, and task IDs.
Instructions
Fetch full task details (title, description, stage, custom fields, assignees) from ProofHub.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| list_id | Yes | ||
| task_id | Yes |
Implementation Reference
- index.js:206-216 (handler)Handler function for the 'proofhub_get_task' tool. Extracts project_id, list_id, task_id from args, calls apiGet to fetch the task from the ProofHub API, and returns the task data as JSON.
// ── proofhub_get_task ──────────────────────────────────────────────── if (name === 'proofhub_get_task') { const { project_id, list_id, task_id } = args; const task = await apiGet(`/projects/${project_id}/todolists/${list_id}/tasks/${task_id}`); return { content: [{ type: 'text', text: JSON.stringify(task, null, 2), }], }; } - index.js:117-129 (schema)Schema/registration input definition for 'proofhub_get_task'. Declares the tool name, description, and input schema with required fields project_id, list_id, task_id.
{ name: 'proofhub_get_task', description: 'Fetch full task details (title, description, stage, custom fields, assignees) from ProofHub.', inputSchema: { type: 'object', properties: { project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, }, required: ['project_id', 'list_id', 'task_id'], }, }, - index.js:102-187 (registration)Tool registration via ListToolsRequestSchema handler. The object at lines 117-129 defines proofhub_get_task within the list of all tools that get registered with the MCP server.
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ { name: 'proofhub_parse_url', description: 'Parse a ProofHub task URL and return the project ID, list ID, and task ID embedded in it. ' + 'Use this as the first step before calling other ProofHub tools.', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'Full ProofHub task URL, e.g. https://kpi.proofhub.com/bappswift/#app/todos/project-7189443252/list-270280503800/task-514774338823' }, }, required: ['url'], }, }, { name: 'proofhub_get_task', description: 'Fetch full task details (title, description, stage, custom fields, assignees) from ProofHub.', inputSchema: { type: 'object', properties: { project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, }, required: ['project_id', 'list_id', 'task_id'], }, }, { name: 'proofhub_get_comments', description: 'Fetch all comments on a ProofHub task, including their full text.', inputSchema: { type: 'object', properties: { project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, }, required: ['project_id', 'list_id', 'task_id'], }, }, { name: 'proofhub_get_task_with_bug_links', description: 'One-shot tool: given a ProofHub task URL (or IDs), fetches the task description AND all comments, ' + 'then extracts any bug-tracker links (Jira, Linear, GitHub Issues, GitLab, YouTrack, ClickUp, Asana, etc.) ' + 'found in any of those texts. Returns the task data plus a deduplicated list of bug links.', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'Full ProofHub task URL (preferred). If supplied, project_id/list_id/task_id are ignored.' }, project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, }, }, }, { name: 'proofhub_create_comment', description: 'Post a new comment on a ProofHub task.', inputSchema: { type: 'object', properties: { project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, description: { type: 'string', description: 'Comment text (plain text or HTML).' }, }, required: ['project_id', 'list_id', 'task_id', 'description'], }, }, { name: 'proofhub_get_task_history', description: 'Fetch the activity history of a ProofHub task (stage changes, edits, etc.).', inputSchema: { type: 'object', properties: { project_id: { type: 'string' }, list_id: { type: 'string' }, task_id: { type: 'string' }, }, required: ['project_id', 'list_id', 'task_id'], }, }, ], })); - index.js:31-43 (helper)Helper function apiGet used by the handler to make authenticated GET requests to the ProofHub API with automatic retry on 429 rate-limit responses.
async function apiGet(url) { try { const res = await http.get(url); return res.data; } catch (err) { if (err.response?.status === 429) { const retryAfter = parseInt(err.response.headers['retry-after'] || '5', 10); await new Promise(r => setTimeout(r, retryAfter * 1000)); return apiGet(url); } throw new Error(`ProofHub API error ${err.response?.status}: ${JSON.stringify(err.response?.data) || err.message}`); } }