{"protocolVersion":"2025-06-18","serverInfo":{"name":"profit-co-mcp","version":"1.0.0"},"instructions":"When the user says hi, hello, hey, or any greeting, or sends their first message with @profit, you MUST call the get_welcome_message tool and then reply with ONLY the exact text that tool returns. Do not use 'Looks like you tagged @profit', 'what's up', 'set a goal, check an OKR, track progress', or any other greeting. Output the get_welcome_message result verbatim with no changes. For create/update/submit flows (objectives, key results, check-ins, tasks): always call the matching preview tool first; never call create_okr_objective, create_okr_key_result, submit_checkin, create_task, or update_task in the same turn as the preview. If the confirmation card renders, wait for the user to click Confirm on the card. If the confirmation card does not render or is skipped, show the preview in chat, ask the user to confirm explicitly (e.g. yes, confirm, proceed), and only after that explicit reply call the create/submit/update tool—never infer confirmation from the original request. For objective creation the user must explicitly choose level (individual/corporate/department) and provide the objective name; do not assume or default level to individual, and do not invent or paraphrase the objective name.","capabilities":{"tools":{"get_welcome_message":{"description":"Returns a predefined welcome message for the Profit.co assistant.\n\nUse this tool when the user starts a conversation with a greeting (such as \"hi\", \"hello\", or \"hey\") or when they first interact with the assistant.\n\nThis tool always returns the same static message and does not depend on user-specific or external data.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},"get_my_okrs":{"description":"Lists the signed-in user's objectives and key results from Profit.co, including sub-key results, for the individual OKR level only. Read-only. No parameters.\n\nUse when the user wants to view or list their personal OKRs (for example, phrases like \"my OKRs\", \"show my objectives and key results\", or similar intent for their own individual OKRs).\n\nDo not call this tool automatically after creating an objective, key result, or task unless the user asked to see their OKRs.\n\nThis tool does not aggregate corporate- or department-level OKR trees. If the user asks for organization-wide or all-level OKR views, explain that this listing is limited to the individual level, or guide them in Profit.co for other scopes.","instructions":"Use this tool when the user asks to see their own OKRs, objectives, key results, goals, or progress at the individual level.\n\nExamples include:\n- \"list my OKRs\"\n- \"show my objectives\"\n- \"list my objectives and key result\"\n\nDo not use this tool for organization-wide, team, department, corporate, or other users' OKRs.\nDo not use this tool for create/update actions (objective creation, key result creation, check-ins, task updates, pending actions).\nDo not call automatically after create_okr_objective unless the user asked to view their OKRs.\n\nReturns only the signed-in user's individual-level OKRs from Profit.co.\nRead-only. No parameters.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"get_objective_creation_preview":{"description":"Collects Profit.co data needed before creating an objective: available levels, current period, and owner context. Does not create an objective.\n\nCall with no arguments to show level options when the user wants to create an objective but has not chosen a level or title yet. Include level (individual, corporate, or department, with department fields when applicable) once the user has stated it. Include objectiveName only as the exact title the user provided.\n\nWhen level and objectiveName are both available, the tool returns a preview and drives the in-chat confirmation UI when available. Objective creation is completed by create_okr_objective only after user confirmation—not by inferring create_okr_objective from this tool alone.\n\nWhen this returns status `pending_user_confirmation`: if the confirmation card renders, wait for the user to click Confirm before calling the matching create/submit/update tool. Do not ask the user to type yes/confirm/proceed in chat when the card is visible—the card is the only confirmation UI needed. If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nDo not show internal identifiers such as ownerId or ownerTypeId to the user.","instructions":"Collects Profit.co data required before creating an objective. This tool is read-only and does not create or modify data.\n\nIt can return:\n- available level options,\n- current period information,\n- and an objective preview for user confirmation.\n\nUse this tool when the user wants to create an objective and details are still being gathered or reviewed.\n\nRules:\n- Level must come from the user. Do not assume or default a level.\n- Objective name must come from the user's exact intent. Do not invent or rewrite it.\n- If level is missing, call without level so the tool can present options.\n- If objective name is missing, call without objectiveName so the tool can request it.\n- After level and objectiveName are provided, this tool returns a preview and confirmation UI when the client supports it.\n- Creation is completed through `create_okr_objective` only after user confirmation.\n- Do not expose internal identifiers such as ownerId or ownerTypeId in user-facing text.\n\nConfirmation (required before `create_okr_objective`):\n- If the confirmation card renders: wait for the user to click Confirm; do not call `create_okr_objective` yourself in that turn.\n- If the user types confirm/yes/proceed in chat (Cursor and other clients without the card): call `create_okr_objective` only—do not call this preview tool again.\n- If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nTypical flow:\n1) User asks to create an objective -> call with no parameters.\n2) User provides level and/or objective name -> call again with only the fields the user provided.\n3) When both are available -> present preview and wait for user confirmation.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"create_okr_objective":{"description":"Creates a new OKR objective in Profit.co after the user has confirmed the objective preview.\n\nThis tool is used after get_objective_creation_preview returns a confirmation-ready payload and the user confirms.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nWhen the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nAfter create_okr_objective succeeds, do not call get_my_okrs unless the user explicitly asked to list or view their OKRs in that message.","instructions":"Creates a new objective in Profit.co after the user confirms the objective preview.\n\nThis tool is part of the objective confirmation flow:\n- Use `get_objective_creation_preview` to gather level, period, and objective details.\n- After the user confirms (confirmation card when visible, or explicit chat confirmation when the card did not render), call this tool.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nWhen the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nAfter create_okr_objective succeeds, do not call get_my_okrs unless the user explicitly asked to list or view their OKRs in that message.\n\nKeep internal identifiers (for example, ownerId and ownerTypeId) out of user-facing text.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},"get_key_result_creation_preview":{"description":"Prepares and previews the data required to create a key result in Profit.co.\n\nUse this tool when the user wants to add a key result but has not yet confirmed creation. It retrieves available levels, objectives, and related context based on user input.\n\nWhen sufficient information is available, the tool returns a preview of the key result and may present a confirmation interface. This tool does not create or modify any data.\n\nWhen this returns status `pending_user_confirmation`: if the confirmation card renders, wait for the user to click Confirm before calling the matching create/submit/update tool. Do not ask the user to type yes/confirm/proceed in chat when the card is visible—the card is the only confirmation UI needed. If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.","instructions":"Prepares data and preview details for key result creation in Profit.co. This tool is read-only and does not create or modify data.\n\nUse this tool when the user wants to add a key result, create a key result, or add a key result to an objective.\n\nTypical flow:\n1) Initial request: call with no parameters (or level only) to present available options.\n2) If the user asks to list objectives across all levels: call with `listAllObjectives: true` (without level).\n3) If the user selects a level: call with `level` (and `departmentId` or `departmentName` when applicable) to retrieve objectives for that level.\n4) When objective and key result name are available: call with objective and owner context to return a preview for confirmation.\n\nConfirmation (required before `create_okr_key_result`):\n- If the confirmation card renders: wait for Confirm on the card.\n- If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nDo not expose internal identifiers (for example, ownerId, ownerTypeId, or objectiveId) in user-facing text.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"create_okr_key_result":{"description":"Creates a key result in Profit.co under the given objective. Parameters are normally supplied after the key result preview flow (get_key_result_creation_preview), when the user is ready to create.\n\nThe connector selects default key result settings from the firm configuration: Percentage Tracked type, Every Friday check-in frequency, Not Started status, and the current period.\n\nReturns created key result details for display. Keep internal identifiers such as ownerId, ownerTypeId, and objectiveId out of user-facing text.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.","instructions":"Creates a key result in Profit.co under the selected objective.\n\nUse this tool after `get_key_result_creation_preview` has returned a confirmation-ready payload (for example, `pending_user_confirmation`) and the user has confirmed.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nThe connector applies default firm settings for new key results, including:\n- Percentage Tracked key result type,\n- Every Friday check-in frequency,\n- Not Started status.\n\nDo not expose internal identifiers (for example, ownerId, ownerTypeId, or objectiveId) in user-facing text.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},"list_pending_actions":{"description":"Lists the signed-in user's pending actions in Profit.co.\n\nUse this tool when the user wants to view pending items that require attention, such as overdue check-ins, overdue tasks, approvals, timesheets, meetings, or other action-center items. This tool reads data from Profit.co and does not create or modify any data.","instructions":"Lists the signed-in user's pending actions in Profit.co.\n\nUse this tool when the user asks to see pending items that require attention (for example: \"pending actions\", \"show my pending actions\", \"what needs my attention\", \"action center\", or similar intent).\n\nDo not use this tool for other workflows such as creating objectives, listing OKRs, creating key results, check-ins, or task updates.\n\nReturns pending action-center items such as overdue check-ins, overdue tasks, approvals, out-of-office items, timesheets, meetings, and related action items.\n\nRead-only. No parameters.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"get_checkin_preview":{"description":"Prepares and previews the data required to submit a check-in in Profit.co.\n\nUse this tool when the user wants to view available key results for check-in, list available check-in statuses, or prepare a check-in before submission. It retrieves relevant check-in data and validates provided inputs such as the key result, check-in value, status, and comment.\n\nWhen sufficient information is available, the tool returns a preview of the check-in and may present a confirmation interface. This tool does not create or modify any data.\n\nWhen this returns status `pending_user_confirmation`: if the confirmation card renders, wait for the user to click Confirm before calling the matching create/submit/update tool. Do not ask the user to type yes/confirm/proceed in chat when the card is visible—the card is the only confirmation UI needed. If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.","instructions":"Prepares and previews check-in data from Profit.co. This tool is read-only and does not create or update data.\n\nUse this tool when the user wants to:\n- list key results available for check-in,\n- list check-in statuses,\n- prepare a check-in with key result, value, optional status, and optional comment.\n\nBehavior:\n- Retrieves real check-in data from Profit.co (key results, sub-key results, and statuses).\n- If `listStatusesOnly` is true, returns available check-in statuses.\n- Can filter by `objectiveName` when the user asks for key results under a specific objective.\n- Validates provided check-in inputs and, when complete, returns a confirmation-ready preview (`pending_user_confirmation`).\n\nConfirmation flow (required before `submit_checkin`):\n- When preview is returned, direct the user to confirm via the confirmation card when it renders.\n- If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n- Do not report success until `submit_checkin` succeeds.\n\nDo not expose internal identifiers (for example, ownerId, ownerTypeId, keyResultId, or objectiveId) in user-facing text.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"submit_checkin":{"description":"Submits a check-in in Profit.co after the required check-in details have been provided and confirmed.\n\nUse this tool when the final check-in values are available after user confirmation.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.","instructions":"Submits a check-in to Profit.co.\n\nUse this tool after `get_checkin_preview` has returned a confirmation-ready payload (`pending_user_confirmation`) and the user has confirmed submission.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nTypical flow:\n1) Call `get_checkin_preview` to collect and validate check-in details.\n2) When it returns confirmation-ready structured content, present the confirmation UI.\n3) After user confirmation, call `submit_checkin` with values from structured content.\n\nExpected parameters (from `get_checkin_preview` structured content):\n- `keyResultId` (required)\n- `objectiveId` (required)\n- `checkinValue` (required)\n- `comment` (optional)\n- `statusId` (optional; map from `checkinStatusId`)\n- `statusName` (optional; map from `checkinStatus`)\n- `keyResultName` (optional)\n- `objectiveName` (optional)\n- `keyResultTypeId` (optional)\n\nDo not report successful submission until this tool returns success.\nDo not expose internal identifiers (for example, keyResultId, objectiveId, or statusId) in user-facing text.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},"get_task_creation_preview":{"description":"Prepares and previews the data required to create a task in Profit.co.\n\nUse this tool when the user wants to create a task but has not yet confirmed creation. It validates provided task details such as the subject, due date, status, and priority, and returns a preview of the task for confirmation.\n\nWhen sufficient information is available, the tool may present a confirmation interface. This tool does not create or modify any data.\n\nWhen this returns status `pending_user_confirmation`: if the confirmation card renders, wait for the user to click Confirm before calling the matching create/submit/update tool. Do not ask the user to type yes/confirm/proceed in chat when the card is visible—the card is the only confirmation UI needed. If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.","instructions":"Prepares and previews task creation data in Profit.co. This tool is read-only and does not create data.\n\nUse this tool when the user wants to create a task, add a task, or create a to-do.\n\nTypical flow:\n1) Call this tool first with `subject` (required) and optional `dueDate`, `statusName`, and `priorityName`.\n2) The tool returns a confirmation-ready preview (`pending_user_confirmation`) and may show the task preview card.\n3) Wait for confirmation: card Confirm when the UI renders; otherwise If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n4) After user confirmation, call `create_task` with values from structured content.\n\nParameters:\n- `subject` (required)\n- `dueDate` (optional)\n- `statusName` (optional; defaults to `Not Started` when not provided)\n- `priorityName` (optional; defaults to `High` when not provided)\n\nAssignee behavior:\n- Task is assigned to the current user by default in this flow.\n\nDo not report task creation success until `create_task` succeeds.\nDo not expose internal identifiers (for example, assigneeEmployeeId) in user-facing text.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"create_task":{"description":"Creates a new task in Profit.co after the required task details have been provided and confirmed.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.","instructions":"Creates a new task in Profit.co.\n\nUse this tool after `get_task_creation_preview` has returned a confirmation-ready payload and the user has confirmed task creation.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nTypical flow:\n1) Call `get_task_creation_preview` first to prepare and validate task details.\n2) Present the preview/confirmation UI.\n3) After user confirmation, call `create_task` with values from structured content.\n\nExpected parameters (from preview structured content):\n- `subject` (required)\n- `dueDate` (optional)\n- `statusName` (optional; defaults to `Not Started` when omitted)\n- `priorityName` (optional; defaults to `High` when omitted)\n- `assigneeEmployeeId` (optional)\n- `assigneeName` (optional)\n- `noAssignee` is not used in this flow.\n\nBehavior notes:\n- A valid user session is required.\n- `subject` is required and sanitized before creation.\n- Assignee is validated server-side against Profit.co assignable employees; omit assignee fields to use the session user, or pass only values from preview structuredContent.\n- Return includes created task details (for example, task name and assignee) or an error response.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},"get_tasks_for_update":{"description":"Lists the signed-in user's tasks in Profit.co along with available status and priority options for task updates.\n\nUse this tool when the user wants to select an existing task to update and needs the available update options. This tool retrieves the user's current tasks and the valid status and priority values from Profit.co. It does not create or modify any data.","instructions":"Lists tasks and update options for the signed-in user in Profit.co. This tool is read-only.\n\nUse this tool when the user wants to update an existing task.\n\nBehavior:\n- Returns the user's task list.\n- Returns the exact available status options and priority options from Profit.co, including custom values.\n\nUsage guidance:\n1) Call this tool first in the task-update flow.\n2) Show the user:\n   - numbered task list,\n   - full status option list (exact values),\n   - full priority option list (exact values).\n3) Ask the user to choose a task and fields to update (subject, description, due date, comment, status, or priority).\n4) For status and priority updates, use values from the returned option lists.\n\nDo not replace returned status or priority options with generic examples.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"get_task_update_preview":{"description":"Prepares and previews the data required to update a task in Profit.co.\n\nUse this tool when the user wants to update a task but has not yet confirmed the changes. It accepts the task identifier and the fields to update, such as subject, description, due date, comment, status, or priority.\n\nWhen sufficient information is available, the tool returns a preview of the task update and may present a confirmation interface. This tool does not create or modify any data.\n\nWhen this returns status `pending_user_confirmation`: if the confirmation card renders, wait for the user to click Confirm before calling the matching create/submit/update tool. Do not ask the user to type yes/confirm/proceed in chat when the card is visible—the card is the only confirmation UI needed. If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.","instructions":"Prepares a task update preview for user confirmation. This tool is read-only and does not update data.\n\nUse this tool after the user selects a task from `get_tasks_for_update` and specifies one or more fields to change (subject, description, dueDate, comment, statusName, and/or priorityName).\n\nProvide:\n- `activityId` (required)\n- only the fields the user wants to update\n\nThe tool returns a preview and confirmation UI when available.\n\nConfirmation (required before `update_task`):\n- If the confirmation card renders: wait for Confirm on the card.\n- If the confirmation card/UI is not visible or was skipped: STOP. Show the preview to the user and ask them to confirm explicitly in chat (for example: yes, confirm, proceed). Wait for that reply. Only then call the matching create/submit/update tool with values from structuredContent. Do NOT call that tool in the same turn as the preview. Do NOT treat the user's original request as confirmation. When the user replies confirm, yes, or proceed after a preview: call the matching create/submit/update tool once using parameters from that preview structuredContent. Do NOT call the preview tool again to re-show the preview. CRITICAL — Profit.co identity only: For ownerId, ownerTypeId, ownerName, assigneeEmployeeId, assigneeName, and any employee or owner identifier, use ONLY values returned by Profit.co MCP tools (especially preview structuredContent). NEVER use the MCP host, agent, IDE, or chat client login username, display name, user id, or any identity inferred from Cursor, ChatGPT, or the conversation environment. Do not invent, guess, or substitute owner or assignee names or ids. When calling create/submit/update after preview confirmation, copy owner and assignee fields exactly from that preview structuredContent; do not add, change, or substitute them. If a field is missing from structuredContent, omit it so the server resolves it from the authenticated Profit.co session—never fill it from the client login. The server re-validates employee ids and names against the Profit.co assignable-employee directory; unvalidated values are ignored and the session user is used instead.\n\nAfter user confirmation, call `update_task` using the preview values.","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},"update_task":{"description":"Updates an existing task in Profit.co after the required task changes have been provided and confirmed.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.","instructions":"Updates an existing task in Profit.co.\n\nTypical flow:\n- Use `get_tasks_for_update` to list tasks and valid status/priority options.\n- Use `get_task_update_preview` to prepare and preview the requested changes.\n- After user confirmation (card or explicit chat when UI missing), call `update_task`.\n\nCRITICAL — confirmation required: Call only after (1) the user confirmed via the in-chat confirmation card/button when it is visible, OR (2) the card did not render or was skipped and the user sent an explicit confirmation in chat after reviewing the preview. Never call immediately after a preview tool. Never infer confirmation from the original create/update/submit request alone.\n\nDirect update is also supported when all required details are already confirmed:\n1) A task is selected (`activityId` from `get_tasks_for_update`),\n2) One or more update fields are provided,\n3) `statusName` and `priorityName` (if provided) match values from `get_tasks_for_update`.\n\nParameters:\n- `activityId` (required): selected task ID\n- `subject` (optional): new task title\n- `description` (optional): new task description\n- `dueDate` (optional): new due date (for example, `YYYY-MM-DD` or user date format)\n- `comment` (optional): comment text\n- `statusName` (optional): exact status option value\n- `priorityName` (optional): exact priority option value\n\nReturn:\n- Updated task details on success, or an error response if update fails.","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}}},"resources":{"listChanged":true},"auth":{"type":"oauth2","authorizationServerUrl":"https://integrations.profit.co/.well-known/oauth-authorization-server"}}}