MCP App Store
by KeenEthics

Overview

Access your Wrike workspace directly from ChatGPT to plan, prioritise, update and track work. Turn chats into projects, tasks, and timelines your team can see and execute. Pull in meeting notes, assign owners, set due dates - all without switching tools. Keep your team moving forward, right from ChatGPT.

Tools

add_attachments_to_item

ChatGPT
Adds uploaded attachments to an existing Wrike item (task, folder, project, or any custom item type). For each file, first call prepare_attachment_upload, then PUT the file's raw bytes to the returned uploadUrl. After all uploads succeed, call this tool once with all returned attachmentId values. This tool does not upload file bytes. It accepts only successfully uploaded attachments that have not yet been added to any item.

add_whiteboard_to_item

ChatGPT
Adds a link between an existing Whiteboard and a Wrike item. Use this when the user already has a Whiteboard UUID or a Whiteboard URL in Klaxoon and wants it linked to a task, folder, or project. This does not upload a file and does not create or modify the Klaxoon board. The whiteboardUUID parameter uses the UUID returned by Klaxoon MCP tools. Pass exactly one of whiteboardUUID or whiteboardUrl. The response always includes whiteboardUUIDAvailable. The response also includes attachmentId for the Wrike attachment and whiteboardUUID for use with Klaxoon MCP tools when available. When adding by whiteboardUrl, whiteboardUUIDAvailable is false if Wrike cannot resolve the UUID; in that case, do not guess the board by title.

create_item_comment

ChatGPT
Posts a comment on a Wrike item (task, folder, project, or any custom item type). If you already have enough context to write an accurate reply, reply directly. Otherwise, call get_item_comments and read the thread you are replying to. If that still isn't enough, read all the comments on the item before posting. For a reply, pass the item's itemId and the top-level comment's commentId as rootCommentId. (First reply automatically creates the thread.) For replies within an existing thread, use that same top-level commentId, never a reply's commentId. Omit rootCommentId only to start a new top-level comment. The text is HTML: only links, line breaks (<br>) and quotes (<blockquote>) render; bold/italic do not. Mentions: a person usually writes a mention as "@Name" (e.g. "@Javier"), but bare "@Name" text does NOT notify anyone. To make a real mention you must convert that person into their user id and write @[w:usr:N] inline (e.g. @[w:usr:24175041]); the tool renders it into the actual tag. Resolve the id from context first, such as the comment authors in the thread or the item's assignees, and use only an id you have actually seen. Never invent or guess a user id; if you cannot determine it, or the name is ambiguous (more than one match), ask the user instead of guessing.

create_item_from_blueprint

ChatGPT
Creates a folder, project, task, or custom item type from an existing blueprint. A launch creates a whole item tree and no tool here undoes it, so get the blueprint and the parent right before calling. A task cannot parent a folder/project blueprint — resolve a space, folder or project as the parent instead. Resolve a blueprint given by name with search_blueprints. Never guess a blueprint id. Never fill a parameter the user did not ask for. This tool cannot set sharing, effort or followers. Say so and stop; do not launch instead. Waits ~60s, then returns the created root item. Non-idempotent. A large blueprint can outlast the wait; the timeout message reports how far the launch had got, so report that rather than only a timeout. On success give [title](permalink), then say what to do next. baseType is the structural kind (TASK/FOLDER/PROJECT); itemType is the custom item type name when the item has one, otherwise the same as baseType. Quote the launch's operation id when reporting a problem with the launch. copyAttachments copies only files already in the blueprint.

create_project_folder_item

ChatGPT
Creates one or more Wrike folders, projects, or project-based custom item types. Use itemType="Folder", itemType="Project", or a resolved custom item type ID. Do not ask again for a type already specified. Folders do not support owners or status. Resolve named parents with search_spaces or search_items tools, "me" with get_users(me=true), and named owners with search_users. Reuse canonical IDs from context, Wrike links, lookups, or prior creation results; never invent or ask the user for an ID. Create parents before children and use returned itemId values in later calls. After a mixed response, retry only failed items. Successful items return itemId and permalink. If the call outcome is unknown, do not retry automatically: search the intended parent for an exact-title match and ask before retrying if the result is inconclusive.

create_task_item

ChatGPT
Creates one or more Wrike tasks under a space, folder, project, or task; a task parent creates a subtask. Resolve named parents with search_spaces or search_items tools, "me" with get_users(me=true), and named assignees with search_users. Reuse canonical IDs from context, Wrike links, lookups, or prior creation results; never invent or ask the user for an ID. Create parents before children and use returned itemId values in later calls. After a mixed response, retry only failed items. Successful items return itemId and permalink. If the call outcome is unknown, do not retry automatically: search the intended parent for an exact-title match and ask before retrying if the result is inconclusive.

get_approvals

ChatGPT
Returns Wrike approvals by exact lookup. Exactly one of two modes per call: - ids: exact id lookup. The API silently omits ids the caller cannot see, so the returned array may be shorter than the input list. - parentId: approvals attached DIRECTLY to that task, folder, or project, such as a task's own approvals or a folder/project's own "Approval by Project". This does NOT recurse: approvals on tasks inside a folder/project are NOT returned. To find approvals across many items, use search_approvals. Each approval carries status (Draft|Pending|Approved|Rejected|Cancelled), type (FilesOnly|Regular), title, description, parentId (w:itm:N), authorId (w:usr:N), finisherId (w:usr:N or null), finished, dueDate, updatedDate, attachmentIds (w:atch:N), and decisions[] ({approverId: w:usr:N, status: Pending|Approved|Rejected, comment, updatedDate}). User ids are returned raw in canonical w:usr:N form (not resolved to names); resolve them with get_users to show names. Decisions are read-only via this API; cast a decision in the Wrike UI. No filters. To filter by status, approver, dueDate, etc., use search_approvals.

get_asyncjob

ChatGPT
Returns the current status of an async job (w:acj:S). status is IN_QUEUE, IN_PROGRESS, COMPLETED, or FAILED. On COMPLETED, itemId (w:itm:N) is set when the job created a work item. On FAILED, errorMessage says what to do next. This tool does not wait — poll about every 5 seconds while IN_QUEUE or IN_PROGRESS, and stop on COMPLETED or FAILED. progressPercent is how far the job has got, 0 to 100. Report it between polls so the operation is visibly advancing; not every job type reports it, and those stay at 0 until they finish.

get_item_comments

ChatGPT
Read comments of a Wrike task, folder, or project, with authors and timestamps. The main stream groups replies under their top-level comment in thread. hasThread indicates an existing thread even when its replies are not included in the response. Pass a top-level comment's commentId as rootCommentId to read that thread separately. Returns at most 200 comments total, prioritizing top-level comments in the main stream. totalComments counts top-level comments in the main stream; totalThreadComments counts the root and replies in thread mode. Only the count for the requested mode is returned; check truncated.

get_item_details

ChatGPT
Get full detail of Wrike tasks, folders and projects by id: resolved status, filled-in custom fields, people, child/comment/attachment counts, parent, full path from space/root, and all attachments (including external Google Drive / link URLs). Only custom fields that have a value are returned; a field absent from the list is not filled in for that item, and an empty attachments list means none. Pass fullDescriptions=true to bypass the 500-char description truncation. To read an attachment, use its url. For type=WRIKE, download the file with an HTTP GET from its temporary signed URL, without Wrike authorization headers, then open or parse it. If the URL has expired, call get_item_details again. For other types that have a url, it points to the external provider and may require separate access. Whiteboards on the item appear in attachments with type WHITEBOARD, the board title as name, and optional whiteboardUUID when available (not a w: id). whiteboardUUID is the UUID returned by Klaxoon MCP tools and can be passed back to them. WHITEBOARD has no url. To link or unlink a board, use add_whiteboard_to_item / remove_whiteboard_from_item.

get_item_history

ChatGPT
Returns field-change history for Wrike tasks, folders, and projects: what changed, when, and who changed it. Use it to build timelines, audit changes, and investigate how an item evolved. Use get_item_details for the current state and get_item_comments for discussion and reasons behind changes. Choose requestedChanges based on the user's request and include every relevant change type. For broad or unspecified history requests, include all available types. For multi-item investigations, put the most relevant items first and start with the change types needed for the question. If one item needs deeper analysis, start a new call for that item with additional requestedChanges or a wider changedDate range. Each page returns at most pageSize events, newest first within each item. Results are grouped by item, and items are processed in scope.itemIds order. Each event includes its timestamp, author, change type, action, and a typed payload containing old/new or added/removed values, depending on the change type. Only items with matching events are returned on success. Items that fail to load are still returned with success=false, the item id, and an error; other successful items are included in the same response. When truncated=true, call again with the returned nextPageToken and the same arguments as in the initial call. The token alone determines the next page; repeated arguments do not affect it. Continue until truncated=false.

get_items_children

ChatGPT
List the direct children (one level down) of a Wrike item: a folder, project, task, or space. This is how you see a space's top-level contents and how you walk the hierarchy. Pass a child's id back in to go one level deeper, or to get_item_details for its full detail. It is built for traversing the hierarchy without large responses, so drill down level by level and pull full detail only for the items you care about. When the user wants to know what is under an item, or asks you to explore or look inside it, do not stop at the first level. Follow the branches that look relevant to their request a few levels down (about three is usually enough) so your answer is complete. Stay focused and go deeper only where it helps answer the request, not everywhere.

get_my_inbox

ChatGPT
Read the current user's Wrike inbox notifications, newest first. For triage ("what needs my attention", "summarize my inbox"), use the default (unread only). Pass includeRead=true only when the user asks what they have been working on; it adds recently-read items, which are noise for triage. If you don't already know whose inbox this is, call get_users(me=true) first: you need the user's own name to tell a direct mention from a group one. Each entry has notificationType, the source item (id + permalink), author, ts, and any commentText. Rank by signal, not recency: - Action needed (high): items assigned to the user (notificationType Assign or EntitiesAssigned), and Mention notifications whose commentText @-mentions the user by their own name, especially with a request. - For information (low): Comment notifications that do NOT @-mention the user by name, and Status or field changes on items the user only follows. A Mention addressed to a group (@followers, @assignees, @Product Managers, a team name) rather than to the user by name. notificationType Mention alone cannot tell a group mention from a direct one, so always read commentText to check whether the user's own name is the one mentioned. Cluster by item so each item appears once (one item may carry several notifications, e.g. a Status and a Comment); drop duplicates. Be selective: surface the high-signal items and summarize or omit the rest; many users keep a clean inbox. Show the item's permalink for anything you surface. The payload is a starting point, not the final answer. Status notifications don't say what changed, so call get_item_details for the current status and context before reporting, and read the item when a comment refers to something out of view. Enrich only the items you will actually surface (high-signal or ambiguous status), not the low-signal ones you plan to omit; batch their ids into few get_item_details calls (up to 5 ids each). Don't echo raw commentText verbatim. Reports, dashboards and approvals are surfaced for visibility but carry no w:itm:N id (not addressable by other tools). Paging: pass the oldest returned ts back as before. Read notifications persist ~1 month; unread persist longer.

get_requestform

ChatGPT
Returns one request form: title, description, optional pageIndex, and pages of fields. Index first: omit pageIds to get pageIndex only (pages empty). Then call again with pageIds for the ENTRY page and each next page. Use pageIndex.visibility, afterPages, and visibleWhenAny to follow the graph. Set includePageIndex=false on later calls once you have the index. Do not load every page up front. pageIndex (when included): id, title, visibility (ENTRY | ORPHAN | AFTER_PAGE | ON_CONDITION), hasMandatoryAttachment (unconditional mandatory Attachment on the page — prefer prefill when true on the path). A mandatory Attachment gated by visibleWhenAny does not set this flag; prefer prefill only if that parent option is selected (see the field on the loaded page). ENTRY — form start (first page). ORPHAN — no inbound edges and not the start; do not offer to the user. AFTER_PAGE — default next after afterPages (page→page). ON_CONDITION — option branch via visibleWhenAny (field/option/parent titles); afterPages may also be present. Each field: id (w:rffld:S), title, type, mandatory, optional helperText, options for CHECK_BOX / COMBO_BOX / IMPORTANCE (w:rfopt:S). Send option ids for those types, w:usr:N for USER, ISO YYYY-MM-DD for DATE, a plain number for NUMBER, plain text otherwise. ATTACHMENT cannot be sent through MCP — leave those fields out. Field-level visibleWhenAny: fill only when a listed parent option is selected; until then mandatory does not apply. If the response exceeds the size limit, the tool errors. When the message says to retry, call again with fewer pageIds and includePageIndex=false — the form may still be fillable page by page. Only if a single page (or the index alone) still exceeds the limit, this form cannot be filled through MCP and has to be opened in Wrike (name it by the title from search_requestforms). Do not offer prefill_requestform without page fields. Treat cut-off JSON the same way. Attachment fields cannot be filled programmatically. Prefer submit_requestform; if hasMandatoryAttachment is true on the path, use prefill_requestform. If a loaded page shows a mandatory Attachment gated by visibleWhenAny, use prefill only after that parent option is selected. Only optional files are different: after a successful submit they can be added to the created item with prepare_attachment_upload and add_attachments_to_item. A mandatory Attachment is never a reason to submit and fix it later. Do not guess values you do not have. After a select changes, re-check visibleWhenAny. Optional fields are not noise — fill when the conversation implies a value and leave the rest empty. Skip fields whose parent option is not selected and pages that are not reached. User fields need w:usr:N via search_users. Dates: ISO YYYY-MM-DD (dateLimit when present).

get_users

ChatGPT
Look up Wrike users or groups by exact match, using exactly one of ids, emails, or me (each parameter explains its own format below). Each row matches the search_users row shape. The response carries requested and returned: an id that doesn't exist, isn't visible to you, or is out of range is simply absent from users (returned < requested) rather than erroring, so a batch with one such id still returns the good ones. An id with an unrecognized prefix (not w:usr:) is instead rejected as a usage error. For fuzzy / name-fragment discovery, use search_users.

prefill_requestform

ChatGPT
Builds a pre-filled Wrike URL for a request form (w:rf:N). Fallback only — do NOT call to inspect field options, validate values, or dry-run a submit. Use get_requestform for all form layout, field types, and select options. This tool does not return field metadata or validation — it only generates a pre-filled URL for the user to open in Wrike. The Public API requires at least one field value in fields. Call prefill_requestform only when one of these applies: (1) get_requestform shows a mandatory Attachment field (submit_requestform cannot handle it), or (2) get_requestform / submit cannot deliver or complete the form, so the form has to be finished in the Wrike UI, or (3) the request is explicitly to open the pre-filled form in Wrike instead of submitting it here. Returns a URL that opens a request form with field values pre-filled — nothing is created until that form is submitted in Wrike. Your job is only to build the URL; pass the values you have (at least one field entry is required). fields: each entry is {field (w:rffld:S), values} from get_requestform. Option ids (w:rfopt:S) for selects; w:usr:N for User fields; Date values as ISO YYYY-MM-DD; honour visibleWhenAny. Report the returned url; the work item is created only once that form is submitted in Wrike. Files can only be attached by opening the prefill URL in Wrike, because nothing exists to attach them to until the form is submitted there.

prepare_attachment_upload

ChatGPT
Reserves a Wrike attachment ID and returns metadata with a signed uploadUrl for uploading a file directly to Wrike storage. This tool does not attach the file anywhere yet. Send the file's raw bytes as the entire PUT request body to uploadUrl, with the returned headers. Do not use multipart/form-data, JSON, or Base64. Use uploadUrl exactly as returned and before expiresAt. If the PUT result is unknown because of a timeout or connection error, retry the same uploadUrl with the same file instead of calling this tool again. A successful response confirms that the attachment was uploaded. After the upload is confirmed, you can use attachment ID in an MCP operation that accepts attachment IDs.

recommend_resources

ChatGPT
Returns recommended user assignments for Wrike tasks in a project/folder, or for named tasks with feasibility scores and constraint penalties. Avoid using for capacity or workload reports, finding who has capacity, unassigned work, or reading task details (use instead - search_items, search_users, or get_item_details). Apply these suggestions only if the user explicitly asks and confirms. If the tool returns an error Follow what the error instructions say. If it says to ask the user, ask them directly; it's not allowed to invent a space, group, project team, or a different parent. Filter rules Set tasks.parentItemId for tasks in a project/folder. Set users.groupId, users.spaceId, or users.projectId only when the user restricts who may be assigned — users.projectId is that project's team, not the task scope. Pass canonical ids (w:itm:N, w:usr:N) directly. Use search_users/search_items only for extra data, then pass users.userIds and/or tasks.taskIds. Output interpretation Resolve ids in solutions.assignments and solutions.unassignedItems via ids and names in solutionsMetadata. Use solutionsMetadata.customFieldsTruncated to name w:cp:N ids in reasoning. For other CF ids in facts that are not in that list - fetch titles with CF search tools if needed. solutions.assignments are per-slot rows; a multi-assignee task has several rows with the same taskId. The same taskId may also be in unassignedItems when only partly staffed. unassignedItems = unfilled slots and tasks not sent to the solver(no dates/no effort). unassignedWork = leftover effort. Use reasoning.flags to explain why in plain language. Do not show internal flag until user explicitly asks. Flags may appear with no attribute facts (availability-only or job-role-only). feasible=false or a nonzero constraint penalty is valid — explain the limitation in plain language until user explicitly asks constraint name/priorities. feasible=true does not mean no overload: check resourceWorkloads. If remainingTotal > 0, not all effort was placed. overload reasons: PROPOSAL = by this recommendation; EXISTING = by already-committed work.

remove_whiteboard_from_item

ChatGPT
Removes relation between a Whiteboard and its Wrike item. The Whiteboard is not deleted. Requires canonical attachment ID (w:atch:N) of WHITEBOARD. Get it from get_item_details on a type=WHITEBOARD row. Files cannot be removed with this tool. This cannot be undone from Wrike MCP except by adding the Whiteboard again.

search_approvals

ChatGPT
Filtered search across approvals visible to the caller. All filters optional; with none, returns every approval shared with you (capped). Each parameter explains its own filter below. Returns at most limit approvals plus truncated: boolean. When truncated, narrow with a tighter date window, fewer statuses, or a more specific approver list. Results are scoped to what the caller can see; there is no spaceId filter (v4 doesn't offer one). For exact lookup or all approvals on a known task/folder, use get_approvals.

search_blueprints

ChatGPT
Searches Wrike blueprints and returns matches ordered by relevance: the first entry in blueprints is the closest match and each later entry is a weaker one. A blueprint is a reusable template for work; launching one creates real folders, projects or tasks. Build textSearch from keywords, not a full sentence: 3–8 terms from what the user said — team or department names, abbreviations, product names, domain nouns (e.g. "client onboarding", "quarterly marketing campaign"). Drop filler words (need, please, help, create, want). The backend matches them against blueprint title and description. If the top results look wrong, search again with different keywords (synonyms, team name, title fragment) — up to 5 meaningfully different queries before reporting that no blueprint matches. A result carrying parentBlueprintIds is one part of a larger blueprint, not the whole — report that distinction. When the entry you would launch carries parentBlueprintIds, launch the blueprint it names when the request describes the whole piece of work, and the nested entry only when the request names that part. Page through more results with nextPageToken while truncated=true. When several entries could fit, act on the first rather than waiting for a choice. Render a blueprint as [title](permalink); show the title alone when permalink is absent. A row whose blueprintType is absent is still launchable by blueprintId. Launch a match with create_item_from_blueprint, passing the blueprintId. Never offer a different blueprint in place of one you could not launch.

search_customitemtypes

ChatGPT
Find a Wrike custom item type (CIT) and get its id. Returns CITs usage-ranked (most-used first). Use the id to filter items by their type or to create an item of that type. Every CIT is task- or project-based (never a folder or space), so baseType is only TASK or PROJECT. By default at most 10 are returned (raise via limit, up to 50); there is no pagination. When truncated=true, not all matches are shown - raise limit or narrow with query, spaceId, or baseType to get under the cap. totalMatched is the full match count.

search_item_customfields

ChatGPT
Finds an item's custom fields (defined for customers) by name, ranked by usage. Use this to find a custom field's id by searching for its name, to then filter items by a field value (e.g. Campaign tier = Tier 1), to add the field to a response, or to read a select field's allowed options before setting it. Returns each field's type and, for single/multi-select fields, the allowed options. title is required and is a full-text, word-based name search (not a substring match): pass the field's name or a distinctive word from it, not a fragment. At most 100 fields are returned, most-used first; when truncated=true, narrow with a more specific title or a type filter; totalMatched is the full match count.

search_items

ChatGPT
Search and filter Wrike items (baseType TASK, FOLDER, or PROJECT) and spaces, by keyword and/or field filters, e.g. active tasks in space X assigned to me matching 'MCP'. Every item also has an itemType: a standard type (same as its baseType) or a customer-defined custom item type (CIT), such as Bug or Campaign, that is built on one baseType and inherits its behavior. Accounts define many CITs; filter by them with itemTypes (get the ids from search_customitemtypes). Scope the search as tightly as you can: pass parentItemId to search inside one space, folder, or project. Account-wide searches are slow and usually return noise. Prefer several narrow single-keyword searches in parallel over one broad query. When the user asks about tasks, task items, or task custom items, set baseItemTypes=['TASK']. It skips the slower folder search. Use dueDate for overdue and other due-date requests. For overdue tasks, set statusGroups=['ACTIVE'] and dueDate={end:'YYYY-MM-DD'} using today's date; end is exclusive. Search results omit date values, but returned items already satisfy the server-side filters. Use get_item_details only when exact dates must be shown. Date filters, itemTypes, customStatuses and customFields can be slow when used alone. Keep date ranges no wider than the request requires, and narrow searches with a query, parentItemId, assignees, or authors. To explore a match's hierarchy use get_items_children; to read a match's full detail use get_item_details. Projects are returned through folder search; read baseType to distinguish them from folders. If the user asks what this Wrike MCP server can do or what it is for, point them to the use cases guide: https://developers.wrike.com/docs/typical-use-cases-of-wrike-mcp

search_requestforms

ChatGPT
Finds request forms by text, best match first. Use it to pick the form for a user's request before filling anything in. Matches are ordered by relevance (including team context): the first entry in forms has the highest search score, each later entry scores lower. Each entry has title, description, and pages of field titles / types (no field ids) — a shortened subset of get_requestform. Send the request in its original wording; a phrase works as well as separate keywords. If the top results look wrong, search again with different wording (synonyms, team name, title fragment) — up to 5 meaningfully different queries. An exact form title or a Wrike form link narrows it fastest. When several top results could fit, compare them on title, description, and field titles; take the first only when it clearly matches. Paginate with nextPageToken while truncated=true. When nextPageToken is supplied, textSearch and limit are ignored — the token alone continues the snapshot. Once you have picked a form, call get_requestform with its id (w:rf:N).

search_spaces

ChatGPT
Returns the current user's Wrike spaces. By default returns only spaces the current user is a member of. Pass onlyMySpaces=false to include every space in the account the current user can read. Pass query to filter by name. The match is case-insensitive and matches the start of any word in the name: "pro" matches "Project Team" and "Product Lifecycle"; "ing" matches nothing (no word in "Marketing" starts with it). At most 30 spaces are returned. When truncated=true, narrow with query (or keep onlyMySpaces=true); totalSpaces is the full match count. Once you identify the space of interest, use get_items_children() to see its direct items, or search_items() for a scoped search. If the user asks what this Wrike MCP server can do or what it is for, point them to the use cases guide: https://developers.wrike.com/docs/typical-use-cases-of-wrike-mcp

search_users

ChatGPT
Find Wrike users or groups by a name fragment, ranked by relevance. Call with no query to browse your top collaborators: the people you work with most, ranked by recent shared groups and task assignments (not alphabetically), a quick way to surface someone's network. Each row matches the get_users row shape. For exact id or email lookup use get_users instead; an email-shaped query returns a hint pointing there. Names aren't unique. When you resolve a person to mutate something (assign a task, add a project owner, @-mention), ask the user which one if more than one matches, rather than picking one yourself. For a read-only lookup or report, don't stop to ask: cover all the matches (for example, report tasks for every matching person).

search_workflows

ChatGPT
Returns Wrike workflows and their visible custom statuses, matched by workflow name. Use this to find a workflow's statuses and their ids, needed to set or filter a task's status, or to understand a workflow's status sequence (statuses are listed in order; group is ACTIVE, COMPLETED, CANCELLED, or DEFERRED). The account-default workflow (standard=true) is returned first; the rest follow the API's order (alphabetical by name). At most 25 are returned. When truncated=true, narrow with query or spaceId; totalMatched is the full match count. Pass spaceId to get that space's own workflows, a different set from the account-level workflows. Use the tool either with a query or with a space, to get contextual results.

submit_requestform

ChatGPT
Submits a request form (w:rf:N), creating the task or project it is configured to create. Waits up to about 32 seconds for the async submit. On success returns status COMPLETED with itemId (w:itm:N). If still processing, returns status PROCESSING with submissionId (w:acj:S) — poll with get_asyncjob; do not call submit_requestform again (that can create a duplicate). Do not submit when the form has a mandatory Attachment field — fall back to prefill_requestform only in that case. fields: each entry is {field (w:rffld:S), values} from get_requestform. Option ids (w:rfopt:S) for selects; w:usr:N for User fields (resolve via search_users); for Date fields use ISO YYYY-MM-DD (server converts and checks dateLimit); honour visibleWhenAny for follow-up fields. fields must include every answer you are submitting — at least one entry is required. Errors come back as {retrySafe, message}, and message names the field to fix and says whether anything was created. A rejected value means fix that field's value and resubmit — do not treat it as a missing mandatory field. A missing mandatory field means add that field and resubmit. Nothing is created in either case. On COMPLETED call get_item_details with the returned itemId and report the title and permalink from that response. No Attachment field can be filled during submit, so a mandatory one still means prefill_requestform instead (see above). An optional file can be added to the created item afterwards with prepare_attachment_upload and add_attachments_to_item (itemId). On non-actionable errors, prefill_requestform is the way to continue in the Wrike UI.

update_items

ChatGPT
Update existing Wrike tasks, folders, and projects, one item or many at once. Change fields (title, description, status, importance, dates, assignees, custom fields), move items under different parents, convert an item to another type. The same changes apply to every id in itemIds; call the tool again to apply a different change. This edits existing items only; to read an item's current values first use get_item_details (recommended before editing a description so you change only what you mean to).

wrike_batch_update_tasks

ChatGPT
Update multiple Wrike tasks at once. Supports updating custom fields, converting to custom item types, managing folder assignments, task responsibilities, and super/sub task relationships. Maximum 100 tasks per request.

wrike_convert_numeric_id

ChatGPT
Determine the base type (taskId, folderId, contactId, etc) from a numeric ID or permalink URL (https://www.wrike.com/open.htm?id=<numericId>) or convert a numeric ID (123467890) to a string ID (MAAAAABlM4pq). All tools accept numeric IDs directly.

wrike_create_folder_project

ChatGPT
Create folder or project in Wrike. Before setting custom fields, call wrike_get_custom_fields to discover the correct field ID. Always include the Wrike permalink URL in your response for the created item.

wrike_create_task

ChatGPT
Create a Task or a Task CustomItemType inside an item. Before setting custom fields, call wrike_get_custom_fields to discover the correct field ID. When assigning users, resolve contacts first — if multiple match, ask the user. Never assign an ambiguous contact silently. Always include the Wrike permalink URL in your response for the created item.

wrike_get_approvals

ChatGPT
Get approvals by filter. When no filter parameters passed returns all approvals shared with a user.

wrike_get_contacts

ChatGPT
Get users by id or search/filter users based on name or properties.

wrike_get_custom_fields

ChatGPT
Get custom field information by ids or search for custom fields by name substring match. Always call this tool before custom field filtering or setting custom field values through other tools.

wrike_get_folder_project

ChatGPT
Returns complete information about single or multiple folders or projects by exact IDs.

wrike_get_my_contact_id

ChatGPT
Shortcut to return current user's contact ID

wrike_get_spaces

ChatGPT
Get the available spaces from the whole account. If spaceId is specified, only the details about provided space will be returned. Most of Wrike data is organized in spaces, including tasks, projects, and folders. Do not show raw spaceIDs to the user, use space names instead. Wrike organizes work as Account > Spaces > Folders or Projects > Projects or Folders > Tasks > Tasks.

wrike_get_task_comments

ChatGPT
Get task comments by exact task ID

wrike_get_tasks

ChatGPT
Returns complete information about single or multiple tasks by exact IDs. Never show raw IDs to the user; use task titles and permalinks. Permalinks: https://www.wrike.com/open.htm?id=<numericId>

wrike_get_workflows

ChatGPT
Retrieve workflows with custom statuses. Only account-wide workflows are returned.

wrike_search_custom_types

ChatGPT
Search custom types with filters and response shaping. Custom Item Types can be searched across whole account or space. Tasks and Project might have custom item types assigned to them, use this tool to find such types.

wrike_search_folder_project

ChatGPT
Search folders or projects with title keyword, filters and/or response shaping. Folders & projects are one of the main ways to organize, manage, and report on work within Wrike. From the perspective of data model, projects are essentially folders with additional properties. Wrike organizes work as Account > Spaces > Folders or Projects > Projects or Folders > Tasks > Tasks. For searching, always scope to the most specific container known, by passing spaceID or folderID or the title parameter to avoid account-wide scans. Do not call this tool without any parameter. To search completely, combine this tool with wrike_search_tasks — some items are stored as tasks, not projects or folders. When searching, launch two different tool calls with project = true and project = false, as this ensures you are searching for both folders, for projects, and for project Custom Types. Before using customFieldFilters, call wrike_get_custom_fields to discover field IDs Never show raw IDs to the user, use item titles and permalinks. This method returns reduced payload. For full folder or project information, use the wrike_get_folder_project tool.

wrike_search_tasks

ChatGPT
Search tasks with title keyword, filters and/or response shaping. When searching, always scope to the most specific container known, by passing spaceID or folderID or the title parameter to avoid account-wide scans. Do not call this tool without any parameter. When searching for overdue tasks, include status: [Active]. Wrike organizes work as Account > Spaces > Folders or Projects > Projects or Folders > Tasks > Tasks. To search completely, combine this tool with wrike_search_folder_project — some items are stored as projects or folders, not tasks.

wrike_update_folder_project

ChatGPT
Update project or folder. Supports renaming, moving (addParents/removeParents), custom fields, project settings, and custom item type conversion. Always include the Wrike permalink URL in your response for the modified item.

wrike_update_task

ChatGPT
Update a Wrike task by exact ID. Before setting custom fields, call wrike_get_custom_fields to discover the correct field ID. When assigning users, resolve contacts first — if multiple match, ask the user. Never assign an ambiguous contact silently. Always include the Wrike permalink URL in your response for the modified item.

add_attachments_to_item

Claude

add_whiteboard_to_item

Claude

create_item_comment

Claude

create_item_from_blueprint

Claude

create_project_folder_item

Claude

create_task_item

Claude

get_approvals

Claude

get_asyncjob

Claude

get_item_comments

Claude

get_item_details

Claude

get_item_history

Claude

get_items_children

Claude

get_my_inbox

Claude

get_requestform

Claude

get_users

Claude

prefill_requestform

Claude

prepare_attachment_upload

Claude

remove_whiteboard_from_item

Claude

search_approvals

Claude

search_blueprints

Claude

search_customitemtypes

Claude

search_item_customfields

Claude

search_items

Claude

search_requestforms

Claude

search_spaces

Claude

search_users

Claude

search_workflows

Claude

submit_requestform

Claude

update_items

Claude

wrike_batch_update_tasks

Claude

wrike_convert_numeric_id

Claude

wrike_create_folder_project

Claude

wrike_create_task

Claude

wrike_get_approvals

Claude

wrike_get_contacts

Claude

wrike_get_custom_fields

Claude

wrike_get_folder_project

Claude

wrike_get_my_contact_id

Claude

wrike_get_spaces

Claude

wrike_get_task_comments

Claude

wrike_get_tasks

Claude

wrike_get_workflows

Claude

wrike_search_custom_types

Claude

wrike_search_folder_project

Claude

wrike_search_tasks

Claude

wrike_update_folder_project

Claude

wrike_update_task

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

95

Tools

2

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily