[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# AppFlowy API and MCP server: Let your AI agent keep your AppFlowy workspace tidy.

> AppFlowy Cloud documents a small REST API for workspaces, the folder tree and database rows, and offers no MCP server for appflowy.com workspaces (checked 25 Oct 2026). Its official MCP service ships with the commercial self-hosted edition. Cotlet runs 15 AppFlowy tools hosted, 7 of them beyond what the public API documents.

Read AppFlowy workspaces, pages and database records through MCP or REST. Connect an agent or prepare workspace reports with automation tools and scripts.

[MCP setup](https://cotlet.dev/integrations/appflowy-api-mcp-server.md#connect)
[REST API guide](https://cotlet.dev/integrations/appflowy-api-mcp-server.md#rest-api)

- Free 7-day trial, no card
- Unofficial, not affiliated with AppFlowy
- Page: https://cotlet.dev/integrations/appflowy-api-mcp-server

## What can you automate in AppFlowy?

- Log requests as database rows
- Move Status on many rows at once
- Write the weekly status summary
- Start the meeting notes page
- Restore pages from Trash
- Share or publish a client page

## Does AppFlowy have an MCP server or an API?

- The documented API signs in through a GoTrue token endpoint that hands out access and refresh tokens. There is no API key to paste into a tool.
- Zapier has 2 polled triggers (new or updated database item) and 2 actions (create or upsert a database item), also as Zapier MCP. n8n has no AppFlowy node.
- Page text, Trash, members, sharing and publishing appear only in the Swagger docs of a self-hosted server, at your own domain.

| What you need | AppFlowy Cloud API | GitHub MCP server | Cotlet |
|---|---|---|---|
| Read and add database rows | Yes, documented | Yes | Yes |
| Page text, Trash, sharing, publishing | Not documented | Yes, most servers | Yes |
| Sign-in | Token you refresh | Your password in a file | Your own browser session |
| Runs with your computer off | If you host the script | No | Yes, hosted |
| Fixed for you when AppFlowy changes | Yes, official | No | Yes, tested every 12 h |

Checked 25 Oct 2026. Sources: [AppFlowy Docs: AppFlowy Cloud OpenAPI reference](https://github.com/AppFlowy-IO/AppFlowy-Docs/blob/main/documentation/appflowy-cloud/openapi/README.md), [AppFlowy: Pricing](https://appflowy.com/pricing), [AppFlowy self-hosted OpenAPI guide](https://github.com/AppFlowy-IO/AppFlowy-SelfHost-Commercial/blob/main/docs/OPENAPI.md), [Zapier: AppFlowy integrations](https://zapier.com/apps/appflowy/integrations)

## How does Cotlet connect to AppFlowy?

1. **Sign in to AppFlowy.** Use your own account in its Cotlet Cloud Browser.
2. **Choose MCP or REST.** Connect your agent or create a Cotlet API key.
3. **Run your workflow.** Ask your agent or send an HTTP request.

We never see your AppFlowy password, and nothing is shared or published until you approve it.

## Connect AppFlowy to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

1. **Turn on AppFlowy for agents.** Make a Cotlet account, sign in to appflowy.com in the AppFlowy Cloud Browser and press Enable for agents.
2. **Give your agent the address.** Put https://cotlet.dev/mcp/v1 in the MCP or connector settings of your client.
3. **Authorize it.** Chat apps open a Cotlet sign-in. Code editors, n8n and scripts send an API key made in the console.

AppFlowy shares `https://cotlet.dev/mcp/v1` with every other app you enable. Turned AppFlowy on after you connected? Refresh the connector and the AppFlowy tools appear.

Claude:

```
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-appflowy \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

ChatGPT:

```
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
```

Cursor:

```
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-appflowy": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
```

Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet-appflowy]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

n8n:

```
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: appflowy_read
```

Make, Zapier:

```
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: appflowy_write
```

## How to use the AppFlowy REST API

### Create your Cotlet API key

Create a Cotlet API key with access to AppFlowy and its read operations. Store it as `COTLET_API_KEY` in your environment or automation platform's credential store.

Sign in to AppFlowy in its Cotlet Cloud Browser and enable the app for agents. Your AppFlowy workspace role and page permissions determine accessible records.

### Make your first AppFlowy API request

cURL:

```
curl https://cotlet.dev/api/v1/appflowy/workspaces \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

### Read workspace IDs before pages and rows

A successful REST call puts the tool output in `result`. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt:

```
{
  "status": "success",
  "app": "appflowy",
  "tool": "list_workspaces",
  "result": {
    "workspaces": [
      {
        "workspace_id": "b7d1e0a2-3c4f-4a55-9a10-5f2d8e6c1b77",
        "name": "Studio Notes",
        "role": "owner"
      }
    ]
  }
}
```

Read `result.workspaces` and use a returned `workspace_id` in page and database reads. Workspace listing has no pagination input.

The page tree defaults to depth two and omits inaccessible pages. It is a navigation view, not an unlimited document export.

Database row lists use fixed pages of 50 records. Pass returned `next_cursor` unchanged as `cursor` until null, keeping workspace, database and updated-since filters fixed; there is no limit input.

### AppFlowy workflows for agents and automations

| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read workspaces, page trees and permitted pages into a document index for your chosen destination. |
| Make | HTTP > Make a request | Combine database fields and paged database rows into a reporting sheet, comparing row IDs and changed cells. |
| Python or Node.js | REST API | Read trash and member records into an owner access review without restoring or sharing content. |

Send `Authorization: Bearer <your Cotlet API key>` in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads AppFlowy; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The [API and MCP reference](https://cotlet.dev/integrations/appflowy-api-mcp-server.md#tools) lists operations and inputs. The [REST API guide](https://cotlet.dev/docs/api.md) explains authentication, errors and approvals.

## AppFlowy API endpoints and MCP tools

### Workspaces, spaces and members

Start here: every other tool takes a workspace_id. Only the owner sees the full member list.

- **List workspaces** (`list_workspaces`, read): List the workspaces your AppFlowy account belongs to.
- **Get page tree** (`get_page_tree`, read): Read the sidebar of a workspace: spaces and the pages inside them.
- **List members** (`list_members`, read): List the members and guests of a workspace with their roles.

### Databases and rows

Grid, board and calendar databases. Cells are keyed by field name, and select values must match an existing option.

- **List databases** (`list_databases`, read): List the grid, board and calendar databases in a workspace.
- **List database fields** (`list_database_fields`, read): List the fields (columns) of a database with their types.
- **List database rows** (`list_database_rows`, read): List the rows of a database with their cells.
- **Get database row** (`get_database_row`, read): Read one row with all its cells and the page text inside it.
- **Create database row** (`create_database_row`, write): Add a row to a database.
- **Update database row** (`update_database_row`, write): Change cells of an existing row.

### Pages and Trash

Page text comes back as Markdown, images as links. New pages take Markdown; editing a block inside an existing page is not built.

- **Get page** (`get_page`, read): Read the title and text of one document page.
- **Create page** (`create_page`, write): Create a document page in a space, or under another page.
- **List trash** (`list_trash`, read): List pages and database rows in Trash.
- **Restore from trash** (`restore_from_trash`, write): Move a page or database row out of Trash.

### Sharing and publishing

Both reach people outside your sidebar, so both wait for your OK. Guests outside the workspace need Pro.

- **Share page** (`share_page`, write, asks first): Give a person access to a page by email.
- **Publish page** (`publish_page`, write, asks first): Publish a page to the web and return its public link.

Inputs, REST path and example response of every tool: https://cotlet.dev/integrations/appflowy-api-mcp-server#tools

## Who can see my AppFlowy session, and how do I revoke it?

- **What we store.** The signed-in AppFlowy browser profile, AES-256-GCM, in Finland. No password.
- **What your agent gets.** The 15 AppFlowy tools. Never a token or cookie.
- **What the session sees.** The pages and databases your role and page permissions open.
- **What no tool does.** Delete pages or rows, remove members, change billing or settings.
- **If AppFlowy signs you out.** An email with a sign-in link reaches you. We never sign in for you.
- **How to cut access.** Disable for agents, reset the browser or delete the API key.

cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory ([live results](https://cotlet.dev/security.md)). We have no SOC 2 report or third-party pentest yet.

## Is it against AppFlowy's terms? Account safety

> You are responsible for maintaining the confidentiality and security of your Account credentials and may not disclose your credentials to any Third Party.
>
> [AppFlowy Terms and Conditions, Use of Services, 26 Jun 2024](https://appflowy.com/terms)

The terms name no bots, scrapers or automated access. They do ask you not to use "unsupported software" and to use the service "as described in the documentation". AppFlowy may suspend access when use "disrupts or poses a security risk" to its systems, with written notice. GitHub servers that keep your password in a file sit closest to the credentials rule; Cotlet never receives the password. We found no public case of an AppFlowy account closed for automation (checked 25 Oct 2026).

How we keep your account looking like you:

- Your own AppFlowy account, signed in by you
- One Cloud Browser with its own IP and cookies
- Sharing and publishing wait for your OK
- No tool deletes a page, row or member
- If AppFlowy objects, we pause the AppFlowy tools for everyone within 24 h

> Spread a big import, like hundreds of rows, over several runs. Short bursts of writes are what could look like a load problem.

## What happens when AppFlowy changes?

- **12 h** between tests of the AppFlowy reads and row writes
- **24 h** between tests of sharing and publishing
- **$0** for a call to an AppFlowy tool paused for a fix

AppFlowy releases often (its site announced desktop 0.14.10 on 25 Oct 2026), and the web app changes with each release. A renamed field or moved menu is fixed on our side. [status.cotlet.dev](https://status.cotlet.dev) checks the site, console and API every 3 minutes.

## Approvals, undo and mistakes

1. **Finds the page.** Walks the sidebar with get_page_tree.
2. **Reads it first.** get_page shows the text that would go public.
3. **Waits for your OK.** The share or publish shows in your Cotlet console.
4. **Returns the link.** Invite status or the public URL of the page.

| Action | Undo |
|---|---|
| Create a row or page | Move it to Trash in AppFlowy |
| Update row cells | Yes, the old values come back in the answer |
| Restore from Trash | Move it to Trash again |
| Share a page | Change their access in Share; the invite email is out |
| Publish a page | Unpublish it; copies others made stay |

2 of 15 tools ask first: share_page and publish_page, the two that reach people outside the workspace. Rows, pages and restores stay inside it and run at once. Turn the wait off per tool for a scheduled run.

> Your page permissions still apply: a Can View page cannot be edited by the agent either.

MCP call:

```
{
  "name": "create_database_row",
  "arguments": {
    "workspace_id": "b7d1e0a2-3c4f-4a55-9a10-5f2d8e6c1b77",
    "database_id": "6d02be58-91a7-4e0c-b3f4-2c8e7d10a965",
    "cells": {
      "Name": "Prepare client demo",
      "Status": "To do",
      "Points": 3
    }
  }
}
```

REST:

```
curl -X POST https://cotlet.dev/api/v1/appflowy/workspaces/b7d1e0a2-3c4f-4a55-9a10-5f2d8e6c1b77/databases/6d02be58-91a7-4e0c-b3f4-2c8e7d10a965/row \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cells":{"Name":"Prepare client demo","Status":"To do","Points":3}}'
```

Tool output:

```
{
  "row_id": "b52e8f09-7a3c-4d61-9c84-e0d2a6f1738b",
  "cells": {
    "Name": "Prepare client demo",
    "Status": "To do",
    "Points": 3
  },
  "created_at": "2026-10-25T08:30:00Z"
}
```

The same tools answer over REST at `/api/v1/appflowy` for cron jobs and scripts, on the same key and price, with no AppFlowy token to refresh. A select value that matches no option fails, and a failed call is free. The tools table lists the REST path of each tool.

## How much does the AppFlowy MCP server cost?

**About $19 a month** for a team of 5 with one busy Tasks database, 3,300 credits. AppFlowy bills its own plan as before.

| Job | Calls | Credits |
|---|---|---|
| Log new requests as rows, each working day | 5 × 22 | 1,100 |
| Weekly status from the Tasks database | 4 × 4 | 160 |
| Set Status on rows after the standup | 9 × 4 | 360 |
| Weekly meeting notes page | 2 × 4 | 80 |
| Share and publish a client page | 4 × 2 | 80 |
| Restore a page from Trash | 2 × 1 | 20 |
| Cloud Browser, 30 days |  | 1,500 |
| Total |  | 3,300 |

- Free 7-day trial, no card
- 10 credits per successful call, MCP or REST
- 50 credits a day for the Cloud Browser
- Works on the free Personal plan too

The month is our own example: about 3 new requests each working day, a weekly report and update, 2 client pages. AppFlowy Pro for 5 members is $60 a month on yearly billing. Dollars at the $29 pack rate.

## AppFlowy MCP server on GitHub, Zapier or hosted: which to use

| Option | What it does | Where it stops |
|---|---|---|
| [weironz/appflowy_mcp](https://github.com/weironz/appflowy_mcp) | The widest one: 128 tools in a Rust binary, block editing, Markdown import and export, comments. Apache-2.0, last commit 22 Oct 2026. | Runs on your computer with your AppFlowy email and password in its env. 9 stars, one maintainer. |
| [LucasXu0/appflowy_mcp](https://github.com/LucasXu0/appflowy_mcp) | Small Python server on the REST API, by a developer whose profile lists AppFlowy (11 stars). | Personal repo, not linked by AppFlowy; last commit 31 Mar 2025. |
| Other GitHub servers | About a dozen more (CAREEMER, Rahulk644, hectormr206 and others), most for databases and pages. | You host them and renew the token or password when it fails. |
| [AppFlowy self-hosted, commercial](https://github.com/AppFlowy-IO/AppFlowy-SelfHost-Commercial) | The official MCP service and the full Swagger API. | Only on a server you run with a paid license, not for appflowy.com workspaces. |

If you want every block of every page and do not mind a password in a local file, weironz/appflowy_mcp does more than we do. If only rows matter, Zapier or the documented API is enough. Cotlet fits when an agent should change rows and pages on a schedule from a hosted address, on your own sign-in, with sharing held for your OK.

## Who runs Cotlet

Behind Cotlet is Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), in business since 2019 and founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the AppFlowy tools go to contact@cotlet.dev.

## AppFlowy API and MCP: questions

### Can I use the AppFlowy API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

### How do I get access?

Sign up free at https://cotlet.dev, find AppFlowy under Integrations in the console and sign in to appflowy.com in its Cloud Browser. The trial starts with your first app and asks for no card.

### Which AppFlowy plan do I need?

Cotlet works in your own account on any plan. The plan still limits what you can do: the Personal plan has one workspace owner, so share_page to a guest needs the Pro plan, where guest editors are unlimited and free (checked 25 Oct 2026). Page permissions apply too: a Can View page cannot be edited.

### Can it edit the text inside a page?

It reads the text of a page and writes text when it creates a page or a row. Editing a block in the middle of an existing page is not built, and the official REST API does not offer it either.

### Does it work with a self-hosted AppFlowy server?

Not today. The tools work on appflowy.com workspaces. On a commercial self-hosted server, AppFlowy's own MCP service and Swagger API are the better route.

### Does AppFlowy have webhooks?

Not in the documented API. The 2 Zapier triggers poll the database for new or changed rows. For an agent, run it on a schedule with list_database_rows and updated_since, so only changed rows come back.

### Can it work in the AppFlowy desktop app?

It works in AppFlowy Cloud, which the desktop and mobile apps sync with. Rows and pages the agent writes show up in your apps after the next sync. Pages kept only on your device, without Cloud, are out of reach.

### Is the MCP server different from the REST API?

Only the way in differs. Both carry the same 15 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

### Is Cotlet affiliated with AppFlowy?

No. Cotlet is independent and not affiliated with AppFlowy Pte. Ltd.

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
