MCP App Store
by KeenEthics
Business & Operations
Adobe Workfront icon

Adobe Workfront

by Adobe Inc.

Overview

Search, summarize, create, and update projects, tasks, workspaces, planning records and approvals directly from Claude. Make Adobe Workfront a native part of your AI workflow — an AI-powered work management agent that helps you stay on top of deadlines, surface risks, and move work forward faster.

Tools

approvals_add_path_to_approval

ChatGPT
Add a new parallel path to an existing in-progress approval on a document. This is an additive create operation: it creates the new path without updating or removing the existing paths. Requires confirmation before executing. The new path will run in parallel with existing paths. Use when the user wants to add another concurrent review track to an approval that already exists.

approvals_add_stage_to_path

ChatGPT
Add a new sequential stage to a specific path within a parallel approval. This is an additive create operation: it creates the new stage without updating or removing the path's existing stages. The stage is appended to the end of the path. Auto-executes without confirmation. After adding, always show the user the full resulting stage order and ask if it looks correct. If not, use reorder_stages_in_path to adjust. Moving a stage between paths is not supported — if the user requests it, explain the constraint and offer the two-step workaround: remove the stage from the source path with remove_stage_from_path, then add it to the target path with this tool.

approvals_check_brand_review_result

ChatGPT
Check the result of an existing brand compliance review without triggering a new one. Returns the formatted result for COMPLETE reviews, a status message for in-progress or failed reviews, or a prompt to add an AI Collaborator reviewer (via insights_search_users to find the bot, then create_or_update_approval_workflow to add it) if no review is found. Use this when the user asks to check, view, or retrieve an existing brand compliance result.

approvals_create_approval_from_template

ChatGPT
Creates a new approval workflow for one document version using an existing template. This is create-only: it does not update an existing approval workflow and returns without changes when one already exists. template_id must be the template GUID. Accepts one document version per call.

approvals_create_or_update_approval_workflow

ChatGPT
Use this for any request to set up, add, or change approvers or reviewers on a document — e.g. 'create an approval with X as approver', 'add a review stage'. This is the dedicated tool for document approval workflows. Creates a new approval workflow or updates an existing workflow's stages for a document version; it is not create-only. Every stage must declare its prerequisites via dependsOn (use [] for the first stage / parallel roots). Most workflows are LINEAR: stages[0].dependsOn=[], stages[1].dependsOn=[0], stages[2].dependsOn=[1], and so on. Use a graph (parallel branches, fan-in) only when the workflow genuinely requires it. Provide all desired stages — this replaces or extends the existing workflow. WARNING: for a stage matched to an existing one (by stageId or name), the participants array you provide REPLACES that stage's entire participant list — anyone you omit is removed, including their recorded decision. Before updating an existing stage (e.g. to add an AI Collaborator bot), call get_approval_info first and include every participant you want to keep, unchanged, alongside any new addition. Add a new participant (human or bot) onto an EXISTING stage — ask which stage if unclear. Only create a new stage if the user explicitly asks for a separate review stage. On clients that support MCP Apps, a visual preview is shown for confirmation. On clients that support elicitation but not apps, the user is asked to confirm inline. Otherwise the change is applied directly. CUSTOM MESSAGES: each stage may carry a per-stage plain-text customMessage shown to that stage's approvers/reviewers in the FIRST-activation notification email (never in reminders). When creating a brand-new approval (no existing stages on this document), ask the user before creating it whether they'd like to add a custom message to any stage — e.g. "Want to add a custom message to any stage, or should I go ahead and create the approval as is?" — do not create it without asking first. Set or replace it by passing the text; remove it by passing null (empty string is rejected); OMIT the field to keep an existing message when you change other fields. Before replacing an existing message, read the current one with get_approval_info and confirm the replacement with the user — the response, and any preview/confirmation shown to the user, includes a before/after diff of the message change, but that is not a substitute for confirming first. If the approval is closed (approved/rejected/withdrawn), tell the user it is no longer active and confirm before proceeding — do not silently block. If no stage is named, default to the currently active stage; if none is active and none is named, ask which stage. If the target stage was already activated, warn that its notification already went out and the message will not be re-sent.

approvals_create_template

ChatGPT
Create a new reusable approval workflow template. This is create-only and does not update an existing template. This is the dedicated tool for creating approval templates. Use it only when the user explicitly asks to create a reusable template; to set up an approval on a specific document, use create_or_update_approval_workflow. Every stage must declare its prerequisites via dependsOn (use [] for the first stage / parallel roots). Most templates are LINEAR: stages[0].dependsOn=[], stages[1].dependsOn=[0], stages[2].dependsOn=[1], and so on. Use a graph only when the workflow genuinely requires parallel branches or fan-in. Resolve every participant to its ID before calling this: use Insights search_users for people when available, otherwise use find_user_by_name; use find_team_by_name for teams (set the participant's participantType to USER or TEAMOB accordingly). Never pass a participant name.

approvals_delete_approval_stage

ChatGPT
Delete a single stage from an approval workflow by name or position (e.g. 'Legal Review', 'stage 2', 'last stage'). Only not-started stages can be deleted. For approvals with parallel paths, use remove_stage_from_path instead — this tool only works on single-path approvals.

approvals_find_document

ChatGPT
[DEPRECATED] Do not use. This tool will be removed on 2026-09-30. Use the Insights find_workfront_data tool instead to look up documents (call read_docs("mcp-usage") first to get its playbook). Look up a document by filename OR by document version ID (DOCV) — provide exactly one. Use document_name when the user names a file ("winter-campaign.pdf"); use document_version_id when you have a DOCV from a Workfront URL or another tool. Returns document name, current version ID, and a Workfront document link per match (for name search) or full metadata (for version ID lookup). Matching by name is word-order-tolerant: 'pink whale' matches 'Whale-pink'. Behavior: single match → use it; multiple matches → return all and ask the user to pick; zero matches → tell the user the file was not found. For a document the user just uploaded this session, prefer the document_version_id delivered by the upload (workfront_document_upload_batch model context) rather than searching here; only fall back to this name lookup if that document_version_id isn't available.

approvals_find_projects

ChatGPT
[DEPRECATED] Do not use. This tool will be removed on 2026-09-30. Use the Insights find_workfront_data tool instead to look up projects (call read_docs("mcp-usage") first to get its playbook). Look up Workfront projects, optionally filtered by name and/or restricted to projects the calling user owns. Use a name fragment when the user names a project ("Winter Campaign", "Q4 Launch"); set owned_by_me when the user says "my projects", "projects I own", or "what am I working on". Behavior: owned_by_me alone → projects the user owns; name alone → matching projects across the system; both → owned projects whose name matches. Returns project name, ID, and status for each match — feed a project ID to get_documents_by_scope, then approval tools on the documents. Multiple matches → return a numbered list and ask the user to disambiguate; zero matches → tell the user.

approvals_find_team_by_name

ChatGPT
[DEPRECATED] Do not use. This tool will be removed on 2026-09-30. Use the Insights find_id_by_name tool with entity "team" instead to look up teams. Look up a Workfront team's ID by name (fuzzy/partial match). Call this whenever the user wants a whole team — not a single person — as an approver or reviewer ("send to the Design team", "Legal team should approve"). Approval and template tools accept teams as participants with participantType: "TEAMOB" and the ID this tool returns. Behavior: single match → use it; multiple matches → return a numbered list and ask the user to pick; zero matches → tell the user no team was found. The word "team" is stripped from the query automatically.

approvals_find_user_by_name

ChatGPT
[DEPRECATED] Do not use. This tool will be removed on 2026-09-30. Use the Insights search_users tool instead to search for users. Call it with query (required user name), bot_filter: "exclude" (the default for human-only results), and limit (defaults to 25; maximum 25). Results expose identity fields at the top level: wf_id, name, email, is_active, and is_bot. Use wf_id as participantId with participantType: "USER" when calling create_or_update_approval_workflow. To find AI Collaborator bots instead, call search_users with bot_filter: "only".

approvals_get_approval_info

ChatGPT
Get the current approval workflow (stages, participants, status, stage IDs) for a document version. Each participant is listed with its participantId and, for AI Collaborator bots, its participantMetadata — carry both forward unchanged when re-submitting a participant via create_or_update_approval_workflow. To add an AI Collaborator (bot) as a brand-compliance reviewer: use insights_search_users (filtered to bots) to pick one, call this tool to read the target stage's CURRENT participants, then create_or_update_approval_workflow to add the bot alongside every existing participant on that stage unchanged, then check_brand_review_result to check the outcome. REQUIRED before sending reminders or modifying an existing approval — returns the stage IDs that send_approval_reminder and delete_approval_stage need. This is the canonical way to read approval state for a document. When the custom-message feature is enabled for the caller, each stage's customMessage is shown on a Message line when set. If no Message line appears, EITHER no message is set on that stage OR the feature is not enabled for you here — do not assert that none is set.

approvals_get_documents_by_scope

ChatGPT
[DEPRECATED] Do not use. This tool will be removed on 2026-09-30. Use the Insights find_workfront_data tool instead to list documents in a project or folder (call read_docs("mcp-usage") first to get its playbook). List documents (with name and current version ID) inside a project or folder. Call this when the user wants to act on documents in a project or folder ("start approval on every file in the Winter Campaign project", "what's in the Final folder"). Pick the scope_type that matches the user's intent: - "project" → scope_id = project ID. Returns all documents in that project. - "folder" → scope_id = folder ID directly. Returns documents in that specific folder. - "folder_name" → scope_id = project ID, plus folder_name. Resolves the named folder within the project, then returns its documents. Returns a numbered list of documents with name and document version ID (DOCV). Feed the version IDs to approval / AEM / reminder tools. When scope_type=folder_name resolves to a single folder, the resolved folder ID is included in the response — pass it as folder_id to upload tools to target that folder. If folder_name matches multiple folders, the tool returns the folder options instead — re-call with scope_type=folder and the specific folder ID.

approvals_list_aem_linked_folders

ChatGPT
List Workfront document folders that are linked to AEM (Adobe Experience Manager), scoped to a specific project. Always call this before send_documents_to_aem_linked_folder — that tool needs a folder ID, and only AEM-linked folders within the same project as the document are valid destinations. If the user says "send to AEM" without naming a folder, call this first and present the options to choose from. Returns folder name and ID per linked folder. Zero results means no AEM-linked folders exist in that project yet — tell the user they need to link a folder in Workfront first.

approvals_list_aem_providers

ChatGPT
List the AEM provider configurations (DOCCFG) available to the customer. Call this before search_aem_folders and send_documents_to_aem to get the doccfg_id and aemRepoId before working with AEM native folders. If exactly one provider is returned, use it without asking. If more than one, present the names and ask the user which to use. Zero results means no AEM provider is configured for this customer.

approvals_list_templates

ChatGPT
List approval templates available in this Workfront instance. Use when the user wants to browse what's available ("show me our approval templates", "what templates do we have for legal review") or when picking one to instantiate with create_approval_from_template. Filters compose with AND: - name: restrict to templates whose name partially matches (case-insensitive). - creator_name: restrict to templates made by a specific person (partial match on creator's name/ID). - participant_name: restrict to templates that include this person/team as a participant. - sort_by_usage: when true, ranks most-used templates first — useful for "what do people actually use".

approvals_remove_path_from_approval

ChatGPT
Remove a parallel path from an existing in-progress approval. The first path cannot be removed. Paths with completed or locked stages cannot be removed. Requires confirmation before executing. This action cannot be undone.

approvals_remove_stage_from_path

ChatGPT
Remove a stage from a specific path within a parallel approval. Only not-started stages can be removed. The last stage in a path cannot be removed. Auto-executes without confirmation. Moving a stage between paths is not supported — if the user requests it, explain the constraint and offer the two-step workaround: remove the stage from the source path with this tool, then add it to the target path with add_stage_to_path.

approvals_reorder_stages_in_path

ChatGPT
Change the sequence order of stages within a single path of a parallel approval. Provide the complete ordered list of stage names — every existing stage must appear exactly once. Auto-executes without confirmation. Generically-named stages (e.g. 'Stage 1', 'Stage 2') are automatically renumbered to match the new order so their labels stay sequential; stages with custom names are left unchanged. This tool reorders stages within a path only — reordering the paths themselves is not supported. If the user asks to reorder paths, explain the constraint and offer the workaround: recreate the approval with paths in the desired order.

approvals_search_aem_folders

ChatGPT
Search for native AEM folders by name within a provider. Get aem_repo_id from list_aem_providers first. Returns matching folders with their external_storage_id (needed by send_documents_to_aem) and an AEM link. If multiple folders match, present them and ask the user which to use. Zero results means no folder matched — ask the user to refine the name.

approvals_send_approval_reminder

ChatGPT
Create and send reminder email(s) to participants in approval stage(s). This does not update or delete approval workflow data. Works for a single approval or in bulk. SINGLE MODE: Call get_approval_info first to obtain the document_version_id and stage_id — both are required. If participant_ids is provided, reminders are sent only to those specific participants. If participant_ids is omitted, reminders are sent to all undecided participants (those with status notified, opened, or commented). Only works for started, not-completed, not-locked stages. BULK MODE: Provide the 'approvals' array instead of document_version_id/stage_id to send reminders across multiple approvals in one call. All approvals must come from ONE project/folder/program/campaign. Do NOT loop this tool over multiple projects — ask the user to specify one scope at a time. In bulk mode, the tool re-checks participant status before sending and only reminds undecided participants. Max 100 approvals per request. Bulk mode is available for tenants where the feature is enabled; disabled tenants receive an explanatory error and should fall back to single mode.

approvals_send_documents_to_aem

ChatGPT
Send one or more Workfront documents to a native AEM folder (not a linked folder). Works for ESM and non-ESM projects. First resolve the assets to document version IDs (the Insights find_workfront_data tool or a version ID the user gave), choose a provider with list_aem_providers, and a folder with search_aem_folders (which gives external_storage_id). Then call this tool. It previews the destination and asks the user to confirm before sending when the client supports it.

approvals_send_documents_to_aem_linked_folder

ChatGPT
Move one or more Workfront documents into an AEM-linked Workfront folder. This uses a Workfront folder that is already linked to AEM — use list_aem_linked_folders first to get the folder_id. Idempotent: documents already in the target folder are skipped and reported, so repeating the call is a safe no-op. Does not support ESM documents — for ESM documents or to send to a native AEM folder path, use send_documents_to_aem instead.

approvals_update_approval_participants

ChatGPT
SINGLE-PROJECT ONLY. This tool changes participants for the documents of ONE project per request. It is NOT a multi-project tool: do NOT use it to apply a change 'across all projects', a portfolio, a program, or a user's entire project list. Those broader scopes are NOT supported yet. If the user asks to add/remove/replace a participant across multiple projects, all projects, or any scope broader than one project, you MUST STOP and ask them to name the ONE specific project to act on — do NOT enumerate their projects and loop this tool over each one, and do NOT call it more than once to cover several projects. STEP 1 of 2 (preview only — makes NO changes). Validates an add/remove/replace of a participant on the active stage of up to 100 document approval workflows within that single project and returns { requestId, preview }. Workflow: (1) confirm the ONE target project with the user, (2) resolve it with find_projects, (3) list its documents with get_documents_by_scope, (4) pass only those document_version_ids. All document_version_ids must belong to that single project. Use find_user_by_name to resolve participant names to IDs. After presenting the preview to the user and obtaining explicit confirmation, call _submit_update_approval_participants with the returned requestId to actually apply the changes.

approvals_update_template

ChatGPT
Update an existing template with structured modifications (add/remove participants, rename stages, set deadlines, etc.). Batch all changes in a single call — pass multiple modification objects rather than calling this tool once per change. To apply a modification to every stage at once, set stage_names: ["all"] on the modification object. Obtain the template_id with list_templates using the name filter.

comment-stream_add_reaction

ChatGPT
Add a reaction (like) to a comment. Currently only "LIKE" reactions are supported. Returns the reaction details including commentID, userID, and type. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_create_comment

ChatGPT
Create a new comment on an object. Supports rich text, HTML content, tags, and attachments. IMPORTANT: 1) When tagging users or teams, you MUST use the "tags" array with objects shaped as: { id: string, objCode: "USER" | "TEAMOB" }. For users, ALWAYS use the Workfront wfId (32-character hex string). 2) Use dry_run: true first to preview the comment and confirm it is correct before posting. A dry run returns the validated payload and NEVER sends any notifications. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_create_reply

ChatGPT
Create a reply to an existing comment. Supports rich text, HTML content, tags, and attachments. IMPORTANT: 1) When tagging users or teams, you MUST use the "tags" array with objects shaped as: { id: string, objCode: "USER" | "TEAMOB" }. For users, ALWAYS use the Workfront wfId (32-character hex string). 2) Use dry_run: true first to preview the reply and confirm it is correct before posting. A dry run returns the validated payload and NEVER sends any notifications. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_delete_comment

ChatGPT
Delete a comment by its ID. Marks the comment as deleted and updates the deleted metadata. Users can only delete their own comments or must have admin privileges. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_get_comment

ChatGPT
Get a single comment by its ID. Returns detailed information about a specific comment. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_get_comments_count

ChatGPT
Get the total count of top-level comments for a specific object, matching what query_comments would return across all pages. For container objects (e.g. PROJECT), the count includes comments on child objects (e.g. tasks, issues) the same way the listing tool does. Replies are not included in the count; they are nested under their parent comment in query_comments. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_query_comments

ChatGPT
Query comments by object ID with pagination support. Returns a list of comments for a specific object (e.g., BOARD, TASK, etc.) with cursor-based pagination. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_remove_reaction

ChatGPT
Remove a reaction (like) from a comment. Currently only "LIKE" reactions are supported. Returns acknowledgment of the removal. RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

comment-stream_update_comment

ChatGPT
Update an existing comment or reply. Can update content, tags, attachments, and metadata. Note: Comments can only be edited within 15 minutes of creation. IMPORTANT: 1) When tagging users or teams, you MUST use the "tags" array with objects shaped as: { id: string, objCode: "USER" | "TEAMOB" }. For users, ALWAYS use the Workfront wfId (32-character hex string). RECORD objects (objectCode: "RECORD"): the response will NOT include a links field for RECORD objects. Construct the URL client-side using this format: - Updates/details page: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record/details - Specific comment: {host}/maestro/{workspaceID}/{recordTypeID}/{recordID}/record?commentID={commentID} Use the comment's _id for {commentID}. Resolve {workspaceID} and {recordTypeID} by calling the maestro lookup tools available in your session (look up by recordID = the comment's objectID). {host} matches the host used to invoke this MCP server.

insights_find_id_by_name

ChatGPT
Find and resolve a named Workfront object — project, task, issue, user, portfolio, program, team, document — to its GUID for use in a filter condition.

insights_find_workfront_data

ChatGPT
Use this to answer questions like "show me my tasks", "what's due this week", "list open projects", "find tasks assigned to me", "how many issues are overdue", "which projects are behind schedule", "count tasks by status", "show unassigned tasks", "get planned hours for a project", "find issues submitted this month", "what project templates are available". This is the primary read/query tool for all Workfront data retrieval. REQUIRED: call read_docs("mcp-usage") first if you have not already done so this session. Search, list, filter, count, sort, or retrieve Workfront data — projects, tasks, issues, users, portfolios, programs, teams, documents, milestones; returns rows, columns, totalCount.

insights_get_current_user

ChatGPT
Find and retrieve the current user's Workfront identity (name, ID, URL) for personalizing a response. When to call: when the response should address the user by name or include a direct link to a Workfront object that needs the user's workfront URL as a base. Do NOT call this just because the question mentions "me" / "my" / "mine" — use the $$USER.ID sentinel directly inside conditions instead. This tool is for rendering a response, not for filtering. Returns: ok with {user_id, user_name, wf_url}.

insights_get_field_paths

ChatGPT
Resolve and retrieve dot-notation field paths for Workfront entities — projects, tasks, issues, users, portfolios, programs, teams — required by find_workfront_data(). Returns the single best root entity and, per field, all candidate paths.

insights_list_entities

ChatGPT
List all Workfront object types available to query — projects, tasks, issues, portfolios, programs, users, teams, documents, templates, milestones, and more. Needs: - read_docs("mcp-usage") — if not called this session. When to call: at the start of any data query to identify entity IDs for use in search_fields(). Always include "user" when the question involves ownership, assignment, "my", "I", "me", a person's name, or team membership. Do NOT call: more than once per session — the entity catalog is stable for the lifetime of the conversation; reuse the prior result. This does NOT mean you can skip it on the first query: always call it at least once before search_fields(). Returns: list of entities, each with id, label, description, synonyms, and contextualHelpLabel. Use the id values as input to search_fields().

insights_read_docs

ChatGPT
Load the Workfront insights playbook or domain documentation — the required first step before querying, searching, listing, filtering, or counting any Workfront data. Call read_docs("mcp-usage") FIRST in any session before using any other insights tool. This loads the master tool-sequencing playbook. Trigger keywords: find, search, list, show, get, retrieve, display, fetch, filter, query, count, how many, which, what, who, report, lookup, aggregate, sort, group, breakdown, summarize, due, assigned, overdue, upcoming, open, closed, completed, active, late, behind schedule, unassigned, in progress, not started, planned hours, actual hours, percent complete, status, condition, approval, approve, sign off, reviewer, decision user, approval stage. Object types: project, task, issue, user, portfolio, program, team, document, milestone, hour, assignment, category, queueDef, queueTopic, role, group, company, timesheet, timesheetProfile, expense, dashboard, board, iteration, risk, billingRecord, documentVersion, predecessor, rsrcPool, staffingPlan, staffingPlanResource, nonLaborResource, rateAttribute, exchangeRate, booking, customEnum, parameterValue, uiTemplate, accessLevel, workspace, record_type, record_field, nlbrCategory, milestonePath, project_health, board_column, board_card, board_tag, dashboard_widget, userDelegation, time_phased_duration, time_phased_currency, template, templateTask, teamMember, schedule, expenseType, objectCategory, hourType, rateCard, approval, approval_stage, approval_stage_participant, documentApproval.

insights_search_fields

ChatGPT
Search and find Workfront fields (columns) for projects, tasks, issues, users, portfolios, programs, teams — to filter on, sort by, or display in find_workfront_data(), ranked by relevance to the question.

insights_search_users

ChatGPT
Find a Workfront user — or, unless bot_filter is set to exclude, an AI-collaborator bot too — by name. Replaces looking up approval participants by name. Returns users ranked by name match, each with wf_id (the GUID to use as an approval participant), email, title, avatar_url, is_active, is_bot. Bot rows (is_bot=true) also carry bot_type and asset_types (e.g. supports copy/image). Inactive users are always excluded. The underlying search caps ranked candidates at 25 regardless of limit.

insights_summarize_object

ChatGPT
Fetch and summarize a single Workfront object — project, task, issue, user, portfolio, program, document — as a markdown narrative.

list_resources

ChatGPT
List all MCP resources and resource templates available on this lane. Returns prefixed URIs that can be passed to read_resource. Use this when your MCP client does not expose resources/list to the model.

planning_add_global_record_type_to_workspace

ChatGPT
Add a global record type to a workspace. WARNING: The workspace MUST have a section first—call update_workspace to add one if needed.

planning_bulk_record_actions

ChatGPT
Create, update, delete, or restore records in a single request. Use for all record mutations. Before writing, read schema://record-type/{recordTypeId} to learn field IDs, value formats, and writable fields. See docs://field-formats for format rules. To LINK an existing external object (e.g. an existing Workfront project) to a record, do it here as an update: set the record's connection/reference field value to the external object's raw Workfront ID (not the internal Planning "Rc..." record ID) — Planning resolves it to the linked record automatically. To create a brand-new external object instead, use create_connection_record. When the user does not provide a record ID for an update or delete, call search_records first. If exactly one match is found, proceed. If multiple, show distinguishing fields and ask the user to choose. Never assume "most recent" unless explicitly requested. At least one operation list must be non-empty. Not atomic — check the hasErrors flag in the response. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record.

planning_convert_workspace_to_template

ChatGPT
Convert an existing workspace into a reusable template. Requires admin privileges.

planning_create_business_rule

ChatGPT
Create a Planning business rule (formula-based validation) on a record type. The rule's expression is evaluated by the Calculation Engine when the chosen operation fires. A non-blank result is treated as a VIOLATION and blocks the write, surfacing messageKey to the user. CONSTRAINTS (enforced server-side): - operation: only "UPDATE" or "DELETE". - objectType: only "RECORD". - recordTypeId must be a non-global record type in the workspace. - expression is validated by the Calculation Engine; bare $$BEFORE_STATE / $$AFTER_STATE are rejected — use $$BEFORE_STATE.{fieldName}. PREREQUISITE: read docs://formula-syntax — especially its "Business Rule Expressions" section for the violation-return pattern (return a message to block, "" to pass) and the $$BEFORE_STATE/$$AFTER_STATE.{fieldName} syntax — then call get_record_type to confirm the record type and field ids.

planning_create_connection_record

ChatGPT
Create a brand-new record/object in an external connected system (e.g. create a new Workfront project, portfolio, or program). The record type must be an external record type linked to a supported connection object. Supported Workfront object types: PROJECT, PORTFOLIO, PROGRAM. Optional metadata key/value pairs are spread into the external record payload at creation time. IMPORTANT: Use this ONLY to create a brand-new external object. To LINK or ASSOCIATE an EXISTING Workfront project (or portfolio/program) to a Planning record, do NOT use this tool — instead use bulk_record_actions to set the record's connection/reference field value to the existing object's raw Workfront external ID.

planning_create_fields

ChatGPT
Create one or more fields (columns) on a record type. PREREQUISITE: Call get_record_type first to check existing field names (displayName must be unique). Read docs://field-types for available types and options. For formula fields, also read docs://formula-syntax for syntax and available functions. LOOKUP / ROLLUP FIELDS: Use type "lookup" with lookupOptions containing: referenceFieldId (the existing reference field connecting the two record types), sourceFieldId (the field on the linked record type to pull values from), and optionally rollup ("sum", "avg", "min", "max", or "dist"). The displayName for lookup fields is auto-generated. NOTE: The primary (Name) field of the linked record type cannot be used as sourceFieldId. Not atomic — check the hasErrors flag in the response. Per-item results show success/failure with error details. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record. For reference fields: referenceOptions.recordTypeId MUST differ from the source recordTypeId (the record type you are adding the field to) — self-reference is not supported.

planning_create_record_types

ChatGPT
Create one or more record types. A default table view is created automatically for each; do not create another unless the user explicitly wants multiple table views. PREREQUISITE: The workspace must have a section — call update_workspace to add one if needed. Read docs://workspace-setup-guide for best practices on record type design, field configuration, and connection patterns. isGlobal=true requires admin privileges (check is_admin in user_info); default to local record types. Not atomic — check the hasErrors flag in the response. Per-item results show success/failure with error details. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record.

planning_create_view

ChatGPT
Create a new view for a record type. Views define how records are displayed: table (spreadsheet), timeline (Gantt chart), or calendar. Can configure filters, sorting, grouping, coloring, table columns and column totals, timeline zoom and layout, and (timeline only) a connected record breakdown during creation. Read docs://view-types for the settings each view type uses. For filter configuration, read docs://filter-operators for supported operators by field type. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record.

planning_create_workspace

ChatGPT
Create a new empty workspace. A workspace is a container for organizing related record types, fields, and data. Read docs://workspace-setup-guide for best practices on workspace structure, naming conventions, and section organization. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record.

planning_create_workspace_from_template

ChatGPT
Create a new workspace from a template. The template provides pre-configured record types, fields, views, and sample data. Use get_template_list to find available templates and get_template for full template details. Optionally override the workspace name, description, icon, and alias after creation from the template.

planning_delete_business_rule

ChatGPT
Delete a user business rule by id. Permanent, cannot be undone. System rules are not visible to this API.

planning_delete_field

ChatGPT
Delete a Field by ID. This permanently removes the field from its record type, including all data stored in this field across all records. This action cannot be undone. The field must exist and the user must have EDIT permission on the record type.

planning_delete_record_type

ChatGPT
Delete a Record Type by ID. This will permanently remove the record type and ALL its data including all records, fields, and views. Requires MANAGE permission. WARNING: This action cannot be undone. All records of this type will be permanently deleted.

planning_delete_view

ChatGPT
Delete a view by ID. This permanently removes the view configuration but does NOT delete records. Requires MANAGE permission. Cannot be undone. The last table view in a record type cannot be deleted.

planning_delete_workspace

ChatGPT
Delete a workspace by ID. Permanently removes the workspace and all its data. Requires MANAGE permission. Use workspace ID only (not name/alias); use get_workspace_list to find the ID if needed.

planning_get_business_rule

ChatGPT
Get a single user business rule by id. System rules are not returned. Before diagnosing or editing the returned expression, read docs://formula-syntax. The two silent-failure traps: comparing a single-select/status field to its UI display name instead of the stored internal name (usually lowercase), and using ISBLANK, LEN, or COUNT on a reference/user/multi-select field (those are arrays — use ARRAYLENGTH({Field}) = 0; LEN counts characters and COUNT does not exist). Operators are && || ! and = / !=, not AND/OR/NOT.

planning_get_external_record_workspaces

ChatGPT
Find which Maestro workspaces and record types are connected to a specific external object. Use this to check whether an external record (e.g. a Workfront project) is already linked to a Maestro record, or to discover which workspaces/record types can accept a connection for that object type. Returns a list of entries, each containing the Maestro record linked to the external object and the workspace it lives in. See docs://connections for available connections and their supported object types.

planning_get_field

ChatGPT
Get Field details by ID. Returns field configuration and a fieldValueSchema describing how to format values for this field when creating or updating records. TIP: To see all fields on a record type at once, prefer get_record_type with attributes=['id','displayName','fields'].

planning_get_field_inherited_sharing

ChatGPT
Get the sharing a field inherits from its record type (and, transitively, the workspace) — the grantees who can already see the field without an explicit field-level grant. Useful for showing inherited access alongside direct field grants in a sharing dialog. Requires MANAGE permission on the record type. Only available when field-level permissions are enabled. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_get_field_sharing

ChatGPT
Get field-level sharing: who may View or Edit a specific field's values. Returns a wildcard access level (EVERYONE_IN_WORKSPACE or SELECTED_USERS_ONLY) and the list of explicit grantees (users/groups/teams) with their field relation (viewer = View values, editor = Edit values). Requires MANAGE permission on the record type that owns the field. Only available when field-level permissions are enabled. For dynamic (global) record types, use scopeWorkspaceId. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_get_record

ChatGPT
Get Record details by ID. Returns all attributes.

planning_get_record_change_log

ChatGPT
Get field change history for a record. Returns chronological list of field value changes (most recent first) showing what changed, when, and by whom. Includes both before/after values for each change. Useful for audit trails and tracking record modifications. Excludes system field changes. Supports pagination via offset/limit.

planning_get_record_sharing

ChatGPT
Get record sharing. Retrieves sharing/permissions information for a specific record, including who has access and their permission levels. Returns a wildcard access level (EVERYONE_IN_WORKSPACE or SELECTED_USERS_ONLY) and a list of sharing entries. Requires MANAGE permission on the record type containing the record. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_get_record_type

ChatGPT
Get Record Type details by ID. Retrieves complete information about a specific record type including its configuration, fields, permissions, metadata, and a summary of all views (table/timeline/calendar). For global record types (isGlobal=true), also includes global settings such as which workspaces use it and authorization config (requires MANAGE permission). Unlike workspaces (which have a distinct ownerId), record types have no separate ownership field — createdBy (who originally created the record type) is the closest available owner signal. For per-field value schemas (field IDs, types, formats), read the schema://record-type/{recordTypeId} resource.

planning_get_record_type_sharing

ChatGPT
Get record type sharing. Retrieves sharing/permissions information for a record type, including who has access and their permission levels. Returns list of objects containing users, groups, teams, roles, and companies with their assigned permissions. Requires MANAGE permission on the workspace containing the record type. For dynamic (global) record types, use scopeWorkspaceId to get workspace-specific sharing. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_get_template

ChatGPT
Get template details by template ID, projected at the requested detail level. Use 'minimal' for just identity and counts, 'metadata' (default) for the embedded workspace with record-type metadata but no fields, or 'full' for the complete legacy payload (workspace + all fields + views + default records + layouts + pages + business rules + hierarchies).

planning_get_template_list

ChatGPT
List all available templates with lightweight summary info (ID, name, description, type, icon). Use get_template with the template ID to retrieve full details.

planning_get_view

ChatGPT
Get complete view details by ID. Returns view configuration including name, type (table/timeline/calendar), metadata (date fields, column settings), filters, sorting, grouping, permission level, sharing status, and audit fields. Use this to inspect view settings or retrieve date field IDs.

planning_get_view_sharing

ChatGPT
Get view sharing. Retrieves sharing/permissions information for a view, including who has access and the view's public sharing status. Returns object with view ID, token info (public sharing details), and sharing list (users, groups, teams with their permission levels). Requires MANAGE permission on the view. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_get_workspace

ChatGPT
Get workspace details by ID or alias. Returns workspace metadata, sections, and a list of record types projected at the requested detail level (defaults to 'metadata' — every record type's attributes EXCEPT its full field definitions, with a fieldCount instead). Use 'minimal' for the smallest payload (id/alias/displayName/permission/flags only) or 'full' to inline every field — note 'full' can produce multi-MB responses for schema-heavy workspaces and should be used sparingly. For full field definitions of a specific record type, call get_record_type.

planning_get_workspace_list

ChatGPT
Get workspaces with cursor-based pagination. Returns a lightweight summary for each workspace (id, name, description, permission, ownerId, createdBy/At, updatedBy/At). To find 'workspaces I own', compare ownerId (the current owner) against your subject/user ID — createdBy reflects who originally created the workspace and is NOT necessarily the current owner, since ownership can be reassigned independently of creation. Use get_workspace with a specific workspace ID to retrieve workspace metadata, sections, and record-type summaries; call get_record_type to drill into a record type's fields.

planning_get_workspace_sharing

ChatGPT
Get workspace sharing. Retrieves sharing/permissions information for a workspace, including who has access and their permission levels. Returns list of objects containing users, groups, teams, roles, and companies with their assigned permissions. Requires MANAGE permission on the workspace. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_list_addable_global_record_types

ChatGPT
List global record types available to add to a specific workspace. Returns centrally-defined record types that the current user is authorized to add to the specified workspace, excluding those already linked. Use list_global_record_types to see the full catalog regardless of workspace.

planning_list_business_rules

ChatGPT
List user business rules for a record type. Returns only non-system, RECORD-scoped rules. Does not paginate. Before editing any rule's expression, read docs://formula-syntax: single-select/status comparisons use the internal option name (not the display name), reference/user/multi-select fields are arrays checked with ARRAYLENGTH (not ISBLANK, LEN, or COUNT), and operators are && || ! and = / !=.

planning_list_global_record_types

ChatGPT
List all global record types in the organization. Returns the full catalog of centrally-defined record types visible to the current user, regardless of workspace. Use this to see what exists. Use list_addable_global_record_types to see what can be added to a specific workspace.

planning_modify_field_sharing

ChatGPT
Modify field-level sharing. Requires MANAGE permission on the record type that owns the field (a field's MANAGE is inherited from its record type). Only available when field-level permissions are enabled. To GRANT: add relationsToCreate with relation viewer (View values) or editor (Edit values). To REVOKE a user/group: add them to relationsToRemove. Set wildcard to SELECTED_USERS_ONLY to restrict the field to only its explicit grantees, or EVERYONE_IN_WORKSPACE to restore inheritance from the record type. System fields cannot be shared. Verify user existence with search_users before calling this tool. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_modify_record_type_sharing

ChatGPT
Modify record type sharing. Add or remove user/group/team/role/company permissions. Permission levels: administrator, member, viewer, inherit_view_only. License type may restrict levels. Auto-adds workspace viewer access for new users. Cannot remove owner. Non-existent IDs are silently ignored. Verify user existence with search_users before calling this tool. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_modify_records_sharing

ChatGPT
Modify record-level sharing. Requires MANAGE permission on the record type. Auto-adds workspace viewer for new users. To GRANT access: use relationsToCreate with relation viewer or member. To REVOKE access: use relationsToCreate with relation no_access. Set wildcard to EVERYONE_IN_WORKSPACE to control default access, or to SELECTED_USERS_ONLY to restrict the record to only the users/groups granted access (only when the tenant has the record-level "no access" feature enabled). Use the same subjectType (ims/user vs redrock/user) that was used when granting. Verify user existence with search_users before calling this tool. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_modify_view_sharing

ChatGPT
Modify view sharing. Views support only 2 levels: administrator (manage) and viewer (view). Can enable/disable public sharing via isPublicShared (requires workspace MANAGE). Cannot remove owner. Non-existent IDs are silently ignored. Verify user existence with search_users before calling this tool.

planning_modify_workspace_sharing

ChatGPT
Modify workspace sharing. Add or remove user/group/team/role/company permissions. Permission levels: administrator, member, viewer. License type may restrict available levels. Cannot remove owner or downgrade system admins. Non-existent IDs are silently ignored. Verify user existence with search_users before calling this tool. Operates on Planning/Maestro objects (workspace, view, record type, record) via the ReBAC AuthZ model. For classic Workfront objects (PROJ, TASK, OPTASK, DOCU, PORT), use the access-control_* tools instead.

planning_remove_global_record_type_from_ws

ChatGPT
Remove a global record type from a workspace. This removes only the instance from the specified workspace, not the source global record type. WARNING: All records of this type in the workspace will be permanently deleted.

planning_search_records

ChatGPT
Search and filter records. IMPORTANT: text equality uses $is (not $eq). Read docs://filter-operators for all operators and filter syntax by field type.

planning_search_resources

ChatGPT
Search across all resource types (workspaces, record types, views) by name. Returns results ranked by relevance. Each result includes the resource type and contextual details (e.g., workspace name for record types, view type for views). Use this tool to quickly find any object by name when you don't know its type or location.

planning_search_sharing_data

ChatGPT
Search for users, groups, teams, job roles, and companies for sharing and permissions. IMPORTANT: This tool searches ONLY by name. Pass only the name of the user, group, team, role, or company. Do NOT pass IDs, emails, or any other field values — only names are supported. General-purpose API for finding entities to share workspaces, record types, records, or views with. Also used for authorization like setting who can add global record types to workspaces. Performs case-insensitive name search across all entity types and returns matching results from the connected system.

planning_search_users

ChatGPT
Search for users with pagination. Supports two modes (use exactly one): (1) By IDs — provide 'ids' to look up specific users by their IDs. (2) By search term — provide 'searchTerm' to match against name (case-insensitive substring), email (case-insensitive substring), user ID (exact), or IMS user ID (exact). Pass empty string to retrieve all users. NOTE: The user 'id' field in results is the IMS user ID, not the Workfront User ID. The Workfront User ID is available in the 'wfId' field. Returns an empty list when no users match — inform the user that no matching person was found and suggest checking the input. Planning-specific user search for sharing/authorization workflows. For redrock/user grants, use the returned 'wfId'; for ims/user grants, use the returned 'id' (IMS user ID) instead — match the subjectType used when granting.

planning_update_business_rule

ChatGPT
Update an existing user business rule by id. workspaceId and recordTypeId are immutable — the server preserves the stored values and ignores any change to them. Same operation/objectType/expression constraints as create apply; read docs://formula-syntax ("Business Rule Expressions" section) before changing the expression. System rules (isSystemRule=true) are not visible to this API.

planning_update_field

ChatGPT
Partially update a field by ID. Only provided fields change; others are preserved. A field's type cannot be changed after creation. For lookup fields: rollup can be changed via lookupOptions.rollup (the MCP layer routes the change through the parent reference field). Read docs://field-types for type-specific options that can be updated (e.g., select options, number precision, date format).

planning_update_record_type

ChatGPT
Partially update a record type. Only provided fields change; omitted fields retain their current values.

planning_update_records_order

ChatGPT
Update records order within a record type. Moves specified records to a new position relative to another record. You must provide either putUnderRecordId (place after) or putBeforeRecordId (place before), and at least one record ID to move.

planning_update_view

ChatGPT
Partially update an existing view. Only the fields you provide will change; omitted fields remain untouched. Read docs://view-types for the settings each view type uses. For filter updates, read docs://filter-operators for supported operators.

planning_update_workspace

ChatGPT
Update an existing workspace. Partial update: only provided fields change, null fields are ignored. When tool B needs an ID returned by tool A, call them in SEPARATE turns. Wait for A's response, then use the actual returned ID in B. Hierarchy: Workspace → Section → RecordType → Field/View/Record.

read_resource

ChatGPT
Read an MCP resource from any backend on this lane by its prefixed URI (the <backend>+<scheme>://<rest> form returned by list_resources). Use this when server init instructions tell you to load a resource but your MCP client does not expose resources/read to the model. Works for every URI scheme any configured backend publishes.

share_feedback

ChatGPT
Records the user's sentiment about how this MCP server just performed, so its tools can be improved. Call it ONLY when the user explicitly asks to — e.g. "share feedback", "submit feedback", "leave feedback", "report a bug", "give feedback", or similar. Do NOT call it based on your own inference of the user's sentiment or reaction to a tool result — wait for the user to ask. One call per explicit ask, not one per turn. When this tool is used and the feedback is successfully shared, tell the user their feedback was shared with Workfront — a brief one-line confirmation (e.g. "Feedback shared with Workfront."), then continue the conversation normally. On failure, do not claim it was shared. Only "sentiment" and "what_happened" are required. Length limits are enforced server-side and oversized input is REJECTED (not truncated): "what_happened" <= 2000 chars, "comment" <= 1000 chars, "intent" <= 500 chars, "tool_sequence" <= 20 items of <= 100 chars each.

workflow_create_any_object

ChatGPT
Create a new Workfront object of the given objectType. Supported types: projects, tasks, issues/requests, project templates and template tasks, portfolios, programs, hour entries, assignments, plus users, teams, roles, and groups (admin only). - The 'data' parameter is REQUIRED on every call and must include the object's 'name' plus any required parent IDs — never invoke this tool with an empty or partial payload. - To attach MULTIPLE custom forms at creation time, use the top-level 'objectCategories' parameter (a sibling of 'data', not nested inside it) — see its own description for the required shape. 'categoryID' inside 'data' remains the single-form shortcut. Never set both. - When the user references a parent or related object by name (project, portfolio, owner, assignee), FIRST call insights_find_id_by_name (entity = the objectType) to obtain its ID, THEN call create_any_object in the same turn — do not stop after the lookup. If the result is ambiguous, ask the user to choose from the returned options instead of guessing. - Use a field's name from insights_search_fields as the data key; if name is not set, fall back to its label. Discover unknown fields with insights_search_fields before adding them. If more than one field matches the label the user used (e.g. a standard and a custom field both labeled "Description"), use the exact key of the one the request points to. If the request doesn't say which, ask the user when you can; otherwise use the standard field and say in your reply which field you used. A bare label that matches more than one field is rejected with each candidate's exact key — retry with one of them. - To submit an issue/request to a request queue, set 'projectID' to the target project — its own default routing, approval process, and category already apply automatically on any create, whether or not the project's queue is published as a public request queue. Only resolve and set 'queueTopicID' (objectType 'queueTopic') when the user names or clearly implies a specific topic — that layers topic-level routing, approval, and category on top, and can even reassign 'projectID' via the topic's routing rule. Do not search for a topic speculatively when none was named. The server does not verify a 'queueTopicID' belongs to the target project's queue, so only resolve one from a topic the user actually named. Do not send entryPoint or isHelpRequest — the server derives those. - A queue submission must file a COMPLETE ("ready") request, not a bare issue: before submitting, gather the fields the queue's request form expects and ASK THE USER for their values — never invent, default, or guess field values (not the Subject, description, priority, dates, or any custom field). Read the queue's standard fields from 'queueDef:visibleOpTaskFields' on the project; always ask for 'name' (request forms label it "Subject") plus the other visible fields (e.g. description, priority, planned dates) and any required custom-form 'DE:<label>' fields — the queue's (or chosen topic's) default form applies automatically. If the user has not supplied a value for a field, ask for it before submitting rather than filling it in yourself; if a required field is rejected on submit, ask and retry. Only call this tool once you have the user's own values. - You MUST call read_workflow_docs with workfront://tools/create-any-object BEFORE this tool whenever the request involves a status/enum value, a filter modifier other than plain equality (_Mod/_Range), a date comparison, a scheduling or date field on a project or task (scheduleMode, taskConstraint, plannedStartDate, plannedCompletionDate, constraintDate), a task dependency field (predecessorExpression), a task duration field (durationExpression), a relation path (a field containing ":"), result ordering (orderBy), a custom form attachment (objectCategories), or a force delete. Skip it only for a pure required-field create with no status/enum, custom field, or related-object ambiguity. - For some accounts, a slow create returns { status: "pending", jobId, message } instead of the c…

workflow_delete_any_object

ChatGPT
Delete a Workfront object by ID. Supported types: projects, tasks, issues/requests, project templates and template tasks, portfolios, programs, hour entries, assignments, plus users, teams, roles, and groups (admin only). - MUST obtain explicit user confirmation (object type, ID, and name) before invoking. If the user's CURRENT message already contains explicit confirmation language ("yes, delete it", "I'm sure, delete X", "confirm delete"), proceed without re-prompting — do NOT ask again. Only ask if the message merely describes the deletion without confirmation. - When the user identifies the target by name, FIRST call insights_find_id_by_name (entity = the objectType) to obtain its ID, THEN call delete_any_object in the same turn — do not stop after the lookup. If the result is ambiguous, ask the user to choose from the returned options instead of guessing. - 'force: true' bypasses the Recycle Bin and is permanent; warn the user and require a second confirmation before passing it. - You MUST call read_workflow_docs with workfront://tools/delete-any-object BEFORE this tool whenever the request involves a status/enum value, a filter modifier other than plain equality (_Mod/_Range), a date comparison, a scheduling or date field on a project or task (scheduleMode, taskConstraint, plannedStartDate, plannedCompletionDate, constraintDate), a task dependency field (predecessorExpression), a task duration field (durationExpression), a relation path (a field containing ":"), result ordering (orderBy), a custom form attachment (objectCategories), or a force delete. Skip it only for a confirmed, non-force delete after a pure identity equality lookup. OUT OF SCOPE for these any-object tools — do not attempt, do not imply success: - Uploading or attaching a document - Posting a comment or replying to a comment thread - Creating or advancing an approval/review step - Setting or comparing a project baseline - Logging or approving an expense - Creating a milestone (or milestone path) - Adding a note - Restoring an object from the Recycle Bin For any of these, check whether a dedicated tool for that action is available before falling back to the object's Workfront UI page (the url field on a returned object, or https://<host>/<urlSegment>/<objectID>).

workflow_read_workflow_docs

ChatGPT
Fetch the full Workfront guide or reference doc for a workfront:// URI and return it as markdown. This server's detailed guidance lives behind this tool because the claude.ai connector does not auto-load MCP resources. - Call this whenever a tool description or the server instructions point you to a workfront:// URI (e.g. "workfront://tools/create-any-object", "workfront://reference/query-syntax"). - Fetch the relevant guide BEFORE non-trivial query/report/filter, status, or deep-link work instead of guessing syntax, field names, or status codes. - Pass the exact URI shown; for per-object rules use workfront://knowledge/{objectType}/{operation} (operation: create | update | delete).

workflow_update_any_object

ChatGPT
Update an existing Workfront object by ID. Supported types: projects, tasks, issues/requests, portfolios, programs, hour entries, assignments, plus users, teams, roles, and groups (admin only). - The 'data' parameter is REQUIRED and must contain at least one field to change — never invoke this tool with an empty 'data'. - 'data' is a FLAT key/value map. CORRECT: data: { "DE:Risk Level": "High", "name": "Q4" }. WRONG: data: { "parameterValues": { "DE:Risk Level": "High" } }, data: { "customFields": {...} }, data: { "fields": {...} }. Custom fields belong directly at the top level of 'data' with the DE: prefix. - When the user identifies the target (or any related object) by name, FIRST call insights_find_id_by_name (entity = the objectType) to obtain its ID, THEN call update_any_object in the same turn — do not stop after the lookup. Alphanumeric or numeric strings inside an object name are not valid IDs. If the result is ambiguous, ask the user to choose from the returned options instead of guessing. - Use a field's name from insights_search_fields as the data key; if name is not set, fall back to its label. Discover unknown fields with insights_search_fields before referencing them. - You MUST call read_workflow_docs with workfront://tools/update-any-object BEFORE this tool whenever the request involves a status/enum value, a filter modifier other than plain equality (_Mod/_Range), a date comparison, a scheduling or date field on a project or task (scheduleMode, taskConstraint, plannedStartDate, plannedCompletionDate, constraintDate), a task dependency field (predecessorExpression), a relation path (a field containing ":"), result ordering (orderBy), or a force delete. Skip it only for a pure identity equality lookup followed by a simple non-status field update. OUT OF SCOPE for these any-object tools — do not attempt, do not imply success: - Uploading or attaching a document - Posting a comment or replying to a comment thread - Creating or advancing an approval/review step - Setting or comparing a project baseline - Logging or approving an expense - Creating a milestone (or milestone path) - Adding a note - Restoring an object from the Recycle Bin For any of these, check whether a dedicated tool for that action is available before falling back to the object's Workfront UI page (the url field on a returned object, or https://<host>/<urlSegment>/<objectID>). - ACTIONS: set 'action' to run a redrock action instead of a field update. First call read_workflow_docs with workfront://tools/object-actions to see the available actions and their required inputs — they are not listed inline. Convert actions use 'data' for the RESULTING object's fields; move actions take only 'actionOptions'. An unsupported action is rejected.

approvals_create_approval_from_template

Claude

approvals_create_or_update_approval_workflow

Claude

approvals_create_template

Claude

approvals_delete_approval_stage

Claude

approvals_find_document_version_by_name

Claude

approvals_find_project_by_name

Claude

approvals_find_team_by_name

Claude

approvals_find_user_by_name

Claude

approvals_get_adobe_region

Claude

approvals_get_approval_info

Claude

approvals_get_current_user

Claude

approvals_get_document_by_version_id

Claude

approvals_get_documents_by_project

Claude

approvals_get_projects_by_owner

Claude

approvals_list_templates

Claude

approvals_resolve_document_scope

Claude

approvals_search_template_by_name

Claude

approvals_send_reminder_to_participants

Claude

approvals_send_reminder_to_undecided

Claude

approvals_update_template

Claude

planning_add_global_record_type_to_workspace

Claude

planning_bulk_record_actions

Claude

planning_convert_workspace_to_template

Claude

planning_create_connection_record

Claude

planning_create_fields

Claude

planning_create_record_types

Claude

planning_create_view

Claude

planning_create_workspace

Claude

planning_create_workspace_from_template

Claude

planning_delete_field

Claude

planning_delete_record_type

Claude

planning_delete_view

Claude

planning_delete_workspace

Claude

planning_get_external_record_workspaces

Claude

planning_get_field

Claude

planning_get_record

Claude

planning_get_record_change_log

Claude

planning_get_record_sharing

Claude

planning_get_record_type

Claude

planning_get_record_type_sharing

Claude

planning_get_template

Claude

planning_get_template_list

Claude

planning_get_view

Claude

planning_get_view_sharing

Claude

planning_get_workspace

Claude

planning_get_workspace_list

Claude

planning_get_workspace_sharing

Claude

planning_list_addable_global_record_types

Claude

planning_list_global_record_types

Claude

planning_modify_record_type_sharing

Claude

planning_modify_records_sharing

Claude

planning_modify_view_sharing

Claude

planning_modify_workspace_sharing

Claude

planning_remove_global_record_type_from_workspace

Claude

planning_search_records

Claude

planning_search_resources

Claude

planning_search_sharing_data

Claude

planning_search_users

Claude

planning_update_field

Claude

planning_update_record_type

Claude

planning_update_records_order

Claude

planning_update_view

Claude

planning_update_workspace

Claude

workflow_create_any_object

Claude

workflow_delete_any_object

Claude

workflow_resolve_field_names_any_object

Claude

workflow_search_any_object

Claude

workflow_update_any_object

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

169

Tools

3

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily