Skip to content

Connectors · Work & projects

OpenProject MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to OpenProject and the rest of your systems. It gives your agent 298 OpenProject actions (194 reads, 76 writes and 28 that wait for a confirmation) and holds the OpenProject credential itself, so the agent never does. It paces OpenProject's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "openproject.work_packages.list_work_packages",  intent: "check which OpenProject account is connected"}# List work packages · read · 1 upstream call
  • 298actionsin one signed file
  • 194readlook, never change
  • 76writecreate and update
  • 28wait for a yesdestructive, confirmed first

Set up

Connect OpenProject in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect OpenProject.

    Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_keyOpenProject API token (My account > Access tokens > API > Generate)
    • hostWhere your OpenProject lives: your host
    account { op: "connections.requirements", service: "openproject" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "openproject.work_packages.list_work_packages" }# list work packages · read · 1 upstream callcheck { action: "openproject.work_packages.create_work_package", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

OpenProject at a glance

Sign-in
Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_key
Setup fields
host
Limits we pace to
10 calls a second, per connection
API covered
OpenProject API v3 (OpenAPI 3.1.2), at your OpenProject instance's API base URL, which you enter when connecting
Built from
OpenProject's documentation, read 23 October 2026openproject.orgopenproject.org
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
167 of 194 reads, for up to 5 minutes; a write clears what it affects
Shared entities
5, so ask can line OpenProject up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in OpenProject.

298 actions in 54 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 194readlook, never change
  • 76writecreate and update
  • 28destructivewait for a confirmation
  1. Work packages

    32

    22 read · 8 write · 2 destructive

    List work packages · Create Work Package · View Work Package · Update a Work Package

  2. Meetings

    26

    14 read · 8 write · 4 destructive

    List all visible meetings · Create meeting · Get a meeting · Update meeting

  3. Queries

    16

    11 read · 4 write · 1 destructive

    Available projects for query · Create query · List queries · Query Create Form

  4. Projects

    15

    10 read · 4 write · 1 destructive

    List projects · Create project · View project · Update Project

  5. File links

    13

    6 read · 5 write · 2 destructive

    Creates a storage. · Creation of a new folder · Creates an oauth client credentials object for a storage. · Gets a list of project storages

  6. Recurring meetings

    13

    6 read · 4 write · 3 destructive

    Create recurring meeting · Instantiate an occurrence · List cancelled occurrences of a recurring meeting · List open occurrences of a recurring meeting

  7. Versions

    11

    8 read · 2 write · 1 destructive

    Create version · List versions · Update Version · Get version

  8. Work schedule

    11

    6 read · 4 write · 1 destructive

    Creates a non-working day (NOT IMPLEMENTED) · Lists days · Lists all non working days · Lists week days

46 more areas · 161 actions
  • User working times 10
  • Memberships 9
  • Time entries 9
  • Users 9
  • Attachments 7
  • Notifications 7
  • Grids 6
  • Principals 6
  • Actions capabilities 5
  • Activities 5
  • Groups 5
  • News 5
  • Portfolios 5
  • Programs 5
  • Relations 5
  • Custom fields 4
  • Query filter instance schema 4
  • Types 4
  • Workspaces 4
  • Categories 3
  • Documents 3
  • Reminders 3
  • Sprints 3
  • Views 3
  • Budgets 2
  • Configuration 2
  • Custom actions 2
  • Help texts 2
  • Oauth 2
  • Priorities 2
  • Project phase definitions 2
  • Roles 2
  • Statuses 2
  • User preferences 2
  • Custom options 1
  • Posts 1
  • Project phases 1
  • Query columns 1
  • Query filters 1
  • Query operators 1
  • Query sort bys 1
  • Revisions 1
  • Root 1
  • Time entry activities 1
  • Values property 1
  • Wiki pages 1

Top actions

The OpenProject API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 57 of OpenProject's 57 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
openproject.work_packages.list_work_packagesList work packagesList work packages.readwork.task.list122 connectors
openproject.users.list_usersList UsersList Users.readidentity.user.list474 connectors
openproject.projects.list_projectsList projectsList projects.readwork.project.list109 connectors
openproject.groups.list_groupsList groupsList groups.readidentity.group.list262 connectors
openproject.time_entries.list_time_entriesList time entriesList time entries.readwork.time_entry.list59 connectors
openproject.work_packages.create_work_packageCreate Work PackageCreate Work Package.writework.task.create127 connectors
openproject.projects.create_projectCreate projectCreate project.writework.project.create102 connectors
openproject.users.create_userCreate UserCreate User.writeidentity.user.create262 connectors
openproject.time_entries.create_time_entryCreate time entryCreate time entry.writework.time_entry.create56 connectors
openproject.groups.create_groupCreate groupCreate group.writeidentity.group.create205 connectors
openproject.work_packages.delete_work_packageDelete Work PackageDelete Work Package.destructivework.task.delete107 connectors
openproject.workspaces.list_workspaceList workspaceList workspace.readwork.workspace.list50 connectors

Try it

Prompts to paste into Claude.

Each one names the OpenProject actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which OpenProject tasks are overdue, and who owns each one?

    callsopenproject.work_packages.list_work_packages

  2. Writewrite

    Create Work Package in OpenProject. Show me exactly what you will send before you save it.

    callsopenproject.work_packages.create_work_package

Governance for OpenProject

Destructive actions wait for a yes.

28 OpenProject actions are destructive. These are all of them:

  • Delete Work Packageopenproject.work_packages.delete_work_package
  • Delete Projectopenproject.projects.delete_project
  • Delete useropenproject.users.delete_user
  • Delete time entryopenproject.time_entries.delete_time_entry
  • Delete groupopenproject.groups.delete_group
  • Delete versionopenproject.versions.delete_version
  • Delete attachmentopenproject.attachments.delete_attachment
  • Delete membershipopenproject.memberships.delete_membership
  • Delete meetingopenproject.meetings.delete_meeting
  • Delete newsopenproject.news.delete_news
  • Delete queryopenproject.queries.delete_query
  • Delete Programopenproject.programs.delete_program
  • Delete a storageopenproject.file_links.delete_storage
  • Delete Relationopenproject.relations.delete_relation
  • Delete a reminderopenproject.reminders.delete_reminder
  • Removes a file link.openproject.file_links.delete_file_link
  • Delete Portfolioopenproject.portfolios.delete_portfolio
  • Remove watcheropenproject.work_packages.remove_watcher
  • Delete a meeting outcomeopenproject.meetings.delete_meeting_outcome
  • Delete a meeting sectionopenproject.meetings.delete_meeting_section
  • Delete placeholder useropenproject.principals.delete_placeholder_user
  • Delete a meeting agenda itemopenproject.meetings.delete_meeting_agenda_item
  • Removes a non-working day (NOT IMPLEMENTED)openproject.work_schedule.delete_non_working_day
  • Delete recurring meetingopenproject.recurring_meetings.delete_recurring_meeting
  • Delete a personal non-working time recordopenproject.user_working_times.delete_user_non_working_time
  • Delete a working hours recordopenproject.user_working_times.delete_user_working_hours_record
  • Cancel an occurrenceopenproject.recurring_meetings.cancel_recurring_meeting_occurrence
  • End a meeting seriesopenproject.recurring_meetings.end_recurring_meeting

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

doopenproject.work_packages.delete_work_packageconfirm_policy: human

Delete Work Package?

intent: the user asked me to delete Work Package

run suspended · waiting for a named person · key openproject-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "openproject-agent",  allowed_actions: ["openproject.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "openproject.work_packages.delete_work_package", approver: "[email protected]" },    { match: "openproject.projects.delete_project", approver: "[email protected]" },    { match: "openproject.users.delete_user", approver: "[email protected]" }  ]}
Illustrative. Scoped to OpenProject only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What OpenProject costs on actionlake.

Every OpenProject action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call OpenProject refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 298 OpenProject actions
  • 298actions pageeach page of a long list is one call
  • 167reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every OpenProject action.

298 actions by area: the id your agent calls, what it does, and its effect.

Work packages32
  • openproject.work_packages.add_watcherAdd watcherwrite
  • openproject.work_packages.available_projects_for_work_packageAvailable projects for work packageread
  • openproject.work_packages.available_watchersAvailable watchersread
  • openproject.work_packages.comment_work_packageComment work packagewrite
  • openproject.work_packages.create_project_work_packageCreate work package in projectwrite
  • openproject.work_packages.create_work_packageCreate Work Packagewrite
  • openproject.work_packages.create_work_package_file_linkCreates file links.write
  • openproject.work_packages.create_work_package_reminderCreate a work package reminderwrite
  • openproject.work_packages.create_workspace_work_packageCreate work package in workspacewrite
  • openproject.work_packages.delete_work_packageDelete Work Packagedestructive
  • openproject.work_packages.form_create_work_packageForm for creating a Work Packageread
  • openproject.work_packages.form_create_work_package_in_projectForm for creating Work Packages in a Projectread
  • openproject.work_packages.form_create_work_package_in_workspaceForm for creating Work Packages in a Workspaceread
  • openproject.work_packages.form_edit_work_packageForm for editing a Work Packageread
  • openproject.work_packages.get_project_work_package_collectionGet work packages of projectread
  • openproject.work_packages.get_workspace_work_package_collectionGet work packages of workspaceread
  • openproject.work_packages.list_available_relation_candidatesAvailable relation candidatesread
  • openproject.work_packages.list_watchersList watchersread
  • openproject.work_packages.list_work_package_activitiesList work package activitiesread
  • openproject.work_packages.list_work_package_activities_emoji_reactionsList emoji reactions by work package activitiesread
  • openproject.work_packages.list_work_package_file_linksGets all file links of a work packageread
  • openproject.work_packages.list_work_package_remindersList work package remindersread
  • openproject.work_packages.list_work_package_schemasList Work Package Schemasread
  • openproject.work_packages.list_work_packagesList work packagesread
  • openproject.work_packages.project_available_assigneesProject Available assigneesread
  • openproject.work_packages.remove_watcherRemove watcherdestructive
  • openproject.work_packages.revisionsRevisionsread
  • openproject.work_packages.update_work_packageUpdate a Work Packagewrite
  • openproject.work_packages.view_work_packageView Work Packageread
  • openproject.work_packages.view_work_package_schemaView Work Package Schemaread
  • openproject.work_packages.work_package_available_assigneesWork Package Available assigneesread
  • openproject.work_packages.workspace_available_assigneesWorkspace Available assigneesread
Meetings26
  • openproject.meetings.create_meetingCreate meetingwrite
  • openproject.meetings.create_meeting_agenda_itemCreate meeting agenda itemwrite
  • openproject.meetings.create_meeting_outcomeCreate meeting outcomewrite
  • openproject.meetings.create_meeting_sectionCreate meeting sectionwrite
  • openproject.meetings.delete_meetingDelete meetingdestructive
  • openproject.meetings.delete_meeting_agenda_itemDelete a meeting agenda itemdestructive
  • openproject.meetings.delete_meeting_outcomeDelete a meeting outcomedestructive
  • openproject.meetings.delete_meeting_sectionDelete a meeting sectiondestructive
  • openproject.meetings.get_meetingGet a meetingread
  • openproject.meetings.get_meeting_agenda_itemGet a meeting agenda itemread
  • openproject.meetings.get_meeting_agenda_item_by_meetingGet a meeting agenda itemread
  • openproject.meetings.get_meeting_outcomeGet a meeting outcomeread
  • openproject.meetings.get_meeting_outcome_by_agenda_itemGet a meeting outcomeread
  • openproject.meetings.get_meeting_schemaGet meeting schemaread
  • openproject.meetings.get_meeting_sectionGet a meeting sectionread
  • openproject.meetings.get_meeting_section_by_meetingGet a meeting sectionread
  • openproject.meetings.list_meeting_agenda_itemsList meeting agenda itemsread
  • openproject.meetings.list_meeting_outcomesList meeting outcomesread
  • openproject.meetings.list_meeting_sectionsList meeting sectionsread
  • openproject.meetings.list_meetingsList all visible meetingsread
  • openproject.meetings.meeting_create_formMeeting create formread
  • openproject.meetings.meeting_update_formMeeting update formread
  • openproject.meetings.update_meetingUpdate meetingwrite
  • openproject.meetings.update_meeting_agenda_itemUpdate a meeting agenda itemwrite
  • openproject.meetings.update_meeting_outcomeUpdate a meeting outcomewrite
  • openproject.meetings.update_meeting_sectionUpdate a meeting sectionwrite
Queries16
  • openproject.queries.available_projects_for_queryAvailable projects for queryread
  • openproject.queries.create_queryCreate querywrite
  • openproject.queries.delete_queryDelete querydestructive
  • openproject.queries.edit_queryEdit Querywrite
  • openproject.queries.list_queriesList queriesread
  • openproject.queries.query_create_formQuery Create Formread
  • openproject.queries.query_update_formQuery Update Formread
  • openproject.queries.star_queryStar querywrite
  • openproject.queries.unstar_queryUnstar querywrite
  • openproject.queries.view_default_queryView default queryread
  • openproject.queries.view_default_query_for_projectView default query for projectread
  • openproject.queries.view_default_query_for_workspaceView default query for workspaceread
  • openproject.queries.view_queryView queryread
  • openproject.queries.view_schema_for_global_queriesView schema for global queriesread
  • openproject.queries.view_schema_for_project_queriesView schema for project queriesread
  • openproject.queries.view_schema_for_workspace_queriesView schema for workspace queriesread
Projects15
  • openproject.projects.create_projectCreate projectwrite
  • openproject.projects.delete_projectDelete Projectdestructive
  • openproject.projects.favorite_projectFavorite Projectwrite
  • openproject.projects.list_available_parent_project_candidatesList available parent project candidatesread
  • openproject.projects.list_projectsList projectsread
  • openproject.projects.list_projects_with_versionList projects having versionread
  • openproject.projects.list_workspaces_with_versionList workspaces having versionread
  • openproject.projects.project_copy_formProject copy formread
  • openproject.projects.project_create_formProject create formread
  • openproject.projects.project_update_formProject update formread
  • openproject.projects.unfavorite_projectUnfavorite Projectwrite
  • openproject.projects.update_projectUpdate Projectwrite
  • openproject.projects.view_projectView projectread
  • openproject.projects.view_project_schemaView project schemaread
  • openproject.projects.view_project_statusView project statusread
File links13
  • openproject.file_links.create_storageCreates a storage.write
  • openproject.file_links.create_storage_folderCreation of a new folderwrite
  • openproject.file_links.create_storage_oauth_credentialsCreates an oauth client credentials object for a storage.write
  • openproject.file_links.delete_file_linkRemoves a file link.destructive
  • openproject.file_links.delete_storageDelete a storagedestructive
  • openproject.file_links.get_project_storageGets a project storageread
  • openproject.file_links.get_storageGet a storageread
  • openproject.file_links.get_storage_filesGets files of a storage.read
  • openproject.file_links.list_project_storagesGets a list of project storagesread
  • openproject.file_links.list_storagesGet Storagesread
  • openproject.file_links.prepare_storage_file_uploadPreparation of a direct upload of a file to the given storage.write
  • openproject.file_links.update_storageUpdate a storagewrite
  • openproject.file_links.view_file_linkGets a file link.read
Recurring meetings13
  • openproject.recurring_meetings.cancel_recurring_meeting_occurrenceCancel an occurrencedestructive
  • openproject.recurring_meetings.complete_recurring_meeting_templateComplete the series templatewrite
  • openproject.recurring_meetings.create_recurring_meetingCreate recurring meetingwrite
  • openproject.recurring_meetings.delete_recurring_meetingDelete recurring meetingdestructive
  • openproject.recurring_meetings.end_recurring_meetingEnd a meeting seriesdestructive
  • openproject.recurring_meetings.get_recurring_meetingGet a recurring meetingread
  • openproject.recurring_meetings.init_recurring_meeting_occurrenceInstantiate an occurrencewrite
  • openproject.recurring_meetings.list_recurring_meeting_occurrences_cancelledList cancelled occurrences of a recurring meetingread
  • openproject.recurring_meetings.list_recurring_meeting_occurrences_openList open occurrences of a recurring meetingread
  • openproject.recurring_meetings.list_recurring_meeting_occurrences_pastList past occurrences of a recurring meetingread
  • openproject.recurring_meetings.list_recurring_meeting_occurrences_upcomingList upcoming occurrences of a recurring meetingread
  • openproject.recurring_meetings.list_recurring_meetingsList all visible recurring meetingsread
  • openproject.recurring_meetings.update_recurring_meetingUpdate recurring meetingwrite
Versions11
  • openproject.versions.available_projects_for_versionsAvailable projects for versionsread
  • openproject.versions.create_versionCreate versionwrite
  • openproject.versions.delete_versionDelete versiondestructive
  • openproject.versions.get_versionGet versionread
  • openproject.versions.list_versionsList versionsread
  • openproject.versions.list_versions_available_in_a_projectList versions available in a projectread
  • openproject.versions.list_versions_available_in_a_workspaceList versions available in a workspaceread
  • openproject.versions.update_versionUpdate Versionwrite
  • openproject.versions.version_create_formVersion create formread
  • openproject.versions.version_update_formVersion update formread
  • openproject.versions.view_version_schemaView version schemaread
Work schedule11
  • openproject.work_schedule.create_non_working_dayCreates a non-working day (NOT IMPLEMENTED)write
  • openproject.work_schedule.delete_non_working_dayRemoves a non-working day (NOT IMPLEMENTED)destructive
  • openproject.work_schedule.list_daysLists daysread
  • openproject.work_schedule.list_non_working_daysLists all non working daysread
  • openproject.work_schedule.list_week_daysLists week daysread
  • openproject.work_schedule.update_non_working_dayUpdate a non-working day attributes (NOT IMPLEMENTED)write
  • openproject.work_schedule.update_week_dayUpdate a week day attributes (NOT IMPLEMENTED)write
  • openproject.work_schedule.update_week_daysUpdate week days (NOT IMPLEMENTED)write
  • openproject.work_schedule.view_dayView dayread
  • openproject.work_schedule.view_non_working_dayView a non-working dayread
  • openproject.work_schedule.view_week_dayView a week dayread
User working times10
  • openproject.user_working_times.create_user_non_working_timeCreate a personal non-working day for a userwrite
  • openproject.user_working_times.create_user_working_hoursCreate a working hours record for a userwrite
  • openproject.user_working_times.delete_user_non_working_timeDelete a personal non-working time recorddestructive
  • openproject.user_working_times.delete_user_working_hours_recordDelete a working hours recorddestructive
  • openproject.user_working_times.list_user_non_working_timesList personal non-working times for a userread
  • openproject.user_working_times.list_user_working_hoursList working hours for a userread
  • openproject.user_working_times.update_user_non_working_timeUpdate a personal non-working time recordwrite
  • openproject.user_working_times.update_user_working_hours_recordUpdate a working hours recordwrite
  • openproject.user_working_times.view_user_non_working_timeView a personal non-working time recordread
  • openproject.user_working_times.view_user_working_hours_recordView a working hours recordread
Memberships9
  • openproject.memberships.create_membershipCreate a membershipwrite
  • openproject.memberships.delete_membershipDelete membershipdestructive
  • openproject.memberships.form_create_membershipForm create membershipread
  • openproject.memberships.form_update_membershipForm update membershipread
  • openproject.memberships.get_membershipGet a membershipread
  • openproject.memberships.get_membership_schemaSchema membershipread
  • openproject.memberships.get_memberships_available_projectsAvailable projects for membershipsread
  • openproject.memberships.list_membershipsList membershipsread
  • openproject.memberships.update_membershipUpdate membershipwrite
Time entries9
  • openproject.time_entries.available_projects_for_time_entriesAvailable projects for time entriesread
  • openproject.time_entries.create_time_entryCreate time entrywrite
  • openproject.time_entries.delete_time_entryDelete time entrydestructive
  • openproject.time_entries.get_time_entryGet time entryread
  • openproject.time_entries.list_time_entriesList time entriesread
  • openproject.time_entries.time_entry_create_formTime entry create formread
  • openproject.time_entries.time_entry_update_formTime entry update formread
  • openproject.time_entries.update_time_entryupdate time entrywrite
  • openproject.time_entries.view_time_entry_schemaView time entry schemaread
Users9
  • openproject.users.create_userCreate Userwrite
  • openproject.users.delete_userDelete userdestructive
  • openproject.users.list_usersList Usersread
  • openproject.users.lock_userLock userwrite
  • openproject.users.unlock_userUnlock userwrite
  • openproject.users.update_userUpdate userwrite
  • openproject.users.user_update_formUser update formread
  • openproject.users.view_userView userread
  • openproject.users.view_user_schemaView user schemaread
Attachments7
  • openproject.attachments.complete_attachment_uploadComplete a direct attachment uploadread
  • openproject.attachments.delete_attachmentDelete attachmentdestructive
  • openproject.attachments.list_attachments_by_meetingList attachments by meetingread
  • openproject.attachments.list_attachments_by_postList attachments by postread
  • openproject.attachments.list_attachments_by_wiki_pageList attachments by wiki pageread
  • openproject.attachments.list_work_package_attachmentsList attachments by work packageread
  • openproject.attachments.view_attachmentView attachmentread
Notifications7
  • openproject.notifications.list_notificationsGet notification collectionread
  • openproject.notifications.read_notificationRead notificationwrite
  • openproject.notifications.read_notificationsRead all notificationswrite
  • openproject.notifications.unread_notificationUnread notificationwrite
  • openproject.notifications.unread_notificationsUnread all notificationswrite
  • openproject.notifications.view_notificationGet the notificationread
  • openproject.notifications.view_notification_detailGet a notification detailread
Grids6
  • openproject.grids.create_gridCreate a gridwrite
  • openproject.grids.get_gridGet a gridread
  • openproject.grids.grid_create_formGrid Create Formread
  • openproject.grids.grid_update_formGrid Update Formread
  • openproject.grids.list_gridsList gridsread
  • openproject.grids.update_gridUpdate a gridwrite
Principals6
  • openproject.principals.create_placeholder_userCreate placeholder userwrite
  • openproject.principals.delete_placeholder_userDelete placeholder userdestructive
  • openproject.principals.list_placeholder_usersList placehoder usersread
  • openproject.principals.list_principalsList principalsread
  • openproject.principals.update_placeholder_userUpdate placeholder userwrite
  • openproject.principals.view_placeholder_userView placeholder userread
Actions capabilities5
  • openproject.actions_capabilities.list_actionsList actionsread
  • openproject.actions_capabilities.list_capabilitiesList capabilitiesread
  • openproject.actions_capabilities.view_actionView actionread
  • openproject.actions_capabilities.view_capabilitiesView capabilitiesread
  • openproject.actions_capabilities.view_global_contextView global contextread
Activities5
  • openproject.activities.get_activityGet an activityread
  • openproject.activities.list_activity_attachmentsList attachments by activityread
  • openproject.activities.list_activity_emoji_reactionsList emoji reactions by activityread
  • openproject.activities.toggle_activity_emoji_reactionToggle emoji reaction for an activitywrite
  • openproject.activities.update_activityUpdate activitywrite
Groups5
  • openproject.groups.create_groupCreate groupwrite
  • openproject.groups.delete_groupDelete groupdestructive
  • openproject.groups.get_groupGet groupread
  • openproject.groups.list_groupsList groupsread
  • openproject.groups.update_groupUpdate groupwrite
News5
  • openproject.news.create_newsCreate Newswrite
  • openproject.news.delete_newsDelete newsdestructive
  • openproject.news.list_newsList Newsread
  • openproject.news.update_newsUpdate newswrite
  • openproject.news.view_newsView newsread
Portfolios5
  • openproject.portfolios.delete_portfolioDelete Portfoliodestructive
  • openproject.portfolios.list_portfoliosList portfoliosread
  • openproject.portfolios.portfolio_update_formPortfolio update formread
  • openproject.portfolios.update_portfolioUpdate Portfoliowrite
  • openproject.portfolios.view_portfolioView portfolioread
Programs5
  • openproject.programs.delete_programDelete Programdestructive
  • openproject.programs.list_programsList programsread
  • openproject.programs.program_update_formProgram update formread
  • openproject.programs.update_programUpdate Programwrite
  • openproject.programs.view_programView programread
Relations5
  • openproject.relations.create_relationCreate relationwrite
  • openproject.relations.delete_relationDelete Relationdestructive
  • openproject.relations.get_relationGet Relationread
  • openproject.relations.list_relationsList Relationsread
  • openproject.relations.update_relationUpdate Relationwrite
Custom fields4
  • openproject.custom_fields.get_custom_fieldGet custom fieldread
  • openproject.custom_fields.get_custom_field_itemGet a custom field hierarchy itemread
  • openproject.custom_fields.get_custom_field_item_branchGet a custom field hierarchy item's branchread
  • openproject.custom_fields.get_custom_field_itemsGet the custom field hierarchy itemsread
Query filter instance schema4
  • openproject.query_filter_instance_schema.list_query_filter_instance_schemasList Query Filter Instance Schemasread
  • openproject.query_filter_instance_schema.list_query_filter_instance_schemas_for_projectList Query Filter Instance Schemas for Projectread
  • openproject.query_filter_instance_schema.list_query_filter_instance_schemas_for_workspaceList Query Filter Instance Schemas for Workspaceread
  • openproject.query_filter_instance_schema.view_query_filter_instance_schemaView Query Filter Instance Schemaread
Types4
  • openproject.types.list_all_typesList all Typesread
  • openproject.types.list_types_available_in_a_projectList types available in a projectread
  • openproject.types.list_types_available_in_a_workspaceList types available in a workspaceread
  • openproject.types.view_typeView Typeread
Workspaces4
  • openproject.workspaces.favorite_workspaceFavorite Workspacewrite
  • openproject.workspaces.list_workspaceList workspaceread
  • openproject.workspaces.unfavorite_workspaceUnfavorite Workspacewrite
  • openproject.workspaces.view_workspace_schemaView workspace schemaread
Categories3
  • openproject.categories.list_categories_of_a_projectList categories of a projectread
  • openproject.categories.list_categories_of_a_workspaceList categories of a workspaceread
  • openproject.categories.view_categoryView Categoryread
Documents3
  • openproject.documents.list_documentsList Documentsread
  • openproject.documents.update_documentUpdate documentwrite
  • openproject.documents.view_documentView documentread
Reminders3
  • openproject.reminders.delete_reminderDelete a reminderdestructive
  • openproject.reminders.list_remindersList all active remindersread
  • openproject.reminders.update_reminderUpdate a reminderwrite
Sprints3
  • openproject.sprints.get_sprintGet sprintread
  • openproject.sprints.list_sprintsList sprintsread
  • openproject.sprints.list_sprints_in_projectList sprints in projectread
Views3
  • openproject.views.create_viewsCreate viewwrite
  • openproject.views.list_viewsList viewsread
  • openproject.views.view_viewView viewread
Budgets2
  • openproject.budgets.view_budgetview Budgetread
  • openproject.budgets.view_budgets_of_a_projectview Budgets of a Projectread
Configuration2
  • openproject.configuration.view_configurationView configurationread
  • openproject.configuration.view_project_configurationView project configurationread
Custom actions2
  • openproject.custom_actions.execute_custom_actionExecute custom actionwrite
  • openproject.custom_actions.get_custom_actionGet a custom actionread
Help texts2
  • openproject.help_texts.get_help_textGet help textread
  • openproject.help_texts.list_help_textsList help textsread
Oauth2
  • openproject.oauth.get_oauth_applicationGet the oauth application.read
  • openproject.oauth.get_oauth_client_credentialsGet the oauth client credentials object.read
Priorities2
  • openproject.priorities.list_all_prioritiesList all Prioritiesread
  • openproject.priorities.view_priorityView Priorityread
Project phase definitions2
  • openproject.project_phase_definitions.get_project_phase_definitionGet a project phase definitionread
  • openproject.project_phase_definitions.list_project_phase_definitionsList project phase definitionsread
Roles2
  • openproject.roles.list_rolesList rolesread
  • openproject.roles.view_roleView roleread
Statuses2
  • openproject.statuses.get_statusGet a work package statusread
  • openproject.statuses.list_statusesList the collection of all statusesread
User preferences2
  • openproject.user_preferences.show_my_preferencesShow my preferencesread
  • openproject.user_preferences.update_user_preferencesUpdate my preferenceswrite
Custom options1
  • openproject.custom_options.view_custom_optionView Custom Optionread
Posts1
  • openproject.posts.view_postView Postread
Project phases1
  • openproject.project_phases.get_project_phaseGet a project phaseread
Query columns1
  • openproject.query_columns.view_query_columnView Query Columnread
Query filters1
  • openproject.query_filters.view_query_filterView Query Filterread
Query operators1
  • openproject.query_operators.view_query_operatorView Query Operatorread
Query sort bys1
  • openproject.query_sort_bys.view_query_sort_byView Query Sort Byread
Revisions1
  • openproject.revisions.view_revisionView revisionread
Root1
  • openproject.root.view_rootView rootread
Time entry activities1
  • openproject.time_entry_activities.get_time_entries_activityView time entries activityread
Values property1
  • openproject.values_property.view_values_schemaView Values schemaread
Wiki pages1
  • openproject.wiki_pages.view_wiki_pageView Wiki Pageread

Questions

The OpenProject MCP server, answered.

Is there an OpenProject MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 298 OpenProject actions across work packages, meetings, queries and projects, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by OpenProject.

What do I need to connect OpenProject?

OpenProject API token (My account > Access tokens > API > Generate). Plus your host. The free call account { op: "connections.requirements", service: "openproject" } lists exactly what to paste.

Can an AI agent delete or change things in OpenProject?

Only if its key allows it, and only with an explicit confirmation. 28 OpenProject actions are destructive, including delete Work Package, delete Project and delete user. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my OpenProject API limit?

actionlake paces every call to the limits in the OpenProject service file: 10 calls a second per connection. Repeated reads are answered from cache (167 OpenProject actions can be), which never reaches OpenProject.

What does an OpenProject action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (298 OpenProject actions page). Cache hits, searches, dry runs and calls OpenProject refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which OpenProject API does it cover?

The OpenProject API v3 (OpenAPI 3.1.2) at your OpenProject instance's API base URL, which you enter when connecting. It is built from OpenProject's documentation as read on 23 October 2026. 298 actions in 54 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my OpenProject data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your OpenProject credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent OpenProject today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.