---
title: "Actionstep MCP server for AI agents - actionlake"
description: "Give Claude 257 Actionstep actions through one MCP server: contact documents. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/actionstep
updated: 2026-10-23
---

Connectors · Accounting & finance

# Actionstep MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Actionstep and the rest of your systems. It gives your agent 257 Actionstep actions (145 reads, 79 writes and 33 that wait for a confirmation) and holds the Actionstep credential itself, so the agent never does. It paces Actionstep's limits and records every call. Connecting Actionstep needs your own Actionstep OAuth app and one admin sign-in.

[Connect Actionstep 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: "actionstep.tasks.list",
  intent: "check which Actionstep account is connected"
}
# List tasks · read · 1 upstream call
```

- 257 actions in one signed file
- 145 read look, never change
- 79 write create and update
- 33 wait for a yes destructive, confirmed first

Set up

## Connect Actionstep 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 Actionstep.
   OAuth 2.0, authorization code. You register your own OAuth app with Actionstep, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
   Before the first sign-in, Actionstep needs an OAuth app of your own, registered in its developer portal. actionlake has no Actionstep app to lend you.
   - `access_token` Access token from one sign-in with your own OAuth app
   - `refresh_token` Refresh token from the same sign-in; the access token is renewed from it
   - `client_id` Actionstep API client id (production API credentials issued by Actionstep after API review)
   - `client_secret` Actionstep API client secret
   - `host` Where your Actionstep lives: your host
   ```
   account { op: "connections.requirements", service: "actionstep" }
   # 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: "actionstep.tasks.list" }
   # list tasks · read · 1 upstream call
   check { action: "actionstep.tasks.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Actionstep at a glance

**Sign-in**

OAuth 2.0, authorization code. You register your own OAuth app with Actionstep, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.

**You provide**

`access_token` `refresh_token` `client_id` `client_secret`

**Setup fields**

`host`

**Limits we pace to**

120 calls a minute, per connection

**API covered**

Actionstep REST API (Platform JSON v1, /api/rest), at your Actionstep instance's API base URL, which you enter when connecting (path /api)

**Built from**

Actionstep's documentation, read 23 October 2026[docs.actionstep.com](https://docs.actionstep.com/endpoint-resources/) [docs.actionstep.com](https://docs.actionstep.com/downloads/Platform-JSON-V1-public-API-postman-collection.json)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

145 of 145 reads, for up to an hour; a write clears what it affects

**Shared entities**

5, so ask can line Actionstep up with your other systems

**Data**

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

Capabilities

## What an AI agent can do in Actionstep.

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

- **145** read look, never change
- **79** write create and update
- **33** destructive wait for a confirmation

1. ### Contact documents
   5
   2 read · 2 write · 1 destructive
   Create a contact document · List contact documents · Get a contact document · Update a contact document
2. ### Contact folders
   5
   2 read · 2 write · 1 destructive
   Create a contact folder · List contact folders · Get a contact folder · Update a contact folder
3. ### Contact notes
   5
   2 read · 2 write · 1 destructive
   List contact notes · Create a contact note · Get a contact note · Update a contact note
4. ### Data collection field dropdown choices
   5
   2 read · 2 write · 1 destructive
   Create a data collection field dropdown choice · List data collection field dropdown choices · Get a data collection field dropdown choice · Update a data collection field dropdown choice
5. ### Data collection fields
   5
   2 read · 2 write · 1 destructive
   Create a data collection field · List data collection fields · Get a data collection field · Update a data collection field
6. ### Data collections
   5
   2 read · 2 write · 1 destructive
   Create a data collection · List data collections · Get a data collection · Update a data collection
7. ### Disbursements
   5
   2 read · 2 write · 1 destructive
   Create a disbursement · List disbursements · Get a disbursement · Update a disbursement
8. ### Email associations
   5
   2 read · 2 write · 1 destructive
   Create an email association · List email associations · Get an email association · Update an email association

**70 more areas · 217 actions**

- Email attachments **5**
- Emails **5**
- File notes **5**
- Gender types **5**
- Matter documents **5**
- Matter netdocuments settings **5**
- Matter rates **5**
- Matter type folders **5**
- Matter type participant types **5**
- Participant data field dropdown choices **5**
- Participant notification methods **5**
- Participant type data fields **5**
- Phone records **5**
- Rest hooks **5**
- Tasks **5**
- Time entries **5**
- Time records **5**
- Utbms codes **5**
- Calendar appointments **4**
- Contact relationships **4**
- Data collection record values **4**
- Data collection records **4**
- Matter folders **4**
- Matter participants **4**
- Participant relationship types **4**
- Participant types **4**
- Participants **4**
- Quick codes **4**
- Scratch notes **4**
- SMS **4**
- Matter bill settings **3**
- Matter participant data field values **3**
- Matters **3**
- Participant default types **3**
- Users **3**
- Billing preferences **2**
- Countries **2**
- Currencies **2**
- Divisions **2**
- Document templates **2**
- Matter creation **2**
- Matter permissions **2**
- Matter step changes **2**
- Matter types **2**
- Nodes **2**
- Participant data field values **2**
- Rate custom values **2**
- Rates **2**
- Roles **2**
- Sale purchase types **2**
- Settings **2**
- Step data fields **2**
- Step messages **2**
- Step participant types **2**
- Step related matter types **2**
- Step tasks **2**
- Steps **2**
- Tags **2**
- Task templates **2**
- Tax codes **2**
- Time record activities **2**
- Units **2**
- User group members **2**
- User groups **2**
- Bills **1**
- Calendars **1**
- Cultural identities **1**
- Disability statuses **1**
- Primary languages **1**
- Reporting **1**

Top actions

## The Actionstep API, shaped for agents.

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

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `actionstep.tasks.list` List tasks | List Actionstep tasks, walking every page. | read | `work.task.list` 122 connectors |
| `actionstep.matters.list` List matters | List Actionstep matters, walking every page. | read | `work.project.list` 109 connectors |
| `actionstep.time_entries.list` List time entries | List Actionstep time entries, walking every page. | read | `work.time_entry.list` 59 connectors |
| `actionstep.tasks.create` Create a task | Create an Actionstep task. | write | `work.task.create` 127 connectors |
| `actionstep.matter_creation.create` Create a matter | Create a new Actionstep matter (actioncreate) of the given matter type. | write | `work.project.create` 102 connectors |
| `actionstep.participants.list` List participants (contacts) | List Actionstep participants (contacts), walking every page. | read | `crm.contact.list` 177 connectors |
| `actionstep.time_entries.create` Create a time entry | Create an Actionstep time entry. | write | `work.time_entry.create` 56 connectors |
| `actionstep.tasks.delete` Delete a task | Delete an Actionstep task (answers 204). | destructive | `work.task.delete` 107 connectors |
| `actionstep.contact_notes.list` List contact notes | List Actionstep contact notes, walking every page. | read | `crm.contact_note.list` 29 connectors |
| `actionstep.participants.create` Create a participant (contact) | Create an Actionstep participant (contact). | write | `crm.contact.create` 161 connectors |
| `actionstep.users.list` List system users | List Actionstep system users, walking every page. | read | `identity.user.list` 474 connectors |
| `actionstep.contact_notes.create` Create a contact note | Create an Actionstep contact note. | write | `crm.contact_note.create` 28 connectors |

Try it

## Prompts to paste into Claude.

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

1. Read read
   Which Actionstep tasks are overdue, and who owns each one?
   calls `actionstep.tasks.list`
2. Write write
   Create a task in Actionstep. Show me exactly what you will send before you save it.
   calls `actionstep.tasks.create`
3. Across systems read
   Which contacts are in both Actionstep and HaloPSA, and how many are in only one of them?
   calls `actionstep.participants.list` `halopsa.users.list`

Across your systems

## Actionstep, joined to the rest of your business.

One `ask` fetches from Actionstep and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- Which contacts are in both Actionstep and HaloPSA, and how many are in only one of them?
  `actionstep.participants.list` + `halopsa.users.list`, on `crm.contact` · [HaloPSA](https://actionlake.com/connectors/halopsa)
- Which contacts are in both Actionstep and HubSpot CRM, and how many are in only one of them?
  `actionstep.participants.list` + `hubspot_crm.contacts.list`, on `crm.contact` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `crm.contact` **192** `work.project` **116** `work.task` **105** `work.time_entry` **40** `crm.contact_note` **9**

ask

```
ask {
  intent: "which contacts are in both Actionstep and HaloPSA, and how many are in only one of them",
  steps: [
    { action: "actionstep.participants.list", as: "people", input: {}, limit: 100, max_pages: 5 },
    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "people",
        right: "people2",
        on: "crm.contact",
        group_by: "people.email",
        select: ["people.email", "count(people2.id) as in_halopsa"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Actionstep

## Destructive actions wait for a yes.

33 Actionstep actions are destructive. The first 10:

- Delete a task `actionstep.tasks.delete`
- Delete a time entry `actionstep.time_entries.delete`
- Delete a contact note `actionstep.contact_notes.delete`
- Delete a calendar appointment `actionstep.calendar_appointments.delete`
- Delete a file note `actionstep.file_notes.delete`
- Delete a phone record `actionstep.phone_records.delete`
- Delete an email `actionstep.emails.delete`
- Delete an REST hook subscription `actionstep.rest_hooks.delete`
- Delete a matter document `actionstep.matter_documents.delete`
- Delete a UTBMS code `actionstep.utbms_codes.delete`

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 actionstep.tasks.delete confirm_policy: **human**

Delete a task?

**intent:** the user asked me to delete a task

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

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "actionstep-agent",
  allowed_actions: ["actionstep.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "actionstep.tasks.delete", approver: "lead@example.com" },
    { match: "actionstep.time_entries.delete", approver: "lead@example.com" },
    { match: "actionstep.contact_notes.delete", approver: "lead@example.com" }
  ]
}
```

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

Cost

## What Actionstep costs on actionlake.

Every Actionstep action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Actionstep 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 257 Actionstep actions
- 257 actions page each page of a long list is one call
- 145 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 Actionstep action.

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

**Contact documents 5**

- `actionstep.contact_documents.create` Create a contact document write
- `actionstep.contact_documents.delete` Delete a contact document destructive
- `actionstep.contact_documents.get` Get a contact document read
- `actionstep.contact_documents.list` List contact documents read
- `actionstep.contact_documents.update` Update a contact document write

**Contact folders 5**

- `actionstep.contact_folders.create` Create a contact folder write
- `actionstep.contact_folders.delete` Delete a contact folder destructive
- `actionstep.contact_folders.get` Get a contact folder read
- `actionstep.contact_folders.list` List contact folders read
- `actionstep.contact_folders.update` Update a contact folder write

**Contact notes 5**

- `actionstep.contact_notes.create` Create a contact note write
- `actionstep.contact_notes.delete` Delete a contact note destructive
- `actionstep.contact_notes.get` Get a contact note read
- `actionstep.contact_notes.list` List contact notes read
- `actionstep.contact_notes.update` Update a contact note write

**Data collection field dropdown choices 5**

- `actionstep.data_collection_field_dropdown_choices.create` Create a data collection field dropdown choice write
- `actionstep.data_collection_field_dropdown_choices.delete` Delete a data collection field dropdown choice destructive
- `actionstep.data_collection_field_dropdown_choices.get` Get a data collection field dropdown choice read
- `actionstep.data_collection_field_dropdown_choices.list` List data collection field dropdown choices read
- `actionstep.data_collection_field_dropdown_choices.update` Update a data collection field dropdown choice write

**Data collection fields 5**

- `actionstep.data_collection_fields.create` Create a data collection field write
- `actionstep.data_collection_fields.delete` Delete a data collection field destructive
- `actionstep.data_collection_fields.get` Get a data collection field read
- `actionstep.data_collection_fields.list` List data collection fields read
- `actionstep.data_collection_fields.update` Update a data collection field write

**Data collections 5**

- `actionstep.data_collections.create` Create a data collection write
- `actionstep.data_collections.delete` Delete a data collection destructive
- `actionstep.data_collections.get` Get a data collection read
- `actionstep.data_collections.list` List data collections read
- `actionstep.data_collections.update` Update a data collection write

**Disbursements 5**

- `actionstep.disbursements.create` Create a disbursement write
- `actionstep.disbursements.delete` Delete a disbursement destructive
- `actionstep.disbursements.get` Get a disbursement read
- `actionstep.disbursements.list` List disbursements read
- `actionstep.disbursements.update` Update a disbursement write

**Email associations 5**

- `actionstep.email_associations.create` Create an email association write
- `actionstep.email_associations.delete` Delete an email association destructive
- `actionstep.email_associations.get` Get an email association read
- `actionstep.email_associations.list` List email associations read
- `actionstep.email_associations.update` Update an email association write

**Email attachments 5**

- `actionstep.email_attachments.create` Create an email attachment write
- `actionstep.email_attachments.delete` Delete an email attachment destructive
- `actionstep.email_attachments.get` Get an email attachment read
- `actionstep.email_attachments.list` List email attachments read
- `actionstep.email_attachments.update` Update an email attachment write

**Emails 5**

- `actionstep.emails.create` Create an email write
- `actionstep.emails.delete` Delete an email destructive
- `actionstep.emails.get` Get an email read
- `actionstep.emails.list` List emails read
- `actionstep.emails.update` Update an email write

**File notes 5**

- `actionstep.file_notes.create` Create a file note write
- `actionstep.file_notes.delete` Delete a file note destructive
- `actionstep.file_notes.get` Get a file note read
- `actionstep.file_notes.list` List file notes read
- `actionstep.file_notes.update` Update a file note write

**Gender types 5**

- `actionstep.gender_types.create` Create a gender type write
- `actionstep.gender_types.delete` Delete a gender type destructive
- `actionstep.gender_types.get` Get a gender type read
- `actionstep.gender_types.list` List gender types read
- `actionstep.gender_types.update` Update a gender type write

**Matter documents 5**

- `actionstep.matter_documents.create` Create a matter document write
- `actionstep.matter_documents.delete` Delete a matter document destructive
- `actionstep.matter_documents.get` Get a matter document read
- `actionstep.matter_documents.list` List matter documents read
- `actionstep.matter_documents.update` Update a matter document write

**Matter netdocuments settings 5**

- `actionstep.matter_netdocuments_settings.create` Create a matter NetDocuments settings record write
- `actionstep.matter_netdocuments_settings.delete` Delete a matter NetDocuments settings record destructive
- `actionstep.matter_netdocuments_settings.get` Get a matter NetDocuments settings record read
- `actionstep.matter_netdocuments_settings.list` List matter NetDocuments settings read
- `actionstep.matter_netdocuments_settings.update` Update a matter NetDocuments settings record write

**Matter rates 5**

- `actionstep.matter_rates.create` Create a matter rate override write
- `actionstep.matter_rates.delete` Delete a matter rate override destructive
- `actionstep.matter_rates.get` Get a matter rate override read
- `actionstep.matter_rates.list` List matter rate overrides read
- `actionstep.matter_rates.update` Update a matter rate override write

**Matter type folders 5**

- `actionstep.matter_type_folders.create` Create a matter type folder write
- `actionstep.matter_type_folders.delete` Delete a matter type folder destructive
- `actionstep.matter_type_folders.get` Get a matter type folder read
- `actionstep.matter_type_folders.list` List matter type folders read
- `actionstep.matter_type_folders.update` Update a matter type folder write

**Matter type participant types 5**

- `actionstep.matter_type_participant_types.create` Create a matter type participant type write
- `actionstep.matter_type_participant_types.delete` Delete a matter type participant type destructive
- `actionstep.matter_type_participant_types.get` Get a matter type participant type read
- `actionstep.matter_type_participant_types.list` List matter type participant types read
- `actionstep.matter_type_participant_types.update` Update a matter type participant type write

**Participant data field dropdown choices 5**

- `actionstep.participant_data_field_dropdown_choices.create` Create a participant data field dropdown choice write
- `actionstep.participant_data_field_dropdown_choices.delete` Delete a participant data field dropdown choice destructive
- `actionstep.participant_data_field_dropdown_choices.get` Get a participant data field dropdown choice read
- `actionstep.participant_data_field_dropdown_choices.list` List participant data field dropdown choices read
- `actionstep.participant_data_field_dropdown_choices.update` Update a participant data field dropdown choice write

**Participant notification methods 5**

- `actionstep.participant_notification_methods.create` Create a participant additional notification method write
- `actionstep.participant_notification_methods.delete` Delete a participant additional notification method destructive
- `actionstep.participant_notification_methods.get` Get a participant additional notification method read
- `actionstep.participant_notification_methods.list` List participant additional notification methods read
- `actionstep.participant_notification_methods.update` Update a participant additional notification method write

**Participant type data fields 5**

- `actionstep.participant_type_data_fields.create` Create a participant type data field write
- `actionstep.participant_type_data_fields.delete` Delete a participant type data field destructive
- `actionstep.participant_type_data_fields.get` Get a participant type data field read
- `actionstep.participant_type_data_fields.list` List participant type data fields read
- `actionstep.participant_type_data_fields.update` Update a participant type data field write

**Phone records 5**

- `actionstep.phone_records.create` Create a phone record write
- `actionstep.phone_records.delete` Delete a phone record destructive
- `actionstep.phone_records.get` Get a phone record read
- `actionstep.phone_records.list` List phone records read
- `actionstep.phone_records.update` Update a phone record write

**Rest hooks 5**

- `actionstep.rest_hooks.create` Create an REST hook subscription write
- `actionstep.rest_hooks.delete` Delete an REST hook subscription destructive
- `actionstep.rest_hooks.get` Get an REST hook subscription read
- `actionstep.rest_hooks.list` List REST hook subscriptions read
- `actionstep.rest_hooks.update` Update an REST hook subscription write

**Tasks 5**

- `actionstep.tasks.create` Create a task write
- `actionstep.tasks.delete` Delete a task destructive
- `actionstep.tasks.get` Get a task read
- `actionstep.tasks.list` List tasks read
- `actionstep.tasks.update` Update a task write

**Time entries 5**

- `actionstep.time_entries.create` Create a time entry write
- `actionstep.time_entries.delete` Delete a time entry destructive
- `actionstep.time_entries.get` Get a time entry read
- `actionstep.time_entries.list` List time entries read
- `actionstep.time_entries.update` Update a time entry write

**Time records 5**

- `actionstep.time_records.create` Create a time record write
- `actionstep.time_records.delete` Delete a time record destructive
- `actionstep.time_records.get` Get a time record read
- `actionstep.time_records.list` List time records read
- `actionstep.time_records.update` Update a time record write

**Utbms codes 5**

- `actionstep.utbms_codes.create` Create a UTBMS code write
- `actionstep.utbms_codes.delete` Delete a UTBMS code destructive
- `actionstep.utbms_codes.get` Get a UTBMS code read
- `actionstep.utbms_codes.list` List UTBMS codes read
- `actionstep.utbms_codes.update` Update a UTBMS code write

**Calendar appointments 4**

- `actionstep.calendar_appointments.create` Create a calendar appointment write
- `actionstep.calendar_appointments.delete` Delete a calendar appointment destructive
- `actionstep.calendar_appointments.list` List calendar appointments read
- `actionstep.calendar_appointments.update` Update a calendar appointment write

**Contact relationships 4**

- `actionstep.contact_relationships.create` Create a contact relationship write
- `actionstep.contact_relationships.delete` Delete a contact relationship destructive
- `actionstep.contact_relationships.get` Get a contact relationship read
- `actionstep.contact_relationships.list` List contact relationships read

**Data collection record values 4**

- `actionstep.data_collection_record_values.create` Create data collection record values write
- `actionstep.data_collection_record_values.get` Get a data collection record value read
- `actionstep.data_collection_record_values.list` List data collection record values read
- `actionstep.data_collection_record_values.update` Update a data collection record value write

**Data collection records 4**

- `actionstep.data_collection_records.create` Create a data collection record write
- `actionstep.data_collection_records.delete` Delete a data collection record destructive
- `actionstep.data_collection_records.get` Get a data collection record read
- `actionstep.data_collection_records.list` List data collection records read

**Matter folders 4**

- `actionstep.matter_folders.create` Create a matter folder write
- `actionstep.matter_folders.get` Get a matter folder read
- `actionstep.matter_folders.list` List matter folders read
- `actionstep.matter_folders.update` Update a matter folder write

**Matter participants 4**

- `actionstep.matter_participants.create` Create a matter participant write
- `actionstep.matter_participants.delete` Delete a matter participant destructive
- `actionstep.matter_participants.get` Get a matter participant read
- `actionstep.matter_participants.list` List matter participants read

**Participant relationship types 4**

- `actionstep.participant_relationship_types.create` Create a participant relationship type write
- `actionstep.participant_relationship_types.delete` Delete a participant relationship type destructive
- `actionstep.participant_relationship_types.get` Get a participant relationship type read
- `actionstep.participant_relationship_types.list` List participant relationship types read

**Participant types 4**

- `actionstep.participant_types.create` Create a participant type write
- `actionstep.participant_types.get` Get a participant type read
- `actionstep.participant_types.list` List participant types read
- `actionstep.participant_types.update` Update a participant type write

**Participants 4**

- `actionstep.participants.create` Create a participant (contact) write
- `actionstep.participants.get` Get a participant (contact) read
- `actionstep.participants.list` List participants (contacts) read
- `actionstep.participants.update` Update a participant (contact) write

**Quick codes 4**

- `actionstep.quick_codes.create` Create a quick code write
- `actionstep.quick_codes.get` Get a quick code read
- `actionstep.quick_codes.list` List quick codes read
- `actionstep.quick_codes.update` Update a quick code write

**Scratch notes 4**

- `actionstep.scratch_notes.create` Create a scratch note write
- `actionstep.scratch_notes.delete` Delete a scratch note destructive
- `actionstep.scratch_notes.list` List scratch notes read
- `actionstep.scratch_notes.update` Update a scratch note write

**SMS 4**

- `actionstep.sms.create` Create an SMS record write
- `actionstep.sms.get` Get an SMS record read
- `actionstep.sms.list` List SMS records read
- `actionstep.sms.update` Update an SMS record write

**Matter bill settings 3**

- `actionstep.matter_bill_settings.get` Get a matter bill settings record read
- `actionstep.matter_bill_settings.list` List matter bill settings read
- `actionstep.matter_bill_settings.update` Update a matter bill settings record write

**Matter participant data field values 3**

- `actionstep.matter_participant_data_field_values.get` Get a matter participant data field value read
- `actionstep.matter_participant_data_field_values.list` List matter participant data field values read
- `actionstep.matter_participant_data_field_values.update` Update a matter participant data field value write

**Matters 3**

- `actionstep.matters.get` Get a matter read
- `actionstep.matters.list` List matters read
- `actionstep.matters.update` Update a matter write

**Participant default types 3**

- `actionstep.participant_default_types.create` Create a participant default type write
- `actionstep.participant_default_types.delete` Delete a participant default type destructive
- `actionstep.participant_default_types.list` List participant default types read

**Users 3**

- `actionstep.users.current` Get the connected user read
- `actionstep.users.get` Get a system user read
- `actionstep.users.list` List system users read

**Billing preferences 2**

- `actionstep.billing_preferences.get` Get a billing preference read
- `actionstep.billing_preferences.list` List billing preferences read

**Countries 2**

- `actionstep.countries.get` Get a country read
- `actionstep.countries.list` List countries read

**Currencies 2**

- `actionstep.currencies.get` Get a currency read
- `actionstep.currencies.list` List currencies read

**Divisions 2**

- `actionstep.divisions.get` Get a division read
- `actionstep.divisions.list` List divisions read

**Document templates 2**

- `actionstep.document_templates.get` Get a document template read
- `actionstep.document_templates.list` List document templates read

**Matter creation 2**

- `actionstep.matter_creation.create` Create a matter write
- `actionstep.matter_creation.get` Get the new-matter template for a matter type read

**Matter permissions 2**

- `actionstep.matter_permissions.get` Get a matter permission read
- `actionstep.matter_permissions.list` List matter permissions read

**Matter step changes 2**

- `actionstep.matter_step_changes.create` Create a matter step change write
- `actionstep.matter_step_changes.get` Get a matter step change read

**Matter types 2**

- `actionstep.matter_types.get` Get a matter type read
- `actionstep.matter_types.list` List matter types read

**Nodes 2**

- `actionstep.nodes.get` Get a workflow node read
- `actionstep.nodes.list` List workflow nodes read

**Participant data field values 2**

- `actionstep.participant_data_field_values.get` Get a participant data field value read
- `actionstep.participant_data_field_values.update` Update a participant data field value write

**Rate custom values 2**

- `actionstep.rate_custom_values.get` Get a rate custom value read
- `actionstep.rate_custom_values.list` List rate custom values read

**Rates 2**

- `actionstep.rates.get` Get a rate read
- `actionstep.rates.list` List rates read

**Roles 2**

- `actionstep.roles.get` Get a system role read
- `actionstep.roles.list` List system roles read

**Sale purchase types 2**

- `actionstep.sale_purchase_types.get` Get a sale/purchase type read
- `actionstep.sale_purchase_types.list` List sale/purchase types read

**Settings 2**

- `actionstep.settings.get` Get a setting read
- `actionstep.settings.list` List settings read

**Step data fields 2**

- `actionstep.step_data_fields.get` Get a step data field read
- `actionstep.step_data_fields.list` List step data fields read

**Step messages 2**

- `actionstep.step_messages.get` Get a step message read
- `actionstep.step_messages.list` List step messages read

**Step participant types 2**

- `actionstep.step_participant_types.get` Get a step participant type read
- `actionstep.step_participant_types.list` List step participant types read

**Step related matter types 2**

- `actionstep.step_related_matter_types.get` Get a step related matter type read
- `actionstep.step_related_matter_types.list` List step related matter types read

**Step tasks 2**

- `actionstep.step_tasks.get` Get a step task read
- `actionstep.step_tasks.list` List step tasks read

**Steps 2**

- `actionstep.steps.get` Get a workflow step read
- `actionstep.steps.list` List workflow steps read

**Tags 2**

- `actionstep.tags.get` Get a tag read
- `actionstep.tags.list` List tags read

**Task templates 2**

- `actionstep.task_templates.get` Get a task template read
- `actionstep.task_templates.list` List task templates read

**Tax codes 2**

- `actionstep.tax_codes.get` Get a tax code read
- `actionstep.tax_codes.list` List tax codes read

**Time record activities 2**

- `actionstep.time_record_activities.get` Get a time record activity read
- `actionstep.time_record_activities.list` List time record activities read

**Units 2**

- `actionstep.units.get` Get a unit read
- `actionstep.units.list` List units read

**User group members 2**

- `actionstep.user_group_members.get` Get a user group membership read
- `actionstep.user_group_members.list` List user group memberships read

**User groups 2**

- `actionstep.user_groups.get` Get a user group read
- `actionstep.user_groups.list` List user groups read

**Bills 1**

- `actionstep.bills.list` List bills read

**Calendars 1**

- `actionstep.calendars.list` List calendars read

**Cultural identities 1**

- `actionstep.cultural_identities.list` List cultural identity values read

**Disability statuses 1**

- `actionstep.disability_statuses.list` List disability status values read

**Primary languages 1**

- `actionstep.primary_languages.list` List primary languages read

**Reporting 1**

- `actionstep.reporting.export_url` Get the reporting data export URL read

Questions

## The Actionstep MCP server, answered.

**Is there an Actionstep MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 257 Actionstep actions across contact documents, contact folders, contact notes and data collection field dropdown choices, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Actionstep.

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

Your own Actionstep OAuth app, registered with Actionstep (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Actionstep app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. Plus your host. The free call account { op: "connections.requirements", service: "actionstep" } lists exactly what to paste.

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

Only if its key allows it, and only with an explicit confirmation. 33 Actionstep actions are destructive, including delete a task, delete a time entry and delete a contact note. 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 Actionstep API limit?**

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

**What does an Actionstep action cost?**

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

The Actionstep REST API (Platform JSON v1, /api/rest) at your Actionstep instance's API base URL, which you enter when connecting (path /api). It is built from Actionstep's documentation as read on 23 October 2026. 257 actions in 78 areas, each one in the signed service file (version 1.0.0).

**Can I combine Actionstep with my other systems?**

Yes. ask joins Actionstep to HaloPSA or HubSpot CRM on the same customer and returns the answer rather than every row. Actionstep maps crm.contact, which 192 other connectors also map.

**Does actionlake keep my Actionstep data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, 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 Actionstep 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 Actionstep

Shares the most action names with

- [Clio Manage 41](https://actionlake.com/connectors/clio-manage)
- [Smokeball 28](https://actionlake.com/connectors/smokeball)
- [Harvest 23](https://actionlake.com/connectors/harvest)
- [Healthie 23](https://actionlake.com/connectors/healthie)
- [FreeAgent 21](https://actionlake.com/connectors/freeagent)
- [Hubstaff 17](https://actionlake.com/connectors/hubstaff)

Joins with, on shared entities

- [Productive.io 4](https://actionlake.com/connectors/productive-io)
- [Kaseya BMS 4](https://actionlake.com/connectors/kaseya-bms)
- [Planhat 4](https://actionlake.com/connectors/planhat)
- [Fergus 4](https://actionlake.com/connectors/fergus)
- [ConnectWise PSA 3](https://actionlake.com/connectors/connectwise-psa)
- [HaloPSA 3](https://actionlake.com/connectors/halopsa)

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 Actionstep; the name is the vendor's own. Counts are from the Actionstep service file, version 1.0.0.

## Give your agent Actionstep today.

[Connect Actionstep 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/actionstep
More: https://actionlake.com/llms.txt
