proofhub_get_comments
Retrieve all comments on a ProofHub task with their full text content.
Instructions
Fetch all comments on a ProofHub task, including their full text.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| list_id | Yes | ||
| task_id | Yes |
Implementation Reference
- index.js:218-228 (handler)Tool handler for proofhub_get_comments. Extracts project_id, list_id, task_id from args, calls apiGet to fetch comments from the ProofHub API endpoint, and returns the result as JSON.
// ── proofhub_get_comments ──────────────────────────────────────────── if (name === 'proofhub_get_comments') { const { project_id, list_id, task_id } = args; const comments = await apiGet(`/projects/${project_id}/todolists/${list_id}/tasks/${task_id}/comments`); return { content: [{ type: 'text', text: JSON.stringify(comments, null, 2), }], }; } - index.js:130-142 (schema)Input schema definition for proofhub_get_comments tool. Declares required string parameters: 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'], }, }, - index.js:102-187 (registration)Tool registration via ListToolsRequestSchema handler. The proofhub_get_comments definition is part of the tools array returned from this handler.
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)The apiGet helper function used by proofhub_get_comments to make authenticated GET requests to the ProofHub API with rate-limit retry handling.
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}`); } }