{"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 objective creation: always use ONLY the get_objective_creation_preview tool. Never call create_okr_objective yourself—it is invoked by the in-chat confirmation widget when the user clicks Confirm. The user must explicitly choose the 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\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).\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. Objective creation is completed by the separate create_okr_objective step after the user confirms (for example via the confirmation control), not by inferring create_okr_objective from this tool alone.\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.\n- Creation is completed through `create_okr_objective` after user confirmation in the widget flow.\n- Do not expose internal identifiers such as ownerId or ownerTypeId in user-facing text.\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 by the objective confirmation flow after get_objective_creation_preview returns a confirmation-ready payload and the user confirms. It creates the objective in Profit.co and returns the created objective details for display.","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 in the in-chat preview flow, this tool creates the objective.\n\nDo not call this tool before the user has confirmed the preview.\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.","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\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.","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` with `action_required` for key result creation).\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.","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:\n- When preview is returned, direct the user to confirm via the confirmation card.\n- If the user confirms (card action or explicit confirmation in chat), call `submit_checkin` with values from structured content.\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, including the key result, objective, progress value, and optional status or comment. This tool submits the check-in in Profit.co and returns the submitted check-in details for display.","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 (for example, via confirmation action or explicit confirmation in chat).\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.","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`) with `action_required` for task creation and shows the task preview card.\n3) Direct the user to confirm using the card (or explicit confirmation in chat).\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\nUse this tool when the final task values are available, including the subject and any optional due date, status, priority, or assignee details. This tool creates the task in Profit.co and returns the created task details for display.","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 (via confirmation action or explicit confirmation in chat).\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- Tasks are created with an assignee (provided assignee or current user).\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.","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. After user confirmation, proceed with `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\nUse this tool when the final task update values are available, including the task identifier and one or more fields to change, such as subject, description, due date, comment, status, or priority. This tool updates the task in Profit.co and returns the updated task details for display.","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, call `update_task`.\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://app.profit.co/mcp/.well-known/oauth-authorization-server"}}}