slingshot_add_goal_check_in
ChatGPTRecords progress on a SMART goal or a key result: the value reached, the status (notStarted, onTrack, atRisk, offTrack, completed, notAchieved) and a note that says why. MODIFIES DATA — two-step flow. Use when the user describes what happened ('we closed 40 deals this week, a bit behind'): turn it into a value, a status and a note, and confirm them with the user. The goal's status becomes the status of its latest check-in by date, so a backdated check-in does not override a newer one; completed or notAchieved closes the goal. One check-in per day: a second one on the same date replaces the first. On a goal measured from a dashboard or a data source the value and status must be the measured ones and no date is taken. Objectives and strategies take no check-ins: their progress rolls up from what is under them. Do NOT use to change the target or cycle — use slingshot_update_goal. NOT idempotent — each confirmed call records a check-in and notifies the owners. Only the goal's owners can check in (for a key result, its own owners): anyone else is refused, even someone who may edit the goal or an admin. Requires Goals in the user's plan.
slingshot_add_project_member
ChatGPTAdds a user to a project with the given role. MODIFIES DATA — two-step flow. Project membership is INDEPENDENT of workspace membership — the target user does not have to be a member of the parent workspace (this matches the Slingshot desktop client's 'invite external collaborator to a single project' flow). Default role is contributor. Roles: owner, contributor, viewer. Adding the same user twice with the same role is a no-op (idempotent).
slingshot_add_time_log
ChatGPTRecords a time entry on a task. Each call creates a discrete log entry (calling twice creates two — not idempotent). MODIFIES DATA — two-step flow. Use when the user wants to log time, record hours, or add a time entry. The timeLoggedMinutes field on a task is read-only via slingshot_update_task — log time with this tool only. Do NOT use to add a free-text comment — use slingshot_post_task_message. Defaults the date to today and the user to the authenticated caller. Does NOT change the task's status, progress, or any other field. The optional customFieldId selects a specific time-tracking custom field on the task's Task Type; if omitted the server resolves the Task Type's default time-tracking field. Returns VALIDATION_ERROR when the task has no time-tracking field declared.
slingshot_add_workspace_member
ChatGPTAdds a user to a workspace with the given role. MODIFIES DATA — two-step flow. The user must already exist in the organization; this does NOT create user accounts. Default role is contributor. Roles: owner, contributor, viewer. Adding the same user twice with the same role is a no-op (idempotent).
slingshot_cancel_calendar_event
ChatGPTCancels an Outlook event the user organizes, for EVERY attendee: each is sent a cancellation at once and the event leaves every calendar. IRREVERSIBLE: there is no restore, and recreating it sends new invitations. MODIFIES DATA — two-step flow: the preview lists the event and every attendee who will be notified; call again with the token only after the user explicitly approves. On a recurring event, scope picks this occurrence or the whole series. Use when the user wants to cancel, call off or delete a meeting they organize. Do NOT use to decline an invitation from someone else (use slingshot_respond_to_calendar_event with response=declined), to reschedule (use slingshot_update_calendar_event) or to remove a focus block (use slingshot_delete_focus_block). Only the organizer may cancel (not_organizer otherwise).
slingshot_check_service_status
ChatGPTReturns the health of the Slingshot MCP server itself: authenticated user id, OAuth client id, server clock. Use to verify the connection is alive and the user is properly authenticated before kicking off a longer flow. Do NOT use to check Slingshot REST API health — this only covers the MCP layer.
slingshot_create_automation
ChatGPTCreates one automation from an exact When, Check If and Then. MODIFIES DATA — two-step flow: the first call, without confirmationToken, checks the rule as the product would and previews it exactly as it will be stored (name, the sentence the list shows, every part); call again with the same parameters and the returned confirmationToken after the user explicitly approves. A rule the product refuses comes back as VALIDATION_ERROR with a subCode and the path of each part, and no token. Every field, option, person, list, section and template is an id: build the parameters with slingshot_propose_automation, whose request holds them. An Active automation starts acting on tasks as soon as it is created; pass active=false to create it Paused. Use when the user has approved a proposed automation. Do NOT use to change one; use slingshot_update_automation; to pause or switch one on, use slingshot_set_automation_active. NOT idempotent: confirming the same parameters again within about 20 minutes of a confirmation returns that first result and creates nothing; later, a fresh preview and confirmation create a second automation. Requires Automations in the user's plan, including the paid automations the app asks for before creating one.
slingshot_create_calendar_event
ChatGPTCreates an event on the user's Outlook calendar (the primary Microsoft calendar unless calendarId says otherwise), optionally inviting people, as a Teams meeting, or recurring. Marked destructive because the invitations it sends cannot be recalled; nothing is deleted. MODIFIES DATA — two-step flow, for every caller: call without confirmationToken to get a preview, show it, then call again with the token once the user approves. NOT idempotent — confirming twice creates two events and sends two invitations. Use when the user wants to schedule, book or set up a meeting or an event. Do NOT use to block time for a task (use slingshot_create_focus_block) or to change an existing event (use slingshot_update_calendar_event). Required: title, and either start and end, or isAllDay=true with startDate and endDate. Only Outlook calendars take events, an account that needs reconnecting refuses writes, and the answer names the reason.
slingshot_create_custom_field
ChatGPTCreates a custom field in a parent's Task Fields Library. MODIFIES DATA — two-step flow. PARENT SCOPE (CRITICAL): parentId can be EITHER: - Organization ID -> field is available across ALL workspaces in the org. Use this when the user says "for my organization", "across all my workspaces", "org-wide", or doesn't specify a workspace. - Workspace ID -> field is scoped to that workspace only. Use this when the user explicitly names a single workspace ("in NYC", "for the Miami workspace"). DEFAULT: when in doubt, prefer ORGANIZATION SCOPE — it's reusable and avoids duplicate fields per workspace. Only narrow to workspace scope when the user explicitly limits it. TASK LIST OR TASK TYPE: a task list id adds the field to that list the way the app's Manage Fields does (it goes on the list's own task type, used by its top-level tasks). A task type id adds the field to that task type only. For a field on a list's SUBTASKS only, pass the list's subtask type: subtaskTaskTypeId from slingshot_get_task_type on the list's defaultTaskTypeId, or the taskTypeId of one of its subtasks. EXCEPTION — timeTracking: a time-tracking field never lives in a library. For fieldType=timeTracking, parentId must be a TASK TYPE id (slingshot_list_task_types / slingshot_create_task_type); the field is created on that task type and attached to it in the same call. A workspace/organization parentId is rejected, and a task type carries at most one time-tracking field. EXCEPTION — github: the app's GitHub field (the pull requests, issues and branches a task links to) also never lives in a library. For fieldType=github, parentId must be a TASK LIST id (the field goes on the list's own task type, as Manage Fields adds it) or a TASK TYPE id; a task type carries at most one GitHub field. It takes no options or config. To find the organization ID, call slingshot_get_my_profile and read organization.id (or workspaces[0].organizationId). Field types: text, longText, number, rating, checkbox, date, dateRange, dropdown, labels, members, email, phone, attachments, manualProgress, timeTracking, github. attachments is the app's Files field: its own list of files, links and documents, separate from the task's attachments. Pass options=[...] for dropdown/labels. Pass config={...} for type-specific keys: rating uses {ratingScale: 3|4|5}; number uses {numberDecimals, numberStyle: plain|currency|percent, currencySymbol}; manualProgress uses {slideIncrement: 1|5|10|25}; timeTracking uses {showEstimatedTime, showRemainingTime, showTimeProgress}; text/longText use {maxLength} (phone's limit is a fixed product cap of 25 — a maxLength for phone is ignored); email uses {allowMultiple}; members (People) uses {peopleFrom: anyone|organization|workspace|group, peopleGroupId (required with group), allowMultiple, notifyPeople (workspace scope only)}; attachments uses {multiple}; checkbox uses {colorIndex: 0-19, a position in the app's colour palette}.
slingshot_create_dashboard
ChatGPTCreates a new empty dashboard inside a workspace or project, placed in the given dashboard section or in the parent's default section, so it shows up in the Dashboards tab right away. MODIFIES DATA — two-step flow: first call without confirmationToken to preview, then call again with the returned confirmationToken after explicit user approval. Required: parentId, name. Optional: description, sectionId.
slingshot_create_discussion
ChatGPTCreates a discussion inside a discussion list. MODIFIES DATA — two-step flow.
slingshot_create_discussion_list
ChatGPTCreates a discussion list in a workspace, optionally scoped to a project, or an organization discussion list (organization admins only). Pass exactly one of workspaceId and organizationId. MODIFIES DATA — two-step flow.
slingshot_create_focus_block
ChatGPTPuts a focus block on the user's calendar: time set aside for one task, shown as busy next to their meetings. MODIFIES DATA — two-step flow: preview first, then call again with the token once the user approves. NOT idempotent — confirming twice blocks the time twice. Use when the user wants to block, reserve or schedule time to work on a task. Do NOT use to create a meeting or an event (use slingshot_create_calendar_event) or to move an existing block (use slingshot_update_focus_block). As in the product, the task must be assigned to the user and still open (task_not_schedulable otherwise), and a block has a maximum length (focus_block_too_long). Without end, the block lasts the task's estimate, else the user's Default duration (slingshot_get_calendar_settings). Needs focus time in the user's plan.
slingshot_create_goal
ChatGPTCreates one goal or a whole drafted set in one call: SMART goals, strategies, objectives and key results. MODIFIES DATA — two-step flow: first call without confirmationToken to preview every goal, then call again with the same goals and the returned confirmationToken after the user explicitly approves. Pass EVERY goal of the set in one call's goals array; a key result can hang from an objective of the same call (parentRef = the objective's ref), and an objective from a strategy of the same call. The whole set is checked before anything is written: if one goal is refused, nothing is written and each problem is listed. Use when the user wants to set a goal, draft OKRs for a quarter, or add key results to an objective. Do NOT use to change an existing goal — use slingshot_update_goal. Do NOT use to record progress — use slingshot_add_goal_check_in. A goal's status is never set here: it follows its check-ins. Goals created here are tracked manually through check-ins. NOT idempotent — confirming twice creates the set twice. Max 100 goals per call. Requires Goals in the user's plan.
slingshot_create_project
ChatGPTCreates a project inside a workspace. MODIFIES DATA — two-step flow: first call without confirmationToken to preview, then call again with the returned confirmationToken after explicit user approval. Use when the user wants to add, create, or open a new project. Do NOT use to add a task list — use slingshot_create_task_list. Required: name, workspaceId. Optional: description, startDate/endDate (YYYY-MM-DD), statusId.
slingshot_create_task
ChatGPTCreates a new task in a section. MODIFIES DATA — two-step flow: first call without confirmationToken to receive a preview of what will be created (with the resolved task type, assignee names, and custom-field validation), then call again with the returned confirmationToken after the user explicitly approves. Use when the user wants to add, create, or open a new task, or to add a subtask under an existing task (pass parentTaskId). Do NOT use to update an existing task — use slingshot_update_task for that. Do NOT use to add a comment — use slingshot_post_task_message. Calling this idempotently with the same parameters and a fresh token creates exactly one task per confirmed call (server-side idempotency for the active token). Required: name and either sectionId or parentTaskId. Optional: description, statusId (default status_open), priority (default: the Task Type's default priority, else none), dueDate, startDate, taskTypeId, assigneeIds, customFields.
slingshot_create_task_list
ChatGPTCreates a task list inside a workspace OR a project. Pass exactly one of workspaceId or projectId. MODIFIES DATA — two-step flow.
slingshot_create_task_section
ChatGPTCreates a section inside a task list. MODIFIES DATA — two-step flow. Required: name, taskListId.
slingshot_create_task_type
ChatGPTCreates a Task Type in a parent's library. MODIFIES DATA — two-step flow. PARENT SCOPE (CRITICAL): parentId can be EITHER: - Organization ID -> task type is available across ALL workspaces in the org. Use this when the user says "for my organization", "across all my workspaces", "org-wide", or doesn't specify a workspace. - Workspace ID -> task type is scoped to that workspace only. Use this when the user explicitly names a single workspace. DEFAULT: when in doubt, prefer ORGANIZATION SCOPE. A reusable type belongs at the org; a workspace-specific one is the exception. To find the organization ID, call slingshot_get_my_profile first. When creating a Task Type with custom fields, ALL the fieldIds you pass must live at the SAME scope as the Task Type. Org-scoped Task Type -> org-scoped fields only. Workspace-scoped Task Type -> workspace-scoped fields (or fields from that same workspace). Required: name, parentId. Optional: description, icon (single emoji), color (hex), fieldIds (custom field ids that make up this Task Type).
slingshot_create_tasks_from_action_items
ChatGPTCreates one task per action item the user kept, linked to the meeting and assigned to the suggested people, the same as the product's 'create tasks' on a meeting recap. MODIFIES DATA — two-step flow: the preview lists every item that becomes a task; call again with the token once the user approves. Items that already became a task are skipped and reported, so a retry never creates a task twice. Use after the user reviewed the action items and said which to keep. Do NOT use to create an unrelated task (use slingshot_create_task) or to extract items (use slingshot_generate_meeting_action_items). Without taskListId the tasks go where the product would put them. An id the list no longer has (it was extracted again) is reported under failed as item_not_found. If an item is edited between the preview and the confirmation, the confirmation is refused: preview again. Needs the meeting content permission.
slingshot_create_workspace
ChatGPTCreates a top-level workspace. MODIFIES DATA — two-step flow: first call without confirmationToken to preview, then call again with the returned confirmationToken after explicit user approval. The caller becomes the workspace owner automatically. Do NOT use to add a member to an existing workspace — use slingshot_add_workspace_member. Required: name. Optional: description, privacy (private | public — default private), startDate/endDate (YYYY-MM-DD), statusId, organizationId.
slingshot_delete_chat_message
ChatGPTDeletes a message the user wrote. MODIFIES DATA — two-step flow. The message keeps its place in the conversation with no text, and only the author may delete their own message.
slingshot_delete_custom_field
ChatGPTDeletes a custom field. The field is removed from every list and every GET; values on tasks currently using it become orphan refs that the UI hides. Matches the workspace library's 'Delete this Task Field' confirmation promise. A task list's customized Status or Priority (specialFieldKey status or priority) cannot be deleted, as in the app: the call answers 422 built_in_field_override. MODIFIES DATA — two-step flow.
slingshot_delete_dashboard
ChatGPTPermanently deletes a dashboard. CANNOT BE UNDONE. MODIFIES DATA — two-step flow with strong destructive preview. Required: dashboardId.
slingshot_delete_discussion
ChatGPTPermanently deletes a discussion and ALL its messages. CANNOT BE UNDONE. MODIFIES DATA — two-step flow with strong destructive preview.
slingshot_delete_discussion_list
ChatGPTPermanently deletes a discussion list and ALL its discussions and messages. CANNOT BE UNDONE. MODIFIES DATA — two-step flow with strong destructive preview.
slingshot_delete_focus_block
ChatGPTRemoves one of the user's focus blocks from their calendar; the task itself is not touched. MODIFIES DATA — two-step flow: the preview names the block; call again with the token once the user approves. The block is gone: blocking the time again creates a new block with slingshot_create_focus_block. Use when the user wants to free time they had set aside for a task. Do NOT use on a meeting or an event (use slingshot_cancel_calendar_event or slingshot_respond_to_calendar_event) or to move the block (use slingshot_update_focus_block). Needs focus time in the user's plan.
slingshot_delete_goal
ChatGPTPermanently deletes a goal AND every goal under it: a strategy's goals and objectives, an objective's key results, with all their check-ins. Goals have NO recycle bin: THIS CANNOT BE UNDONE, not from the product and not through the API. MODIFIES DATA — two-step flow: the preview names the goal and how many goals sit directly under it. Use only when the user explicitly says to delete or remove the goal for good. Do NOT use to close a goal the team finished or gave up on — record a check-in with status completed or notAchieved through slingshot_add_goal_check_in, which keeps its history. Do NOT use to move a goal — use slingshot_update_goal. Requires Goals in the user's plan and edit access to the goal.
slingshot_delete_project
ChatGPTPermanently deletes a project and ALL contained task lists, sections, tasks, discussions, and pins. THIS CANNOT BE UNDONE. MODIFIES DATA — two-step flow. Use only when the user explicitly says 'delete' / 'remove permanently'.
slingshot_delete_task
ChatGPTPERMANENTLY deletes a task. This action CANNOT be undone — the task and its activity feed, time logs, and subtasks are gone. MODIFIES DATA — two-step flow with extra-strong preview wording. Use ONLY when the user explicitly says delete, remove permanently, or get rid of a task. If the user wants to mark a task as done, use slingshot_update_task with statusId=status_completed instead — do NOT use this tool. Subtasks are deleted with the parent.
slingshot_delete_task_list
ChatGPTPermanently deletes a task list and ALL contained sections and tasks. THIS CANNOT BE UNDONE. MODIFIES DATA — two-step flow with strong destructive preview. Use only when the user explicitly says 'delete' / 'remove permanently'.
slingshot_delete_workspace
ChatGPTPermanently deletes a workspace. Every contained project, task list, section, task, discussion, pin list, and pin is also deleted in the same operation. THIS CANNOT BE UNDONE. MODIFIES DATA — two-step flow: preview shows what will be lost (counts of contained items); user must explicitly approve before confirming. Use only when the user explicitly says 'delete' / 'remove permanently' / 'get rid of'. Workspaces have no soft-archive path today — if the user wants to hide one, suggest changing privacy or status with slingshot_update_workspace instead.
slingshot_dismiss_meeting_action_item
ChatGPTDismisses one suggested action item of a meeting, for every attendee, so it is not turned into a task. IRREVERSIBLE: a dismissal cannot be undone. MODIFIES DATA — two-step flow: the preview names the item; call again with the token once the user approves. Use when the user says an item is wrong, done already or not theirs to track. Do NOT use to create tasks (use slingshot_create_tasks_from_action_items). An id from a list extracted again since is not found: read the items again. If the item is edited between the preview and the confirmation, the confirmation is refused: preview again. Needs the meeting content permission.
slingshot_edit_chat_message
ChatGPTReplaces the text of a message the user wrote. MODIFIES DATA — two-step flow. Only the author may edit their own message, and the conversation shows it as edited to everyone in it.
slingshot_generate_meeting_action_items
ChatGPTExtracts the action items of a meeting from its transcript with AI and returns all of them, each with an id and suggested assignees. SPENDS AI CREDITS, like the product's button. Marked destructive because spent credits cannot be returned and force=true replaces the list for every attendee, which retires the item ids read before; nothing else is deleted. MODIFIES DATA — two-step flow, for every caller: the preview says what it costs and how many items exist already; call again with the token only after the user approves. Without force, a list that is still current is returned without spending again. Use ONLY when the user asks for action items to be extracted or refreshed. Do NOT use to read them (use slingshot_get_meeting_summary, which is free). NOT idempotent: force=true spends credits again. Needs the meeting content permission and the meeting recap in the user's plan.
slingshot_generate_meeting_summary
ChatGPTGenerates the AI summary of a meeting from its transcript and returns it. SPENDS AI CREDITS, like the product's Generate button. Marked destructive because spent credits cannot be returned and force=true replaces the stored summary for every attendee; nothing else is deleted. MODIFIES DATA — two-step flow, for every caller: the preview says what it costs and whether a summary already exists; call again with the token only after the user approves. Without force, a summary that is still current is returned without spending again. Use ONLY when the user asks for a summary to be generated or refreshed. Do NOT use to read one (use slingshot_get_meeting_summary, which is free). NOT idempotent: force=true spends credits again. Needs the meeting content permission and the meeting recap in the user's plan.
slingshot_get_automation
ChatGPTReturns one automation in full, in the automation editor's words: its When (trigger, with In: Anywhere, a project, a list or a section), its Check If (blocks of conditions joined by and / or), its Then (the actions, in the order they run), Applied On, whether it is Active or Paused, its health with each issue and the part it is about, why and when Slingshot switched it off by itself, the last run stopped to prevent a loop, its runs this month and in total, who created it and the link that opens it in the app. Use to answer 'what does this automation do', 'why is it broken' or before changing it. Do NOT use to find automations; use slingshot_list_automations. Do NOT use for its Run History; use slingshot_list_automation_runs. Read-only. Requires Automations in the user's plan.
slingshot_get_automation_capabilities
ChatGPTReturns what the automation editor offers in a workspace, a project (for an automation Applied On it) or the user's personal automations: the When triggers with their In, change and date choices, the Then actions, the task fields a trigger can watch (canTrigger) or an action can set (canBeChanged) with their ids, types and options, the fields a Check If condition can check with their operators, the people an automation there can name, and the editor's limits (actions and conditions per automation). Use before building an automation by hand to find exact field, option and person ids. Do NOT use to turn a description into a rule: slingshot_propose_automation resolves names to these ids itself. Option ids belong to one task type each: the same option name on two task types is two ids. Read-only. Requires Automations in the user's plan.
slingshot_get_calendar_availability
ChatGPTReturns when several people are free or busy over a time range, read through the user's Microsoft calendar connection the way Slingshot's invite form does. Per person: availability, one character per interval (0 free, 1 tentative, 2 busy, 3 away, 4 working elsewhere), and the busy ranges. A person whose calendar the provider will not share comes back with status unavailable instead of failing the call. Use when the user wants to find a time with colleagues or asks whether someone is free. Do NOT use for the user's own events (use slingshot_list_calendar_events). The limits are the product's: a refusal names it (attendees_too_many, range_too_long, interval_invalid, window_too_detailed). Needs a working Microsoft connection. Read-only.
slingshot_get_calendar_event
ChatGPTReturns one calendar event in full: title, times and time zone, location and online meeting link, organizer, attendees with their answers, the user's own answer (myResponse), the body as plain text (capped at 2000 chars), the tasks linked to it, a focus block's task, its recurrence, the etag a change can be checked against, and whether a transcript, recordings, an AI summary and action items exist (meetingContent; never the content itself). Use when the user asks about one meeting: who is coming, where it is, what it is about. Do NOT use to list a day (use slingshot_list_calendar_events) or to read what was said (use slingshot_get_meeting_summary, or slingshot_get_meeting_transcript when the user asks for the transcript). Read-only. Answers NOT_FOUND for an id the user cannot read.
slingshot_get_calendar_settings
ChatGPTReturns the user's My Calendar settings, the ones the gear on Slingshot's calendar shows: when their working day starts and ends (HH:mm, wall-clock time in their own time zone), the Default duration of a new event or focus block in minutes, the day their week starts on (null follows their locale), and the focus-time switches (focus blocks written to Outlook, shown as busy, details hidden). Use before suggesting or placing time for the user: keep meetings and focus time inside their working day, and give a focus block their Default duration when the task has no estimate. Do NOT use for what is on the calendar (use slingshot_list_calendar_events) or to change a setting (use slingshot_update_calendar_settings). Read-only.
slingshot_get_chat
ChatGPTReturns one private chat with its members and how far the user has read. Use slingshot_list_chat_messages to read the conversation itself. Read-only.
slingshot_get_custom_field
ChatGPTReturns full detail for one custom field, including type-specific config and usage metrics (which Task Types include it, sample tasks). Use when the user asks about a specific field's settings. Read-only.
slingshot_get_dashboard
ChatGPTReturns full detail for one dashboard. Use when the user names a specific dashboard or you already have its id. Read-only.
slingshot_get_datasource
ChatGPTReturns the CATALOG entry for one datasource (itemType=DataSource): its name, provider, owner, sharing and timestamps. Read-only. ⚠ NOT the schema — this never returns columns, measures, hierarchies or date fields, whatever the provider. For a source's own vocabulary (a table's columns, a cube's measures / date levels / hierarchies) call slingshot_describe_datasource; an empty result here says nothing about whether the source exposes fields.
slingshot_get_datasource_item
ChatGPTReturns the CATALOG entry for one datasource item (any itemType): name, provider, owner, sharing and timestamps. Read-only. ⚠ NOT the schema — for a source's fields, measures or hierarchies call slingshot_describe_datasource.
slingshot_get_discussion
ChatGPTReturns metadata for one discussion, including its lastMessage. Use slingshot_list_discussion_messages to read the full thread. Read-only.
slingshot_get_discussion_list
ChatGPTReturns metadata for one discussion list. Read-only.
slingshot_get_goal
ChatGPTReturns one goal in full: type (goal = SMART goal, strategy, objective, keyResult), where it lives, the strategy or objective it hangs from, owners, status, cycle, target, how progress arrives (manual check-ins, a dashboard widget or a data source), live progress (currentValue against targetValue, percent 0-100, the same math the product's gauge shows), an objective's roll-up of its key results, the check-in schedule and whether one is overdue, the latest check-in and the AI progress summary. Use to answer 'how is this goal doing and why'. Do NOT use to find goals — use slingshot_list_goals. Do NOT use for older check-ins — use slingshot_list_goal_check_ins. Read-only. Requires Goals in the user's plan.
slingshot_get_meeting_summary
ChatGPTReturns the AI summary already generated for a meeting (headline, body, sections, when it was generated) and, by default, only the action items suggested for the user, which is what 'what am I on the hook for' means. Use when the user asks what happened in a meeting, what was decided, or what they have to do after it. Never returns the transcript (use slingshot_get_meeting_transcript, and only when the user asks for the transcript itself). Never generates anything: when nothing was generated the status is notGenerated, and generating is slingshot_generate_meeting_summary or slingshot_generate_meeting_action_items, which spend AI credits and need the user's approval. Action item ids are what slingshot_create_tasks_from_action_items and slingshot_dismiss_meeting_action_item take. Needs the meeting content permission; without it the answer says how the user grants it. Read-only.
slingshot_get_meeting_transcript
ChatGPTReturns one page of a Teams meeting's transcript: who spoke, how far into the meeting, and what they said. Use ONLY when the user explicitly asks for the transcript or for exact wording; for what a meeting was about, what was decided or what the user has to do, use slingshot_get_meeting_summary instead, which is far shorter. status says whether there is one: ready, pending (Teams is still producing it), notRecorded or unavailable. Every attendee who can open the meeting in Slingshot may read it. Needs the meeting content permission; without it the answer says how the user grants it. Read-only. Paged: max 100 entries per page, follow nextCursor for more.
slingshot_get_my_profile
ChatGPTReturns the authenticated user's identity (id, name, email), their organization (top-level object with id and name — use this id as parentId for org-scoped operations like creating org-level custom fields or task types), and the workspaces and projects they belong to (each workspace also carries organizationId for redundancy). Use as a discovery starting point — call this when the user asks "who am I?", "what's my account?", "what workspaces do I have?", or before any flow that needs the user's id, organization, or first accessible workspace. Do NOT use to enumerate every workspace in the organization — only those the caller is a member of are returned (for org-wide listings use slingshot_list_workspaces). Do NOT use to verify the MCP connection is alive — use slingshot_check_service_status. Read-only. Live — no cache.
slingshot_get_project
ChatGPTReturns full detail for one project: id, name, description, parent workspace ref, statusId, dates, taskListCount, discussionListCount, and a webUrl permalink. Use when the user names a specific project or you already have its id. Do NOT use to browse — use slingshot_list_projects. Do NOT use to list members — use slingshot_list_project_members. Read-only.
slingshot_get_server_version
ChatGPTReturns the MCP server's assembly version. Use to confirm which build is running before reporting a bug.
slingshot_get_task
ChatGPTReturns full details for a single task: id, name, description, status (plus statusName / statusCategory), priority, due date, start date, assignees, taskTypeId, custom fields, parent task ref, section, task list, project, workspace, subtaskCount, attachmentCount, messageCount, timeLoggedMinutes, predecessors, successors, createdBy, completedBy, and timestamps. archived: true marks a read-only task (it lives in an archived task list): do NOT attempt writes against it — they are refused until an owner unarchives it. Returns counts of subtasks, messages, and time logs — NOT their bodies. Use when the user names a single task or you already have its id. Do NOT use for browsing or filtering — use slingshot_list_tasks or slingshot_list_my_tasks. Do NOT use for the comment thread — use slingshot_list_task_messages. Read-only.
slingshot_get_task_focus_time
ChatGPTReturns the focus blocks the user put on their calendar for one task (past and future), with the minutes scheduled in total, the minutes already elapsed, and the task's estimate when it has one. Use when the user asks how much time they set aside for a task or whether it is scheduled. Do NOT use to block time (use slingshot_create_focus_block). Needs focus time in the user's plan. Read-only.
slingshot_get_task_list
ChatGPTReturns full detail for one task list: id, name, workspaceId, projectId (when nested under a project), defaultTaskTypeId, sectionCount, createdAt, modifiedAt. Use when the user names a specific task list or you already have its id. Do NOT use to browse — use slingshot_list_task_lists. Do NOT use to list the tasks inside — use slingshot_list_tasks with scope {type: 'task-list', id: taskListId}. Read-only.
slingshot_get_task_section
ChatGPTReturns full detail for one task section: id, name, taskListId, workspaceId, defaultTaskTypeId (when set), taskCount, webUrl. Use when the user names a specific section or you already have its id. Do NOT use to browse sections in a list — use slingshot_list_task_sections. Do NOT use to list the tasks inside the section — use slingshot_list_tasks with scope {type: 'section', id: sectionId}. Read-only.
slingshot_get_task_type
ChatGPTReturns full detail for one Task Type, including its full field list, the statuses its tasks can be in (statuses: id, name, category, including custom ones) and usage metrics (sections that default to it, sample tasks). Read-only.
slingshot_get_user
ChatGPTReturns identity (id, name, email, gravatar-derived avatarUrl) for a specific user by id. Email is included for any user the caller can see — themselves or a member of their organization, the same visibility as the organization member list in the app. Use this tool when the user asks 'who is USR-…', 'who added this comment', or wants to look up a co-worker mentioned in a task. Do NOT use for the authenticated caller — use slingshot_get_my_profile (returns workspaces + projects too). Do NOT use to list workspace members — use slingshot_list_workspace_members. Read-only.
slingshot_get_workspace
ChatGPTReturns full detail for one workspace by id: name, description, privacy, statusId, projectCount, taskListCount, createdAt, modifiedAt, and a webUrl permalink. Use when the user names a specific workspace or you already have its id. Do NOT use to browse the caller's workspaces — use slingshot_list_workspaces. Do NOT use to list members — use slingshot_list_workspace_members. Read-only.
slingshot_link_task_to_meeting
ChatGPTLinks an existing task and a meeting, the same link the product's '+ Task' on a meeting makes; the task then shows the meeting it is about. MODIFIES DATA — two-step flow: preview first, then call again with the token once the user approves. Use when the user says a task is about, or came out of, a meeting. Do NOT use to create tasks from the meeting's action items (use slingshot_create_tasks_from_action_items). A focus block cannot be linked: it already belongs to its task. Undo with slingshot_unlink_task_from_meeting.
slingshot_list_automation_runs
ChatGPTLists an automation's Run History, newest first: when each run started and ended, its status in the Run History's words (running, success, failed, noChange for No change, creditLimitReached for Credit limit reached), why it ended that way, the task or meeting it ran on, who set it off, and what went wrong on a failed run. Runs whose When matched but whose Check If did not hold are listed too, as conditionsNotMet; the app's Run History does not show those. Use to answer 'why did that not happen last Tuesday' (since and until around the day, or subjectId = the task) or 'is this automation failing'. Pass runId to read one run with what each action did (applied, alreadyHeld or declined, and why). Do NOT use to read the rule itself; use slingshot_get_automation. Read-only. Requires Automations in the user's plan. Errors are snippeted to 300 chars and each action's outcome is left out unless detailed=true. Max 100 results per page.
slingshot_list_automations
ChatGPTLists the automations the user can see, most recently changed first. Each row carries the automation's name, where it lives (a workspace, or the user's personal automations), whether it is Active or Paused, its When (trigger type), its health (working, broken or neverChecked) with the issue codes when broken, why Slingshot switched it off by itself if it did, its runs this month and when it last ran. Use when the user asks which automations they have, which are broken ('my broken automations': createdBy='me', health=['broken']), which are paused (active=false) or which ones a workspace runs (parentId = the workspace). Do NOT use to read one automation's Check If and Then in full; use slingshot_get_automation. Do NOT use to see what a run did; use slingshot_list_automation_runs. Personal automations are visible to their owner only. Read-only. Requires Automations in the user's plan. Returns compact rows by default; detailed=true returns each automation in full: its When, Check If, Then, Applied On, health with each issue and who created it. Max 100 results per page.
slingshot_list_calendar_connections
ChatGPTLists the calendar accounts the user connected to Slingshot (Microsoft today), each with its status: active, or needsReconnect when its sign-in stopped working and Slingshot can no longer read or write it until the user reconnects it in Slingshot. Use when the user asks which calendars are connected, when events look missing, or before writing to pick an account (canWrite). An empty list means no account is connected, which is not an error. Do NOT use to read events (use slingshot_list_calendar_events). Connecting or reconnecting an account is done by the user in Slingshot, never through this server. Read-only. detailed=true adds each account's calendars (id, name, isPrimary, canWrite).
slingshot_list_calendar_events
ChatGPTLists what is on the user's connected calendars between two instants: Outlook meetings and events, and focus blocks (time the user set aside in Slingshot for a task), recurring series expanded, sorted by start. Use when the user asks what their day or week looks like, which meetings they have, or when they are busy. Every event says its kind: meeting (other people invited, or an online meeting), event (only the user) or focusBlock (carries the taskId it is for). For 'my day', pass from = the start of the day and to = the start of the next day in the user's time zone, plus timeZone. IMPORTANT: when the answer says complete=false, part of the calendar could not be read, typically an account whose sign-in expired (needsReconnect); pass the warning on to the user and never describe missing events as free time or an empty day. Do NOT use for one event's attendees, body or meeting content (use slingshot_get_calendar_event), for other people's availability (use slingshot_get_calendar_availability) or for what was said in a meeting (use slingshot_get_meeting_summary). Read-only. The window is at most 62 days. Max 100 events per page. Compact by default; detailed=true adds attendees, organizer, body, ids that match the customer's own calendar data, and links.
slingshot_list_chat_members
ChatGPTLists everyone in a private chat, each with the message they last read. Every member is an owner, so there is no role to report. Read-only. Max 100 results per page.
slingshot_list_chat_messages
ChatGPTLists the messages of a private chat, newest first, including the rows the product writes itself when someone is added or the conversation is renamed. A deleted message keeps its place with empty text. Read-only. Max 100 results per page.
slingshot_list_chats
ChatGPTLists the private chats the user takes part in, most recent activity first. Each row says how many people are in the conversation and when it last had a message; detailed=true adds the members by name and the message the user last read. Read-only. Max 100 results per page.
slingshot_list_custom_fields
ChatGPTLists custom fields in a parent's library. Parent can be a workspace, project, or organization id. Each field includes id, name, fieldType, scope, and (when present) the options list and config bag. Read-only.
slingshot_list_dashboards
ChatGPTLists the dashboards shown in the Dashboards tab of a workspace or project, reading the dashboard list and sections the UI uses. Each item includes id, name, description, certification, creator, modifier, the parent, dashboard list and section. Required: parentId. Read-only.
slingshot_list_datasource_items
ChatGPTLists every catalog item in a workspace or project datasource repository (datasources, connections, item metadata). Required: parentId. Read-only.
slingshot_list_datasources
ChatGPTLists Reveal datasources (catalog items of itemType=DataSource) in a workspace or project repository. Required: parentId. Read-only.
slingshot_list_discussion_lists
ChatGPTLists discussion lists in a workspace, optionally narrowed to a project, or the organization discussion lists of an organization. Pass exactly one of workspaceId and organizationId. Read-only. Max 100 results per page.
slingshot_list_discussion_messages
ChatGPTLists messages in a discussion, newest-first. Each message includes id, text, sender, createdAt. Read-only. Max 100 per page.
slingshot_list_discussions
ChatGPTLists the discussions inside a discussion list, most recent activity first. Read-only. Max 100 results per page.
slingshot_list_goal_check_ins
ChatGPTLists a goal's check-ins, newest first: the date, the value recorded, the status it set, the note that explains it and who checked in. Use when the user asks how a goal got where it is, what was said at the last check-ins, or who has been checking in. Do NOT use to record progress — use slingshot_add_goal_check_in. For just the latest one, slingshot_get_goal already carries it. Only SMART goals and key results take check-ins. Read-only. Requires Goals in the user's plan. Notes are snippeted to 300 chars unless detailed=true. Max 100 results per page.
slingshot_list_goals
ChatGPTLists the goals the user can see: SMART goals, strategies, objectives and key results, most recently changed first. Each row carries the goal's type, status (notStarted, onTrack, atRisk, offTrack, completed, notAchieved), cycle, progress percent and whether a check-in is overdue. Use when the user asks what they are behind on ('my goals that are at risk': ownerId='me', status=['atRisk','offTrack']), how a workspace, project or quarter is doing (the goals set for Q2 2026: cycleYear=2026, cycleQuarter=2), or what key results an objective has (parentId = the objective). Do NOT use to read one goal in full — use slingshot_get_goal, which adds the target, the latest check-in and the AI progress summary. Do NOT use for the check-in history — use slingshot_list_goal_check_ins. A person's own goals are visible to that person only. Read-only. Requires Goals in the user's plan. Returns compact rows by default; detailed=true returns each goal as slingshot_get_goal does. Max 100 results per page.
slingshot_list_my_pins
ChatGPTLists items the user has pinned across all their workspaces and projects, plus their personal pins (no workspace) — quick-access bookmarks. Each pin has a type: url, file, dashboard, or document. Use when the user asks about their pins, bookmarks, favorites, or saved links. Read-only. Live — no cache. Default 50 results, max 100.
slingshot_list_my_tasks
ChatGPTLists tasks assigned to the authenticated user, with filters for status, priority, due window, and container. The single most-used discovery tool — call this when the user says "what's on my plate", "what do I have to do", "show me my tasks", "what's due this week", or asks about their own work. Tasks are returned overdue-first (oldest due date first), then upcoming by due date ascending, then tasks without a due date last. Do NOT use when the user names a workspace, project, list, or section to browse — use slingshot_list_tasks. Read-only. Live — no cache. Default 20 results per page, max 100.
slingshot_list_project_members
ChatGPTLists members of a project with their role, name, email and joinedAt date. Roles: owner, contributor, viewer. Read-only. Max 100 results per page.
slingshot_list_projects
ChatGPTLists projects the user has access to, optionally scoped to a workspace. Each project includes id, name, description, parent workspace id, and webUrl; detailed=true also adds taskListCount, discussionListCount, statusId, and timestamps. When workspaceId is omitted, results are aggregated across every workspace the caller belongs to (one round-trip per workspace), and cursor pagination is NOT supported — pass a workspaceId for paginated browsing. Use when the user asks about projects, sub-containers within a workspace, or wants to see project-level work. Use slingshot_list_workspaces first if the user has not specified a workspace. Do NOT use to fetch one project by id — use slingshot_get_project. Read-only. Live — no cache. Default 20 results per page, max 100.
slingshot_list_task_lists
ChatGPTLists task lists in a workspace (both workspace-level lists and lists nested in any project of that workspace). Read-only. Max 100 results per page.
slingshot_list_task_messages
ChatGPTLists messages in a task's activity feed, newest first. Returns both human-authored comments AND system activity entries (status changes, assignee changes, etc.) interleaved chronologically. Each entry has id, text, sender, and timestamp. Use when the user asks about comments, activity, discussion, history, or what people said on a task. Do NOT use to post a comment — use slingshot_post_task_message. Do NOT use to read only the count — slingshot_get_task returns messageCount. Read-only. Live — no cache. Default 20, max 50 results per page.
slingshot_list_task_sections
ChatGPTLists sections in a task list. Each section includes id, name, default Task Type id (if set) and a task count. Read-only.
slingshot_list_task_types
ChatGPTLists Task Types in a parent's library. Parent can be a workspace, project, or organization id. Each Task Type includes id, name, icon, color, scope, and the field references that make up its field set. Read-only.
slingshot_list_tasks
ChatGPTLists tasks within a specified container — section, task list, project, or workspace — with filters for status, priority, assignee, and due window. Use when the user names a workspace, project, list, or section to browse. Do NOT use when the user asks about their own tasks — use slingshot_list_my_tasks. Do NOT use to fetch one task by id — use slingshot_get_task. Do NOT use to list task lists or sections of a container — use slingshot_list_task_lists / slingshot_list_task_sections. Read-only. Live — no cache. Default 20 results per page, max 100.
slingshot_list_time_logs
ChatGPTLists the time entries logged on a task, oldest first. Each entry has timeLogId, the user the time is attributed to, durationSeconds, startDate and endDate, plus note when one was logged. Use when the user asks who logged time on a task, when, or how much, or before removing an entry: pass its timeLogId to slingshot_remove_time_log. Do NOT use for the total only — slingshot_get_task returns timeLoggedMinutes. Do NOT use to log time — use slingshot_add_time_log. Read-only. Live — no cache. Default 20, max 50 results per page.
slingshot_list_workspace_members
ChatGPTLists members of a workspace with their role, name, email and joinedAt date. Roles: owner, contributor, viewer. Read-only. Max 100 results per page.
slingshot_list_workspaces
ChatGPTLists workspaces the user belongs to. Each entry includes id, name, description, and webUrl in compact mode; detailed=true also adds projectCount, taskListCount, privacy, statusId, and timestamps. Use when the user asks about workspaces, top-level containers, or wants to see "where things live". Do NOT use to fetch one specific workspace by id — use slingshot_get_workspace. Do NOT use to list members of a workspace — use slingshot_list_workspace_members. Read-only. Live — no cache. Default 20 results per page, max 100.
slingshot_mark_chat_read
ChatGPTRecords how far the user has read in a private chat, clearing its unread badge the way opening the conversation does. MODIFIES DATA — two-step flow.
slingshot_open_chat
ChatGPTOpens a private chat with the given users, or returns the existing one when a conversation with exactly those members is already there. MODIFIES DATA — two-step flow.
slingshot_post_discussion_message
ChatGPTPosts a message to a discussion. MODIFIES DATA — two-step flow. NOT idempotent — confirming twice posts twice. Used for free-text posts visible to all discussion members.
slingshot_post_task_message
ChatGPTPosts a comment to a task's activity feed. The comment is visible to all members with access to the task and is NOT editable or deletable through this surface (each call creates a new entry — calling twice creates two comments). MODIFIES DATA — two-step flow. Use when the user wants to comment on, reply to, or leave a note on a task. Do NOT use to set the task description (the body shown above the activity feed); use slingshot_update_task with the description field instead.
slingshot_propose_automation
ChatGPTTurns what the user describes into an automation without writing anything: give the When, Check If and Then with fields, options and people by their names ('Status', 'Done', 'Ana Gomez') or ids, and get back the rule exactly as it would be stored (its name, the sentence the list shows, each part in the editor's words), resolved (each name and the id it matched), unresolved (each name it could not work out, with the candidates when there are several or none) and refusals (each rule the product would refuse, with the path of the part and a code). ready is true only when nothing is unresolved or refused; then request holds the exact parameters for slingshot_create_automation. Use first whenever the user asks for an automation in their own words, and show them the rule and every unresolved part before creating. Do NOT use to change an existing automation; use slingshot_update_automation. Lists, sections, projects, templates and discussions are not looked up by name: pass their ids. Read-only: changes nothing. Requires Automations in the user's plan, including the paid automations the app asks for before creating one.
slingshot_refresh_goal
ChatGPTRe-reads the number of a goal measured from a dashboard widget or a data source, the way the product's refresh button does, and returns the goal as it stands afterwards with whether anything changed. MODIFIES DATA — two-step flow: the refresh can change the goal's progress and status. Use when the user asks for the latest number on a measured goal. Manually tracked goals, objectives and strategies cannot be refreshed: record a check-in with slingshot_add_goal_check_in instead. It does not regenerate the goal's AI progress summary. Requires Goals in the user's plan and read access to the goal.
slingshot_remove_project_member
ChatGPTRemoves a user from a project. MODIFIES DATA — two-step flow. The user loses access to the project and all nested task lists, tasks, and discussions. Their workspace-level access (if any) is unaffected. Authored content (tasks they created, comments they posted) is NOT deleted — the user can be re-added later via slingshot_add_project_member to restore access, though their original joinedAt and direct task-assignments are not restored. To temporarily change permissions use slingshot_set_project_member_role with role=viewer instead.
slingshot_remove_time_log
ChatGPTPERMANENTLY removes a specific time log entry from a task. This action CANNOT be undone — the entry is gone. MODIFIES DATA — two-step flow. Use when the user wants to delete, remove, or undo a logged time entry. Identify the entry by its timeLogId (returned by slingshot_add_time_log and listed by slingshot_list_time_logs).
slingshot_remove_workspace_member
ChatGPTRemoves a user from a workspace. MODIFIES DATA — two-step flow. The user loses access to the workspace and all nested projects, lists, sections, and tasks. Authored content (tasks they created, comments they posted) is NOT deleted — the user can be re-added later via slingshot_add_workspace_member to restore access, though their original joinedAt and any direct task-assignments at the moment of removal are not restored. To temporarily change permissions use slingshot_set_workspace_member_role with role=viewer instead.
slingshot_respond_to_calendar_event
ChatGPTRecords the user's answer to an invitation in Outlook: accepted, tentative or declined, optionally with a comment to the organizer. Marked destructive because the answer emailed to the organizer cannot be recalled and a declined meeting leaves the user's calendar; nothing else is deleted. MODIFIES DATA — two-step flow, for every caller: the preview shows the current answer and the new one; call again with the token once the user approves. Use when the user wants to accept, decline or tentatively accept a meeting someone else organized. Do NOT use on a meeting the user organizes (organizer_cannot_respond; to call it off use slingshot_cancel_calendar_event) or to change the meeting itself (use slingshot_update_calendar_event).
slingshot_send_chat_message
ChatGPTSends a message to a private chat. MODIFIES DATA — two-step flow. NOT idempotent — confirming twice sends twice. Everyone in the conversation sees it immediately.
slingshot_set_automation_active
ChatGPTSwitches an automation on (Active) or off (Paused). Pausing keeps the automation whole, with its When, Check If and Then, and only stops it from running until it is switched back on: when the user says pause, stop, disable or turn off an automation, this is the tool, never a deletion (there is no delete tool). MODIFIES DATA — two-step flow: the preview shows the automation and the change; call again with the same parameters and the returned confirmationToken after the user explicitly approves. Switching off always works for anyone who can edit the automation, whatever the plan, the credits or its health. Switching on refuses a broken automation (subCode automation_broken): fix it first with slingshot_update_automation. Switching on also clears 'switched off by Slingshot'. Use when the user wants to pause, resume, enable or disable an automation. Do NOT use to change what it does; use slingshot_update_automation. Idempotent: switching to the state it is in changes nothing. If the automation is changed by anyone between the preview and the confirmation, the confirmation is refused (reason state_changed): preview again. Pausing on a plan without Automations cannot read the automation, so that pause is not checked for changes. Requires edit access to the automation; switching on also requires Automations in the user's plan, including the paid automations.
slingshot_set_project_member_role
ChatGPTChanges an existing member's role in the project. MODIFIES DATA — two-step flow. Roles: owner, contributor, viewer. Use this NOT remove+add — preserves activity history. To take a member out of the project use remove_project_member instead.
slingshot_set_workspace_member_role
ChatGPTChanges an existing member's role in the workspace. MODIFIES DATA — two-step flow. Roles: owner, contributor, viewer. Use this NOT remove+add — preserves activity history. To take a member out of the workspace use remove_workspace_member instead.
slingshot_unlink_task_from_meeting
ChatGPTRemoves the link between a task and a meeting; neither the task nor the meeting is deleted. MODIFIES DATA — two-step flow: preview first, then call again with the token once the user approves. Use when the user says a task is not about that meeting. A focus block carries no links, so there is nothing to unlink on one. Undo with slingshot_link_task_to_meeting.
slingshot_update_automation
ChatGPTChanges an automation's name, sentence, Applied On, When, Check If or Then. Send only the parts that change; the others stay as they are. Its location (workspace or personal) cannot change. Marked destructive because actions REPLACES the whole Then list and conditions the whole Check If: send the complete list you want, in the order it should run; an action sent with its id (from slingshot_get_automation) stays that action, one without an id is new, and every current action left out is removed. MODIFIES DATA — two-step flow: the preview checks the result as the product would and shows each change as current → new as it will be stored, the complete resulting list of actions and the actions removed; call again with the same parameters and the returned confirmationToken after the user explicitly approves. A change the product refuses comes back as VALIDATION_ERROR with a subCode and the path of each part, and no token. If the automation is changed by anyone between the preview and the confirmation, the confirmation is refused (reason state_changed): preview again. Every field, option, person, list, section and template is an id (slingshot_propose_automation resolves names, slingshot_get_automation_capabilities lists them). Use when the user wants to rename an automation, change what sets it off, what it checks or what it does. Do NOT use to pause or switch it on; use slingshot_set_automation_active. Do NOT use to create one; use slingshot_create_automation. Requires edit access to the automation and Automations in the user's plan, including the paid automations.
slingshot_update_calendar_event
ChatGPTChanges an Outlook event the user organizes: only the fields passed change. Marked destructive because every attendee is sent the change at once and it cannot be recalled, and attendees passed here replace the whole list (people left out are removed and notified); nothing is deleted. MODIFIES DATA — two-step flow, for every caller: the preview shows each change (current → new); call again with the token once the user approves. On a recurring event, scope picks this occurrence or the whole series. Use when the user wants to move, rename, reschedule or re-invite. Do NOT use to cancel (use slingshot_cancel_calendar_event), to answer an invitation (use slingshot_respond_to_calendar_event) or to move a focus block (use slingshot_update_focus_block). Only the organizer may change an event (not_organizer otherwise). Pass the etag read from slingshot_get_calendar_event to refuse the change if the event changed in Outlook since (event_changed).
slingshot_update_calendar_settings
ChatGPTChanges the user's My Calendar settings, the ones the gear on Slingshot's calendar shows: the working day, the Default duration of a new event or focus block, the day the week starts on, and the focus-time switches. MODIFIES DATA — two-step flow: the preview shows each setting's current and new value; call again with the token once the user approves. Only the settings passed change; resetToDefault puts the named ones back to their default. Use when the user wants to change their working hours, how long new events or focus blocks last, or how focus blocks show on their calendar. Do NOT use to read the settings (use slingshot_get_calendar_settings) or to move a block (use slingshot_update_focus_block). The working day is wall-clock time in the user's time zone, on 5-minute steps, and ends after it starts; the Default duration is 15, 30, 45, 60 or 90 minutes. The focus-time switches need focus time in the user's plan.
slingshot_update_custom_field
ChatGPTPatches a custom field. MODIFIES DATA — two-step flow. Send only the fields you want to change. options when sent fully REPLACE the existing list; config keys merge (only provided keys change). The hard-delete path is a separate tool (slingshot_delete_custom_field) — irreversible.
slingshot_update_dashboard
ChatGPTPatches dashboard fields. MODIFIES DATA — two-step flow. Send only the fields you want to change; omitted fields are left as-is. Required: dashboardId. Any of: name, description.
slingshot_update_discussion
ChatGPTPatches discussion fields. MODIFIES DATA — two-step flow. Currently only name can be changed.
slingshot_update_discussion_list
ChatGPTPatches discussion list fields. MODIFIES DATA — two-step flow. Currently only name can be changed.
slingshot_update_focus_block
ChatGPTMoves or resizes one of the user's focus blocks: pass a new start, a new end, or both. MODIFIES DATA — two-step flow: the preview shows the current time and the new one; call again with the token once the user approves. Use when the user wants to move, shorten or extend time set aside for a task. Do NOT use on a meeting or an event (use slingshot_update_calendar_event) or to remove the block (use slingshot_delete_focus_block). Needs focus time in the user's plan.
slingshot_update_goal
ChatGPTChanges a goal's name, description, cycle, target, check-in schedule or owners, re-aligns it (moves a key result to another objective, or a SMART goal or objective under another strategy or out of it with removeFromParentGoal=true), or moves it to another location (locationId: the top level of another workspace, the organization or the user's own goals, never a project; a key result moves with its objective; the goal leaves its strategy and everything under it moves with it). MODIFIES DATA — two-step flow: the preview shows each change as current → new, and where a moved goal goes. Send only what changes; omitted fields stay as they are. Its type cannot change. Use when the user wants to rename a goal, raise a target, push it to next quarter, hand it to someone else or move it to another workspace. Do NOT use to record progress or change the status — the status follows check-ins; use slingshot_add_goal_check_in. Do NOT use to create — use slingshot_create_goal. Requires Goals in the user's plan and edit access to the goal.
slingshot_update_project
ChatGPTPatches project fields. MODIFIES DATA — two-step flow. Send only the fields you want to change; omitted fields are left as-is. Use when the user wants to rename a project, adjust dates, or change its status. Cannot move a project to a different workspace (workspaceId is immutable). Do NOT use to change a member's role — use slingshot_set_project_member_role. Required: projectId. Any of: name, description, startDate, endDate, statusId.
slingshot_update_task
ChatGPTUpdates fields on an existing task. MODIFIES DATA — two-step flow: first call without confirmationToken to preview the diff (each changed field shown current → new), then call again with the returned confirmationToken after the user explicitly approves. Use when the user wants to change ANY task field — name, description, status, priority, due date, start date, task type, assignees, custom fields, or move between sections. Use slingshot_update_task with statusId=status_completed to mark a task done; do NOT use slingshot_delete_task for that. Setting a field to its current value is allowed and is a no-op. Only the fields explicitly provided are changed; omitted fields keep current values.
slingshot_update_task_list
ChatGPTPatches task list fields: name and/or defaultTaskTypeId — the default Task Type new tasks in the list inherit. This is the only writable home of the default; sections do not accept it. MODIFIES DATA — two-step flow.
slingshot_update_task_section
ChatGPTPatches section fields (today: name only). MODIFIES DATA — two-step flow. Send only the fields you want to change. The default Task Type new tasks inherit is a task-list setting — set or clear it via slingshot_update_task_list, not here.
slingshot_update_task_type
ChatGPTPatches a Task Type. MODIFIES DATA — two-step flow. Send only the fields you want to change. fieldIds (when sent) fully REPLACES the field list.
slingshot_update_workspace
ChatGPTPatches workspace fields. MODIFIES DATA — two-step flow. Send only the fields you want to change; omitted fields are left as-is. Cannot move a workspace to a different organization (organizationId is immutable). Do NOT use to change a member's role — use slingshot_set_workspace_member_role. Required: workspaceId. Any of: name, description, privacy, startDate, endDate, statusId.
slingshot_add_project_member
Claudeslingshot_add_time_log
Claudeslingshot_add_workspace_member
Claudeslingshot_check_service_status
Claudeslingshot_create_custom_field
Claudeslingshot_create_dashboard
Claudeslingshot_create_discussion
Claudeslingshot_create_project
Claudeslingshot_create_task
Claudeslingshot_create_task_list
Claudeslingshot_create_task_section
Claudeslingshot_create_task_type
Claudeslingshot_create_workspace
Claudeslingshot_delete_custom_field
Claudeslingshot_delete_dashboard
Claudeslingshot_delete_discussion
Claudeslingshot_delete_project
Claudeslingshot_delete_task
Claudeslingshot_delete_task_list
Claudeslingshot_delete_workspace
Claudeslingshot_get_custom_field
Claudeslingshot_get_dashboard
Claudeslingshot_get_datasource
Claudeslingshot_get_datasource_item
Claudeslingshot_get_discussion
Claudeslingshot_get_my_profile
Claudeslingshot_get_project
Claudeslingshot_get_server_version
Claudeslingshot_get_task
Claudeslingshot_get_task_list
Claudeslingshot_get_task_section
Claudeslingshot_get_task_type
Claudeslingshot_get_user
Claudeslingshot_get_workspace
Claudeslingshot_list_custom_fields
Claudeslingshot_list_dashboards
Claudeslingshot_list_datasource_items
Claudeslingshot_list_datasources
Claudeslingshot_list_discussion_messages
Claudeslingshot_list_discussions
Claudeslingshot_list_my_pins
Claudeslingshot_list_my_tasks
Claudeslingshot_list_project_members
Claudeslingshot_list_projects
Claudeslingshot_list_task_lists
Claudeslingshot_list_task_messages
Claudeslingshot_list_task_sections
Claudeslingshot_list_task_types
Claudeslingshot_list_tasks
Claudeslingshot_list_workspace_members
Claudeslingshot_list_workspaces
Claudeslingshot_post_discussion_message
Claudeslingshot_post_task_message
Claudeslingshot_remove_project_member
Claudeslingshot_remove_time_log
Claudeslingshot_remove_workspace_member
Claudeslingshot_set_project_member_role
Claudeslingshot_set_workspace_member_role
Claudeslingshot_update_custom_field
Claudeslingshot_update_dashboard
Claudeslingshot_update_discussion
Claudeslingshot_update_project
Claudeslingshot_update_task
Claudeslingshot_update_task_list
Claudeslingshot_update_task_section
Claudeslingshot_update_task_type
Claudeslingshot_update_workspace
Claude