Announcing CIMD support for MCP Client registration
Learn more

Wrike MCP vs Wrike API for AI Agents

Wrike now hosts an official MCP server, out of beta and on every plan, and the built-in Wrike connectors in Claude and ChatGPT already point at it. Wrike also has a mature REST API that has been on v4 for years. They overlap heavily on search and task creation and diverge on everything an unattended agent needs: time tracking, dependencies, events, and control over which data center you call. This guide compares what each path lets an agent do, the OAuth grant each one puts you on, and how to run either across many customer accounts in production.

TL;DR

  • Wrike ships an official, Wrike-hosted MCP server at https://mcp.wrike.com/v2, out of beta and available on every plan from Free to Pinnacle. It exposes 29 tools for search, task and project creation, bulk updates of up to 20 items, comments, approvals, request forms, blueprints, and attachments. It has no delete tools, no time tracking, no dependencies, and no webhooks.
  • The Wrike API v4 covers all of that and more: timelogs, task dependencies, space and workflow administration, deletes to the Recycle Bin, and webhooks at the account, space, or folder level with HMAC-signed payloads.
  • Both paths authenticate with Wrike OAuth 2.0 or a Permanent Access Token. The MCP server has no Dynamic Client Registration: an admin registers a Wrike OAuth app and every MCP client uses its client ID and secret. Access tokens last one hour, refresh tokens rotate on every use, and the token response tells you which data center (US or EU) to call.
  • MCP is the faster path for a project manager asking Claude, ChatGPT, or Cursor to summarize a project or turn meeting notes into tasks. The API is the right path for headless agents that log time, react to TaskStatusChanged events, or run deterministic intake pipelines under a rate limit of roughly 400 requests per minute.
  • Scalekit's wrike connector exposes 61 prebuilt tools over the Wrike API, with per-user Wrike OAuth stored in the token vault, so the MCP vs API decision doesn't change your auth infrastructure.

The decision your Wrike agent forces first

Your agent needs to work inside your customers' Wrike accounts: find every overdue task in a launch project, turn a meeting transcript into assigned tasks, log the hours an engineer spent on a ticket, or post a status update when a project slips. Wrike now hosts an official MCP server, and the built-in Wrike connectors in Claude and ChatGPT already point at it. Wrike also has a mature REST API that has been on v4 for years. They overlap heavily on search and task creation, and they diverge on everything an unattended agent needs: time tracking, dependencies, events, and control over which data center you call. Here's how to pick.

What Wrike MCP and Wrike API actually are

Wrike MCP

Wrike runs a remote Model Context Protocol (MCP) server at https://mcp.wrike.com/v2, served over Streamable HTTP only. Wrike launched its MCP server in 2025 and has since moved the v2 server out of beta and made it available to all users; the older v1 endpoints at /app/mcp/stream and /app/mcp/sse remain for existing clients. Wrike's MCP server overview recommends OAuth 2.0 for interactive use, with a Permanent Access Token as the option for testing and non-interactive environments. The server stores no data or cache of its own, and every call runs with the authenticated user's Wrike permissions.

The v2 tool list has 29 tools. Read tools include search_items, get_item_details, get_items_children, search_spaces, get_my_inbox, get_item_comments, search_users, search_workflows, search_item_customfields, search_approvals, search_requestforms, and search_blueprints. Write tools include create_task_item, create_project_folder_item, create_item_from_blueprint, submit_requestform, update_items, create_item_comment, and the attachment pair prepare_attachment_upload and add_attachments_to_item. A Wrike Labs tool, recommend_resources, proposes assignees based on skills and availability.

Wrike API

The Wrike API v4 is a REST API that returns JSON with a kind field and a data array. It covers tasks, folders, projects, spaces, comments, attachments, timelogs and timelog categories, dependencies, approvals, workflows and custom statuses, custom fields, contacts, blueprints, request forms, and webhooks. Every call goes to https://{host}/api/v4, where host comes from the OAuth token response.

Auth is OAuth 2.0 Authorization Code against https://login.wrike.com/oauth2/authorize/v4, with scopes Default, wsReadOnly, wsReadWrite, and a family of account-management scopes: amReadOnlyUser, amReadWriteUser, amReadOnlyGroup, amReadWriteGroup, amReadOnlyInvitation, amReadWriteInvitation, amReadOnlyWorkflow, and amReadWriteWorkflow. The alternative is a Permanent Access Token generated in the App Console, which never expires and grants access to everything its author can see.

What your agent can actually do

Capability
Wrike MCP (mcp.wrike.com/v2)
Wrike API v4
Search tasks, folders, and projects
Yes
Yes
Read full task details
Yes: Up to 5 items per call
Yes
Create tasks, folders, projects
Yes
Yes
Bulk edit status, assignees, dates
Yes: Up to 20 items per call
Limited: Edits one task per call
Comments and mentions
Yes
Yes
Approvals
Limited
Yes
Request forms and blueprints
Yes
Limited
Time tracking
No
Yes
Task dependencies
No
Yes
Create or reconfigure spaces
No
Yes
Delete tasks or folders
No: No delete tools
Yes: Moves to the Recycle Bin
Event notifications
No
Yes: Webhooks on account, space, or folder
Personal inbox and @mentions
Yes
No: No inbox endpoint

The MCP server is built for a person directing work in conversation: find it, summarize it, create it, update it. The API is built for systems: it records time, wires dependencies, and pushes events. Neither path is a superset, because get_my_inbox and submit_requestform have no equivalent in the public API surface an agent typically calls.

What the MCP path makes easier

Wrike's data model is a graph of opaque IDs. A task lives in one or more folders, belongs to a space, carries a custom status ID from a workflow, and has assignees identified by contact IDs like KUAFY3BJ. Asking "move every task assigned to Dana in the Q4 launch project to In Review" on the raw API is five or six calls: resolve Dana to a contact ID, find the project folder, find the workflow, map "In Review" to a customStatusId, list tasks, then update each one.

The MCP server collapses that. search_users and search_workflows resolve names to IDs, search_items finds the tasks, and update_items edits up to 20 of them in one call. Wrike also says v2 cut token use on navigation by about 25%. Writing the schema is the hard part. Not the API call.

The tradeoff is that the tool set is fixed by Wrike. Clients cache the tool list, so new tools may not appear until the connector is refreshed, and ChatGPT Business and Enterprise disable new tools by default until an admin enables them.

The auth path each one puts you on

Wrike MCP: an admin-registered OAuth app, shared by every client

Wrike's MCP server does not support Dynamic Client Registration. To connect a custom client, a Wrike user with API permissions (the Account Owner always has them) creates an app under Apps & Integrations > API, adds the client's callback URL to its Redirect URLs, and hands out the client ID and secret. Claude Code, for example, connects with claude mcp add --transport http --client-id ... --client-secret --callback-port 8080 wrike https://mcp.wrike.com/v2, and stores the secret in the system keychain. Each user then signs in through Wrike's own OAuth screen, which follows the account's SSO configuration, so SAML logins route through the customer's identity provider.

The token that comes back carries the user's own Wrike permissions. An agent cannot see a folder the user cannot see. What the user can't do, the agent can't do. The Permanent Access Token option on the MCP path, wired through the third-party mcp-remote package, discards that per-session consent and puts a non-expiring credential in a local config file.

Wrike API: scopes, regions, and rotating refresh tokens

The direct path gives you control the MCP path hides. You choose scopes: wsReadOnly lets an agent read tasks, folders, and comments without being able to change anything, and wsReadWrite is required for anything that creates or edits work. The am* scopes manage users, groups, invitations, and workflows, and a project-management agent should not request them. A token needs at least one scope each method requires, and Wrike recommends requesting only what the app needs.

Three details break naive implementations:

  • Access tokens last one hour (expires_in: 3600), and the authorization code expires after 10 minutes.
  • Refresh tokens rotate. Every refresh returns a new refresh token and invalidates the old one. Two agent workers refreshing the same user's token at once means one of them now holds a dead token.
  • The token response names the data center. Wrike stores customer data in the US and the EU, and the host field tells you which. Calling the wrong base URL returns a 401, which looks exactly like an expired token.

Permanent Access Tokens exist on this path too. Wrike's FAQ states they bypass OAuth, grant full access to the user's account, never expire, and are not intended for multi-user applications. They are invalidated by a password reset, user deactivation, or an admin logging in as the token's author, which means a scheduled agent can stop working because someone changed a password.

Both paths still need per-user isolation

In a multi-tenant B2B agent, MCP gives you a credential per user and the direct API gives you a credential per user. In neither case does the path itself solve storage, rotation, or revocation; those are infrastructure problems regardless of which path you choose.

Wrike adds one sharp edge. Webhooks belong to the user who created them, and if that user is removed from the Wrike account, all of their webhooks are permanently deleted. An agent that registered webhooks under one admin's token loses its event stream when that admin leaves the customer's company.

Recommended reading: OAuth vs API keys for AI agents

What you own in production

On the MCP path

Wrike hosts and patches the server, owns the tool schemas, and maintains the mapping from tool calls to API calls. You own the OAuth app registration, the client secret distributed to every MCP client, and the redirect URLs registered for each one. If your product is the MCP client, you also own every user's refresh token, and you inherit the rotation rule: each refresh invalidates the last one, so concurrent refreshes must be serialized.

You also own what the server doesn't do. An agent that must react when a task changes status has no subscription mechanism on MCP, so it polls search_items and spends the same rate budget as an API caller.

On the API path

You own schemas, pagination, retries, regional routing, and the token lifecycle. Wrike estimates its rate limit per second, which works out to roughly 400 requests per minute, and it can return 429 below that limit when internal overload protection trips. Retry with exponential backoff. GET /tasks returns 1,000 results per call by default, so an agent scanning a large account must paginate.

Webhooks replace polling, with rules. You create them with POST /webhooks (account), POST /spaces/{spaceId}/webhooks, or POST /folders/{folderId}/webhooks, optionally recursive. With a secret, Wrike sends a verification request carrying X-Hook-Secret, and your endpoint must return an HMAC-SHA256 of that value; every later event carries X-Hook-Signature. Payloads carry IDs and event metadata, not full tasks, unless you request extra fields through parameterisedEvents. Delivery is not exactly-once, so dedupe on the Idempotency-Key header. Any 4xx other than 408 or 429 suspends the webhook immediately, three failed retries suspend it too, and mass actions such as imports trigger no events at all.

Schema drift and versioning

The API has been on v4 for years, and changes ship through Wrike's changelog. The MCP server changes more often: v2 replaced SSE with Streamable HTTP, added unified search and bulk edits, and introduced Wrike Labs tools such as recommend_resources that only exist on the v2 URL. On the API path, a change is something you adopt when you choose. On the MCP path, the tool list your agent sees can change between runs.

When to use MCP, when to use the API

Use Wrike MCP when

  • A project manager uses Claude, ChatGPT, Copilot, or Cursor to ask "what's overdue in the Q4 launch project and who owns it," and the built-in Wrike connector covers the question with no code.
  • The workflow is turning a meeting transcript into tasks, where search_users, create_task_item, and create_item_comment chain naturally and a human reviews the result.
  • The agent needs to submit a Wrike request form or instantiate a blueprint as part of intake, which submit_requestform and create_item_from_blueprint do in one call.
  • You are prototyping a Wrike assistant for one team and want to learn which questions people ask before you write your own tools.

Use the Wrike API when

  • The agent runs headless: a TaskStatusChanged webhook on a delivery space triggers the agent to check dependencies with wrike_task_dependencies_list and comment on blocked successors.
  • The agent logs time, such as converting a developer's commits or calendar into wrike_timelog_create entries against the right tasks every evening.
  • The workflow is a deterministic pipeline: creating a standard set of tasks with fixed dates and custom field values in a new project for every signed customer.
  • You serve many customer accounts across US and EU data centers, need per-scope least privilege such as wsReadOnly, and must budget against roughly 400 requests per minute.

The credential problem that exists on both paths

Both paths hand you a Wrike OAuth grant per user. Neither hands you a vault. A multi-tenant agent with 80 customer accounts and 6 users each is 480 Wrike refresh tokens. Each is bound to one user, one scope set, and one data center host. Each rotates on every refresh, so a refresh that succeeds at Wrike but fails to persist on your side strands the user until they consent again. Each must be stored encrypted, kept out of logs and LLM context, and deleted when a user disconnects or a customer churns.

The token type is identical between paths, because the MCP server runs on the same Wrike OAuth grant you would use directly. The tempting shortcut is one Permanent Access Token per customer, generated by an admin. That collapses 480 grants into 80 secrets that never expire, see everything their author can see, and die without warning on that author's next password reset. Fewer secrets, larger blast radius per secret, and a hidden dependency on one person's account.

Scalekit's wrike connector handles the Wrike OAuth flow, stores each user's tokens in the token vault, and refreshes them, so the MCP vs API decision doesn't change your auth infrastructure. Your agent passes an identifier; the token never enters the agent runtime or the LLM context.

Recommended reading: how to handle token refresh for AI agents

How to connect a Wrike agent with Scalekit

Scalekit's wrike connector is an API-path connector with 61 tools: 44 read and 17 write, with no destructive tools. It covers tasks, folders, spaces, comments, approvals, attachments, dependencies, timelogs, workflows, custom fields, contacts, blueprints, and request forms. It authenticates with Wrike OAuth 2.0: each user signs in to Wrike once, and Scalekit stores and refreshes their tokens as that user's connected account.

Prerequisites and the connection name

The connector uses your own Wrike OAuth app. In the Scalekit dashboard, go to AgentKit > Connections, create a Wrike connection, and copy its redirect URI. In Wrike, open Apps & Integrations > API, create an app, add that redirect URI to its Redirect URLs, and copy the Client ID and Client Secret into the Scalekit connection. Creating the app requires Wrike API permissions, which the Account Owner always has.

The connection name you choose is the connection_name your code passes, and the string must match the dashboard exactly. This is the most common integration error. Copy SCALEKIT_ENVIRONMENT_URL, SCALEKIT_CLIENT_ID, and SCALEKIT_CLIENT_SECRET from Developers > API Credentials into .env.

pip install scalekit-sdk-python python-dotenv langchain-openai

Authorize each user once

get_or_create_connected_account returns the user's connected account. If it is not ACTIVE, get_authorization_link returns a Wrike OAuth consent link. The user approves once; Scalekit exchanges the code and stores the tokens.

import os from dotenv import load_dotenv from scalekit import ScalekitClient load_dotenv() scalekit_client = ScalekitClient( env_url=os.environ["SCALEKIT_ENVIRONMENT_URL"], client_id=os.environ["SCALEKIT_CLIENT_ID"], client_secret=os.environ["SCALEKIT_CLIENT_SECRET"], ) actions = scalekit_client.actions CONNECTION_NAME = "wrike" # must match the connection name in AgentKit > Connections identifier = "user_123" # your app's stable ID for this user account = actions.get_or_create_connected_account( connection_name=CONNECTION_NAME, identifier=identifier, ) if account.connected_account.status != "ACTIVE": link = actions.get_authorization_link( connection_name=CONNECTION_NAME, identifier=identifier, ) print("Authorize Wrike:", link.link) input("Press Enter after approving access in Wrike...") account = actions.get_or_create_connected_account( connection_name=CONNECTION_NAME, identifier=identifier, ) if account.connected_account.status != "ACTIVE": raise RuntimeError(f"Wrike is {account.connected_account.status}, not ACTIVE")

Retrieve the Wrike tools this user can call

This is not a catalog load. The agent asks for the tools this user's connected account is authorized to call, then narrows them to the five a project status agent needs. Loading all 61 Wrike tool definitions would put space administration, approvals, and timelog edits in front of a model whose job is to read a project and comment on it. wrike_task_update and wrike_space_update never reach the model, so it cannot reassign work or change a space's members while writing a status report.

tools = actions.langchain.get_tools( identifier=identifier, connection_names=[CONNECTION_NAME], tool_names=[ "wrike_contacts_list", "wrike_folders_list", "wrike_folder_tasks_list", "wrike_task_comments_list", "wrike_task_comment_create", ], page_size=100, ) tool_map = {t.name: t for t in tools} print(sorted(tool_map))

Run the agent loop

The loop runs until the model stops requesting tools. Every tool call executes with this user's Wrike credential, against this user's data center, and sees only the folders this user can see.

from langchain_core.messages import HumanMessage, SystemMessage, ToolMessage from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4o").bind_tools(tools) messages = [ SystemMessage( "You report on Wrike projects. Use wrike_folders_list to find the project by " "title, wrike_folder_tasks_list with descendants set to true to read its tasks, " "and wrike_contacts_list to turn assignee IDs into names. Only post a comment " "when the user asks you to." ), HumanMessage( "In the 'Q4 Product Launch' project, list every Active task due before " "2026-11-15, grouped by assignee. Then comment on the overdue ones asking " "the owner for an updated due date." ), ] while True: response = llm.invoke(messages) messages.append(response) if not response.tool_calls: print(response.content) break for tc in response.tool_calls: tool = tool_map.get(tc["name"]) if tool: result = tool.invoke(tc["args"]) else: result = f"Unknown tool: {tc['name']}" messages.append(ToolMessage(content=str(result), tool_call_id=tc["id"]))

Deterministic calls with execute_tool

For pipelines, skip the model. execute_tool runs one tool with a fixed input and returns data plus an execution_id you can log. This nightly job pulls every task completed in the last 24 hours across the account. Filters that take lists are passed as JSON strings.

import json from datetime import datetime, timedelta, timezone now = datetime.now(timezone.utc) since = (now - timedelta(days=1)).strftime("%Y-%m-%dT%H:%M:%SZ") until = now.strftime("%Y-%m-%dT%H:%M:%SZ") completed = actions.execute_tool( tool_name="wrike_tasks_list", tool_input={ "status": json.dumps(["Completed"]), "completed_date": {"start": since, "end": until}, "fields": json.dumps(["responsibleIds", "parentIds"]), "sort_field": "CompletedDate", "sort_order": "Desc", "page_size": 100, }, connection_name=CONNECTION_NAME, identifier=identifier, ) print(completed.execution_id, completed.data)

Intake is a write pipeline. This creates a planned task in a customer's onboarding project, assigns it, and then logs the first hour against it. The folder and assignee IDs come from your app's config for this customer, resolved once with wrike_folders_list and wrike_contacts_list.

folder_id = os.environ["WRIKE_ONBOARDING_FOLDER_ID"] assignee_id = os.environ["WRIKE_ONBOARDING_OWNER_ID"] created = actions.execute_tool( tool_name="wrike_task_create", tool_input={ "folder_id": folder_id, "title": "Kickoff call with Acme Corp", "description": "Agenda<br><b>Owner:</b> onboarding team", "importance": "High", "dates": {"type": "Planned", "start": "2026-11-02", "due": "2026-11-04"}, "responsibles": json.dumps([assignee_id]), }, connection_name=CONNECTION_NAME, identifier=identifier, ) print(created.execution_id, created.data) # Store the task id returned above in your config for this customer task_id = os.environ["WRIKE_KICKOFF_TASK_ID"] timelog = actions.execute_tool( tool_name="wrike_timelog_create", tool_input={ "task_id": task_id, "hours": 1, "tracked_date": "2026-11-02", "comment": "Prepared kickoff agenda", }, connection_name=CONNECTION_NAME, identifier=identifier, ) print(timelog.execution_id, timelog.data)

To make one task wait on another, wrike_dependency_create takes a task_id, a relation_type such as FinishToStart, and exactly one of predecessor_id or successor_id. The Wrike MCP server has no equivalent.

Multi-tool, multi-tenant Wrike agents on a virtual MCP server

The wrike connector has 61 tools. At roughly 200 tokens each, that is about 12,000 tokens of tool definitions before the agent does any work, and a model choosing among wrike_tasks_list, wrike_folder_tasks_list, wrike_space_tasks_list, and wrike_tasks_get picks wrong more often than one choosing among two. Overreach is the second risk: a status-report agent that also holds wrike_space_update can change who has access to a customer's space. A Scalekit virtual MCP server declares exactly which tools an agent role can see, and session tokens keep each run bound to one user's connected accounts. Docs: set up a virtual MCP server.

Create the server once per agent role

from scalekit.actions.models.mcp_config import McpConfigConnectionToolMapping vmcp = actions.mcp.create_config( name="wrike-weekly-status", description="Reads Wrike project tasks and posts a weekly status digest to Slack", connection_tool_mappings=[ McpConfigConnectionToolMapping( connection_name="wrike", tools=[ "wrike_folders_list", "wrike_folder_tasks_list", "wrike_contacts_list", ], ), McpConfigConnectionToolMapping( connection_name="slack", tools=["slack_send_message"], ), ], ) print(vmcp.config.id, vmcp.config.mcp_server_url)

Mint a session token per user, per run

One server definition serves every user. Before each run, check that the user's accounts are active and mint a short-lived session token scoped to them. Any MCP client that speaks Streamable HTTP can connect; this example uses langchain-mcp-adapters (pip install langchain-mcp-adapters) and passes the token as a Bearer header.

import asyncio from datetime import timedelta from langchain_mcp_adapters.client import MultiServerMCPClient config_id = vmcp.config.id mcp_server_url = vmcp.config.mcp_server_url user_id = "user_123" accounts = actions.mcp.list_mcp_connected_accounts( config_id=config_id, identifier=user_id, include_auth_link=True, ) not_ready = [ a for a in accounts.connected_accounts if str(a.connected_account_status).upper() != "ACTIVE" ] for a in not_ready: print(f"{a.connection_name} is {a.connected_account_status}: {a.authentication_link}") if not_ready: raise RuntimeError("Connect the accounts above before starting this run") session_token = actions.mcp.create_session_token( mcp_config_id=config_id, identifier=user_id, expiry=timedelta(minutes=30), ).token async def load_tools(): client = MultiServerMCPClient( { "scalekit": { "transport": "streamable_http", "url": mcp_server_url, "headers": {"Authorization": f"Bearer {session_token}"}, } } ) return await client.get_tools() mcp_tools = asyncio.run(load_tools()) print([t.name for t in mcp_tools])

The agent sees four tools instead of 61. The endpoint is static; the identity is per-user. Unlike Wrike's own MCP server, this endpoint needs no OAuth app shared with every client, and it can include tools Wrike MCP doesn't have, such as wrike_timelog_create, for the agent roles that need them.

Observability: every Wrike action tied to a user

Every execute_tool call returns an execution_id, and every execution is attributed to a connected account, which maps to one of your users and one customer. When a customer asks which agent run moved 14 tasks to Completed or logged 6 hours to the wrong project, the answer is a lookup, not an investigation. Wrike's own activity stream shows the change under the user whose token made it, and your execution log shows which agent run and which prompt led there.

A shared credential breaks that. If every user's agent runs on one admin's Permanent Access Token, Wrike attributes every change to that admin, every agent sees every folder the admin can see, and your side can only prove that the shared token did it. Shared credentials are a single-user solution. They do not survive a second user.

Recommended reading: audit trails for agent auth

Which one to build against

If your agent is a project manager's assistant inside Claude, ChatGPT, or Cursor, summarizing projects, creating tasks from notes, and bulk-updating status with a human watching, Wrike's official MCP server is a good fit: it is hosted, generally available, and its search and bulk-edit tools do real work. If your agent runs unattended, tracks time, manages dependencies, reacts to webhooks, or serves many customer accounts across US and EU data centers, build against the Wrike API, where you control scopes, regions, and rate budgets. Either way, you hold one rotating Wrike refresh token per user, per customer, and that's what needs production-grade infrastructure.

FAQs

Does Wrike have an official MCP server?

Yes. Wrike hosts it at https://mcp.wrike.com/v2 over Streamable HTTP, out of beta and available on every plan from Free to Pinnacle. The v2 tool list has 29 tools for search, task and project creation, bulk updates of up to 20 items, comments, approvals, request forms, blueprints, and attachments, plus a Wrike Labs tool that recommends assignees. It stores no data of its own and runs with the authenticated user's permissions.

What can the Wrike MCP server not do?

It has no delete tools, no time tracking, no task dependencies, no space creation or reconfiguration, and no webhooks. An agent that must react when a task changes status has no subscription on MCP, so it polls search and spends the same rate budget as an API caller. All of those capabilities exist on the API v4.

How does Wrike OAuth work for an MCP client?

Wrike's MCP server does not support Dynamic Client Registration. A Wrike user with API permissions creates an app under Apps & Integrations > API, adds the client's callback URL, and hands out the client ID and secret that every MCP client then uses. Each user signs in through Wrike's own OAuth screen, which follows the account's SSO configuration. Access tokens last one hour, refresh tokens rotate on every use, and the token response names the US or EU data center to call.

What is a Wrike Permanent Access Token and should an agent use one?

A token generated in the App Console that bypasses OAuth, never expires, and grants access to everything its author can see. Wrike says it is not intended for multi-user applications. It is invalidated by a password reset, user deactivation, or an admin logging in as its author, so a scheduled agent built on one can stop working because someone changed a password.

When should an agent use the Wrike API instead of MCP?

When it runs headless from a TaskStatusChanged webhook, logs time against tasks every evening, creates standard task sets with fixed dates and custom fields for every new customer, or serves many accounts across US and EU data centers with per-scope least privilege such as wsReadOnly and a budget of roughly 400 requests per minute.

How does Scalekit connect an AI agent to Wrike?

The wrike connector exposes 61 tools over the Wrike API and authenticates with your own Wrike OAuth app. Each user signs in once, Scalekit stores and refreshes the rotating tokens in the token vault, a virtual MCP server narrows the tools per agent role and can include timelog and dependency tools Wrike's MCP server lacks, and every execution returns an execution_id attributed to that user.

Build your Wrike agent with Scalekit

Browse the Scalekit Wrike connector and the Wrike connector docs with the full tool list. See Scalekit pricing, or talk to us.

No items found.
On this page
Share this article
Scalekit
Rotating refresh

Acquire enterprise customers with
‍zero upfront cost.

Every feature unlocked. No hidden fees.