---
title: "Rydoo MCP server for AI agents - actionlake"
description: "Give Claude 111 Rydoo actions through one MCP server: expenses, trips, custom field list items, groups. 100,000 calls a month free, no card."
canonical: https://actionlake.com/connectors/rydoo
updated: 2026-10-23
---

Connectors · Accounting & finance

# Rydoo MCP server for AI agents.

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

[Connect Rydoo free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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: "rydoo.users.list",
  intent: "check which Rydoo account is connected"
}
# Search for user · read · 1 upstream call
```

- 111 actions in one signed file
- 54 read look, never change
- 51 write create and update
- 6 wait for a yes destructive, confirmed first

Set up

## Connect Rydoo 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 Rydoo.
   OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `client_id` Rydoo API client ID
   - `client_secret` The Rydoo API client secret issued with the client ID
   ```
   account { op: "connections.requirements", service: "rydoo" }
   # 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: "rydoo.users.list" }
   # search for user · read · 1 upstream call
   check { action: "rydoo.users.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Rydoo at a glance

**Sign-in**

OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.

**You provide**

`client_id` `client_secret`

**Limits we pace to**

450 calls a minute, per connection

**API covered**

Rydoo API v2/v3 (OpenAPI 3.0.1 definitions published per operation on developers.rydoo.com)`api.rydoo.com`

**Built from**

Rydoo's documentation, read 23 October 2026[developers.rydoo.com](https://developers.rydoo.com/llms.txt) [developers.rydoo.com](https://developers.rydoo.com/reference/download-postman-collection)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

54 of 54 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

4, so ask can line Rydoo up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Rydoo.

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

- **54** read look, never change
- **51** write create and update
- **6** destructive wait for a confirmation

1. ### Expenses
   7
   2 read · 5 write · 0 destructive
   Adds an expense · Get an expense by UUID · Exported expenses · Reject a set of expenses
2. ### Trips
   6
   3 read · 3 write · 0 destructive
   Add a trip for the specified user · Get the trips of the company · Change the status of a set of trips to a specific status · Get the total number of trips
3. ### Custom field list items
   5
   3 read · 2 write · 0 destructive
   Add a list item to the custom field · Get list items defined for a given custom field · Get count of list items defined for a given custom field · Get a list item of a custom field
4. ### Groups
   5
   3 read · 2 write · 0 destructive
   Get the groups in your company · Add a group to the company · Get the specific group · Update a group
5. ### List item users
   5
   2 read · 1 write · 2 destructive
   Get a list of user assignments defined for a given list item · Assign users who can view a list item of a custom field · Get count of user assignments defined for a given list item · Unassign a user from a list item of a custom field
6. ### Projects
   5
   3 read · 2 write · 0 destructive
   Get the projects of the company · Add a project to the company · Get the specific project · Update a project
7. ### User linked accounts
   5
   2 read · 2 write · 1 destructive
   Create a linked account connection · Get a list of linked accounts for a user · Get the number of linked accounts for a user · Edit a linked account connection
8. ### Custom fields
   4
   3 read · 1 write · 0 destructive
   Get custom fields · Get the specific custom field · Get valid role combinations for custom fields · Update limitations of a custom field

**27 more areas · 69 actions**

- Payment methods **4**
- User role assignments **4**
- Users **4**
- Approver branches **3**
- Approver custom field values **3**
- Approver groups **3**
- Approver projects **3**
- Approver users **3**
- Conflict approver branches **3**
- Conflict approver custom field values **3**
- Conflict approver groups **3**
- Conflict approver projects **3**
- Linked accounts **3**
- Transactions **3**
- Branches **2**
- Categories **2**
- Exchange rates **2**
- External organizations **2**
- Project approvers **2**
- Project controllers **2**
- Reimbursements **2**
- User expense approvers **2**
- User expense controllers **2**
- User groups **2**
- User role permissions **2**
- Guests **1**
- User list items **1**

Top actions

## The Rydoo API, shaped for agents.

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

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `rydoo.users.list` Search for user | Search for user. | read | `identity.user.list` 474 connectors |
| `rydoo.groups.list` Get the groups in your company | Get the groups in your company. | read | `identity.group.list` 262 connectors |
| `rydoo.users.create` Add a user to the company | Add a user to the company. | write | `identity.user.create` 262 connectors |
| `rydoo.groups.create` Add a group to the company | Add a group to the company. | write | `identity.group.create` 205 connectors |
| `rydoo.projects.list` Get the projects of the company | Get the projects of the company. | read | `work.project.list` 109 connectors |
| `rydoo.expenses.create` Adds an expense | Adds an expense. | write | `finance.expense.create` 36 connectors |
| `rydoo.projects.create` Add a project to the company | Add a project to the company. | write | `work.project.create` 102 connectors |
| `rydoo.expenses.get` Get an expense by UUID | Get an expense by UUID. | read | `finance.expense.get` 42 connectors |
| `rydoo.user_role_assignments.list` Get role assignments for a user | Get role assignments for a user. | read | `identity.role_assignment.list` 41 connectors |
| `rydoo.user_role_assignments.update_branches` Update branches for a user’s role assignment | Update branches for a user’s role assignment. | write | `identity.role_assignment.update` 17 connectors |
| `rydoo.user_role_assignments.remove` Remove role assignments for a user | Remove role assignments for a user. | destructive | `identity.role_assignment.remove` 34 connectors |
| `rydoo.payment_methods.create` Create payment method | Create payment method. | write | `finance.payment_method.create` 20 connectors |

Try it

## Prompts to paste into Claude.

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

1. Read read
   Give me a one-line status for every active Rydoo project.
   calls `rydoo.projects.list`
2. Write write
   Add a user to the company in Rydoo. Show me exactly what you will send before you save it.
   calls `rydoo.users.create`

Governance for Rydoo

## Destructive actions wait for a yes.

6 Rydoo actions are destructive. These are all of them:

- Remove role assignments for a user `rydoo.user_role_assignments.remove`
- Unassign a user from a list item of a custom field `rydoo.list_item_users.unassign`
- Add role assignments for a user `rydoo.user_role_assignments.add`
- Set the permission of a user for a given role `rydoo.user_role_permissions.set`
- Delete a linked account connection `rydoo.user_linked_accounts.delete`
- Unassign all users from a list item of a custom field `rydoo.list_item_users.unassign_all`

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.

do rydoo.user_role_assignments.remove confirm_policy: **human**

Remove role assignments for a user?

**intent:** the user asked me to remove role assignments for a user

run suspended · waiting for a named person · key _rydoo-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "rydoo-agent",
  allowed_actions: ["rydoo.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "rydoo.user_role_assignments.remove", approver: "lead@example.com" },
    { match: "rydoo.list_item_users.unassign", approver: "lead@example.com" },
    { match: "rydoo.user_role_assignments.add", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Rydoo only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Rydoo costs on actionlake.

Every Rydoo action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Rydoo 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.

- 1 upstream call per action all 111 Rydoo actions
- 111 actions page each page of a long list is one call
- 54 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Rydoo action.

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

**Expenses 7**

- `rydoo.expenses.create` Adds an expense write
- `rydoo.expenses.get` Get an expense by UUID read
- `rydoo.expenses.list_exported` Exported expenses read
- `rydoo.expenses.reimburse` Set expenses status to Reimbursed write
- `rydoo.expenses.reject` Reject a set of expenses write
- `rydoo.expenses.report` Reports an expense write
- `rydoo.expenses.unreport` Unreports an expense write

**Trips 6**

- `rydoo.trips.change_status` Change the status of a set of trips to a specific status write
- `rydoo.trips.count` Get the total number of trips read
- `rydoo.trips.create` Add a trip for the specified user write
- `rydoo.trips.get` Get the specified trip read
- `rydoo.trips.list` Get the trips of the company read
- `rydoo.trips.update` Update the specified trip write

**Custom field list items 5**

- `rydoo.custom_field_list_items.count` Get count of list items defined for a given custom field read
- `rydoo.custom_field_list_items.create` Add a list item to the custom field write
- `rydoo.custom_field_list_items.get` Get a list item of a custom field read
- `rydoo.custom_field_list_items.list` Get list items defined for a given custom field read
- `rydoo.custom_field_list_items.update` Update a list item of a custom field write

**Groups 5**

- `rydoo.groups.count` The total count of all groups read
- `rydoo.groups.create` Add a group to the company write
- `rydoo.groups.get` Get the specific group read
- `rydoo.groups.list` Get the groups in your company read
- `rydoo.groups.update` Update a group write

**List item users 5**

- `rydoo.list_item_users.assign` Assign users who can view a list item of a custom field write
- `rydoo.list_item_users.count` Get count of user assignments defined for a given list item read
- `rydoo.list_item_users.list` Get a list of user assignments defined for a given list item read
- `rydoo.list_item_users.unassign` Unassign a user from a list item of a custom field destructive
- `rydoo.list_item_users.unassign_all` Unassign all users from a list item of a custom field destructive

**Projects 5**

- `rydoo.projects.count` The total count of projects read
- `rydoo.projects.create` Add a project to the company write
- `rydoo.projects.get` Get the specific project read
- `rydoo.projects.list` Get the projects of the company read
- `rydoo.projects.update` Update a project write

**User linked accounts 5**

- `rydoo.user_linked_accounts.count` Get the number of linked accounts for a user read
- `rydoo.user_linked_accounts.create` Create a linked account connection write
- `rydoo.user_linked_accounts.delete` Delete a linked account connection destructive
- `rydoo.user_linked_accounts.list` Get a list of linked accounts for a user read
- `rydoo.user_linked_accounts.update` Edit a linked account connection write

**Custom fields 4**

- `rydoo.custom_fields.get` Get the specific custom field read
- `rydoo.custom_fields.list` Get custom fields read
- `rydoo.custom_fields.role_combinations` Get valid role combinations for custom fields read
- `rydoo.custom_fields.update_limitations` Update limitations of a custom field write

**Payment methods 4**

- `rydoo.payment_methods.count` The total count of all payment methods in your company read
- `rydoo.payment_methods.create` Create payment method write
- `rydoo.payment_methods.list` Get payment methods in your company read
- `rydoo.payment_methods.update` Update payment method write

**User role assignments 4**

- `rydoo.user_role_assignments.add` Add role assignments for a user destructive
- `rydoo.user_role_assignments.list` Get role assignments for a user read
- `rydoo.user_role_assignments.remove` Remove role assignments for a user destructive
- `rydoo.user_role_assignments.update_branches` Update branches for a user’s role assignment write

**Users 4**

- `rydoo.users.create` Add a user to the company write
- `rydoo.users.get` Get a specific user read
- `rydoo.users.list` Search for user read
- `rydoo.users.update` Update the user write

**Approver branches 3**

- `rydoo.approver_branches.get` Return branches of an approver read
- `rydoo.approver_branches.modify` Update branches of an approver write
- `rydoo.approver_branches.replace` Replace branches of an approver write

**Approver custom field values 3**

- `rydoo.approver_custom_field_values.get` Return custom field values of an approver read
- `rydoo.approver_custom_field_values.modify` Update custom field values of an approver write
- `rydoo.approver_custom_field_values.replace` Replace custom field values of an approver write

**Approver groups 3**

- `rydoo.approver_groups.get` Return groups of an approver read
- `rydoo.approver_groups.modify` Update groups of an approver write
- `rydoo.approver_groups.replace` Replace groups of an approver write

**Approver projects 3**

- `rydoo.approver_projects.get` Return projects of an approver read
- `rydoo.approver_projects.modify` Update projects of an approver write
- `rydoo.approver_projects.replace` Replace projects of an approver write

**Approver users 3**

- `rydoo.approver_users.get` Return users of an approver read
- `rydoo.approver_users.modify` Update users of an approver write
- `rydoo.approver_users.replace` Replace users of an approver write

**Conflict approver branches 3**

- `rydoo.conflict_approver_branches.get` Return branches of a conflict approver read
- `rydoo.conflict_approver_branches.modify` Update branches of a conflict approver write
- `rydoo.conflict_approver_branches.replace` Replace branches of a conflict approver write

**Conflict approver custom field values 3**

- `rydoo.conflict_approver_custom_field_values.get` Return custom field values of a conflict approver read
- `rydoo.conflict_approver_custom_field_values.modify` Replace custom field values of a conflict approver write
- `rydoo.conflict_approver_custom_field_values.replace` Replace custom field values of a conflict approver write

**Conflict approver groups 3**

- `rydoo.conflict_approver_groups.get` Return groups of a conflict approver read
- `rydoo.conflict_approver_groups.modify` Update groups of a conflict approver write
- `rydoo.conflict_approver_groups.replace` Replace groups of a conflict approver write

**Conflict approver projects 3**

- `rydoo.conflict_approver_projects.get` Return projects of a conflict approver read
- `rydoo.conflict_approver_projects.modify` Update projects of a conflict approver write
- `rydoo.conflict_approver_projects.replace` Replace projects of a conflict approver write

**Linked accounts 3**

- `rydoo.linked_accounts.count` Get count of linked accounts connections in the company read
- `rydoo.linked_accounts.list` Get all linked accounts connections in the company read
- `rydoo.linked_accounts.roles` Get a list of roles for linked accounts read

**Transactions 3**

- `rydoo.transactions.count` Get count of transactions of a company read
- `rydoo.transactions.create` Add a new transaction for a user write
- `rydoo.transactions.list` Get transactions of a company read

**Branches 2**

- `rydoo.branches.get` Get company branch by its unique identifier read
- `rydoo.branches.list` Get branches in the company read

**Categories 2**

- `rydoo.categories.get` Get the specified category read
- `rydoo.categories.list` Get the categories of your company read

**Exchange rates 2**

- `rydoo.exchange_rates.active` Get active custom exchange rates per branch on a given date read
- `rydoo.exchange_rates.sync` Define custom exchange rates per branch write

**External organizations 2**

- `rydoo.external_organizations.create` Create external organization write
- `rydoo.external_organizations.list` Get a list of external organizations read

**Project approvers 2**

- `rydoo.project_approvers.get` Returns approver and conflict approver assignments for the project read
- `rydoo.project_approvers.set` Edit approver and coflict approver assigments for project write

**Project controllers 2**

- `rydoo.project_controllers.get` Returns controller and conflict controller assignments for project read
- `rydoo.project_controllers.set` Edit controller and coflict controller assigments for project write

**Reimbursements 2**

- `rydoo.reimbursements.count` Count read
- `rydoo.reimbursements.list` List read

**User expense approvers 2**

- `rydoo.user_expense_approvers.get` Returns expense approver assignments for the user read
- `rydoo.user_expense_approvers.set` Edit expense approver assignments for user write

**User expense controllers 2**

- `rydoo.user_expense_controllers.get` Returns controller assignments for the user read
- `rydoo.user_expense_controllers.set` Edit controller assigments for user write

**User groups 2**

- `rydoo.user_groups.list` Get the groups to which the user belongs read
- `rydoo.user_groups.replace` Update the groups to which the user belongs write

**User role permissions 2**

- `rydoo.user_role_permissions.get` Get the permission of a user for a given role read
- `rydoo.user_role_permissions.set` Set the permission of a user for a given role destructive

**Guests 1**

- `rydoo.guests.create` Create company-wide guest write

**User list items 1**

- `rydoo.user_list_items.assign` Assign list items of a custom field that can be viewed by a user write

Questions

## The Rydoo MCP server, answered.

**Is there a Rydoo MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 111 Rydoo actions across expenses, trips, custom field list items and groups, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Rydoo.

**What do I need to connect Rydoo?**

Rydoo API client ID and The Rydoo API client secret issued with the client ID. The free call account { op: "connections.requirements", service: "rydoo" } lists exactly what to paste.

**Can an AI agent delete or change things in Rydoo?**

Only if its key allows it, and only with an explicit confirmation. 6 Rydoo actions are destructive, including remove role assignments for a user, unassign a user from a list item of a custom field and add role assignments for a 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 Rydoo API limit?**

actionlake paces every call to the limits in the Rydoo service file: 450 calls a minute per connection. Repeated reads are answered from cache (54 Rydoo actions can be), which never reaches Rydoo.

**What does a Rydoo action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (111 Rydoo actions page). Cache hits, searches, dry runs and calls Rydoo 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 Rydoo API does it cover?**

The Rydoo API v2/v3 (OpenAPI 3.0.1 definitions published per operation on developers.rydoo.com) at api.rydoo.com. It is built from Rydoo's documentation as read on 23 October 2026. 111 actions in 35 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my Rydoo 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 Rydoo 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.

## More connectors like Rydoo

Shares the most action names with

- [Coupa 15](https://actionlake.com/connectors/coupa)
- [Smokeball 14](https://actionlake.com/connectors/smokeball)
- [Hubstaff 10](https://actionlake.com/connectors/hubstaff)
- [Zoho Expense 10](https://actionlake.com/connectors/zoho-expense)
- [Harvest 10](https://actionlake.com/connectors/harvest)
- [QuickBooks Time 9](https://actionlake.com/connectors/quickbooks-time)

Joins with, on shared entities

- [HaloPSA 3](https://actionlake.com/connectors/halopsa)
- [Azure DevOps Services 3](https://actionlake.com/connectors/azure-devops-services)
- [Lightdash 3](https://actionlake.com/connectors/lightdash)
- [Octopus Deploy 3](https://actionlake.com/connectors/octopus-deploy)
- [Teamwork 3](https://actionlake.com/connectors/teamwork)
- [Jira 3](https://actionlake.com/connectors/jira)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Rydoo; the name is the vendor's own. Counts are from the Rydoo service file, version 1.0.0.

## Give your agent Rydoo today.

[Connect Rydoo free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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

---

Source: https://actionlake.com/connectors/rydoo
More: https://actionlake.com/llms.txt
