AppFolio MCP Server and API by Cotlet
dev.cotlet/appfolioVersion 1.0.2AppFolio property management software MCP server: create work order, assign work order.
Status
Responds140 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 22:45 UTC
- Latency
- 140 ms
- Remotes responding
- 2 of 2
- Sign-in
- OAuth sign-in, API key
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://cotlet.dev/mcp/v1/appfolioResponds303 msNo sign-in
Claude Code
claude mcp add --transport http appfolio https://cotlet.dev/mcp/v1/appfolio --header 'Authorization: Bearer <YOUR_TOKEN>'Replace <YOUR_TOKEN> before running.
Claude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: appfolio
Remote MCP server URL: https://cotlet.dev/mcp/v1/appfolio
This server expects the header Authorization.Cursor
{
"mcpServers": {
"appfolio": {
"url": "https://cotlet.dev/mcp/v1/appfolio",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}Replace <YOUR_TOKEN> before running.
VS Code
code --add-mcp '{"name":"appfolio","type":"http","url":"https://cotlet.dev/mcp/v1/appfolio","headers":{"Authorization":"Bearer <YOUR_TOKEN>"}}'Replace <YOUR_TOKEN> before running.
Streamable HTTP
https://cotlet.dev/mcp/v1/appfolio/connectSign-in required140 msOAuth sign-in
Claude Code
This server asks for sign-in. Your client opens the sign-in when it connects.
claude mcp add --transport http appfolio https://cotlet.dev/mcp/v1/appfolio/connectClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: appfolio
Remote MCP server URL: https://cotlet.dev/mcp/v1/appfolio/connectCursor
{
"mcpServers": {
"appfolio": {
"url": "https://cotlet.dev/mcp/v1/appfolio/connect"
}
}
}VS Code
code --add-mcp '{"name":"appfolio","type":"http","url":"https://cotlet.dev/mcp/v1/appfolio/connect"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
32 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
appfolio_assign_work_orderAssign work order in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
appfolio_create_work_orderCreate work order in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
appfolio_get_tenant_ledgerGet tenant ledger in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
appfolio_list_open_work_ordersList open work orders in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
appfolio_run_reportRun report in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
appfolio_schedule_work_orderSchedule work order in the user's own AppFolio account from ChatGPT, Claude or any AI agent. Returns how to do it in AppFolio step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's AppFolio Cloud Browser. AppFolio's official API: Partly. | No | Yes | Yes | No |
cotlet_app_guideHow to work in an app by clicking in the user's Cloud Browser with Cotlet's browser tools: which browser to use for this workspace and the sign-in link, the method step by step, the app's screens, menus and actions, notes, and the app's dedicated tools when Cotlet has them. Call it before the first browser step in an app. Works for any web app; one outside Cotlet's catalog gets the general method. Free, no browser session. For AppFolio it covers these actions: Create work order, Assign work order, Schedule work order, List open work orders, Get tenant ledger, Run report. | No | Yes | Yes | No |
cotlet_appsThe apps of the user's workspace and whether each works now: the app account in the user's Cloud Browser (connected, signed out, signed in but not connected), and the one step the user has to take, with the console link. Free. Needs the user's Cotlet API key or sign-in. | No | Yes | Not declared | No |
cotlet_balanceThe user's current credit balance. Free. Needs the user's Cotlet API key or sign-in. | No | Yes | Not declared | No |
cotlet_browser_clickClicks element `element`, or point `x`, `y` of the screenshot; `double` double-clicks, `button: right` right-clicks. Answers the page after it: the elements and text in view, with the same numbers. Says when nothing changed. A link that would open a new tab opens in this one. Buttons that pay or buy, and sign-in and account pages, are refused. | Yes | No | No | Yes |
cotlet_browser_closeEnds the browser session when the task is done: the browser keeps its cookies and sleeps, and the per-minute charge stops. Answers the session's minutes and credits. | No | No | Yes | No |
cotlet_browser_downloadGets the file that clicking `element` (a download link or button) or opening `url` starts, also an image or PDF it only opens: answers its name, type, size and a link valid 15 minutes; CSV, JSON and other text files also as text. | Yes | No | No | Yes |
cotlet_browser_dragDrags from one element or point to another: a card between columns, a piece on a board, a slider's handle. Answers the page after it: the elements and text in view, with the same numbers. | Yes | No | No | Yes |
cotlet_browser_evaluateRuns a JavaScript function body on the page and answers what it returns, as JSON. Use it to extract data the page holds (a table, a list, attributes); act with the other tools. It cannot send requests, click, submit, or read cookies or storage; a filled field's value reads [hidden by Cotlet]. Example: return [...document.querySelectorAll('h2')].map(h => h.innerText) | Yes | No | No | Yes |
cotlet_browser_fill_formFills several fields in one step: text fields take text, drop-downs an option's label, checkboxes, radios and switches true or false. Stops at the first field that fails and names those filled. Does not send the form: click its button after. Answers the page after it: the elements and text in view, with the same numbers. | Yes | No | No | Yes |
cotlet_browser_findFinds `text` on the whole current page, frames included: the elements whose label holds it, with their numbers, and each line of text that holds it. Use it instead of reading or scrolling a long page for one thing. | No | Yes | Yes | Yes |
cotlet_browser_hoverRests the pointer on an element or a point, to open a hover menu, a tooltip or a preview. Answers the page after it: the elements and text in view, with the same numbers. | No | Yes | Yes | Yes |
cotlet_browser_navigateOpens `url` in the current tab, or goes `history` back or forward. Answers the page after it: the elements and text in view, with the same numbers. | No | Yes | No | Yes |
cotlet_browser_openStarts the user's Cloud Browser (a real Chrome on Cotlet, where the user is signed in to their sites) and opens `url`. Call it first. The URL goes to the site's open tab, else to a new tab, so the user's own tabs stay. Answers the page after it: the elements and text in view, with the same numbers. In AppFolio it serves these actions: Create work order, Assign work order, Schedule work order, List open work orders, Get tenant ledger, Run report. | No | Yes | No | Yes |
cotlet_browser_pressPresses a key on the focused element: Enter to send, Tab to the next field, Escape to close a pop-up, arrows in a list or slider, or one character (a site's shortcut). Answers the page after it: the elements and text in view, with the same numbers. | Yes | No | No | Yes |
cotlet_browser_readThe whole current page: its text (up to 20,000 characters) and a numbered list of its links, buttons, fields and other controls, open dialogs first. Use it on a new page or when a step's answer is not enough; `element` reads only inside one element (a dialog, a form, a list). Never returns field values, cookies or storage. | No | Yes | Yes | Yes |
cotlet_browser_screenshotA JPEG of the visible part of the page. Use it for boards, canvases, maps, charts and layout that the text does not show, then click or drag by `x`, `y` of the image. | No | Yes | Yes | Yes |
cotlet_browser_scrollScrolls with the mouse wheel: `down` or `up` by `screens`, to `top` or `bottom`, until `element` is in view, or inside a panel or list (`inside`). Content that loads on scroll appears. Answers the page after it: the elements and text in view, with the same numbers. | No | Yes | Yes | Yes |
cotlet_browser_selectChooses `option` (its label as listed, or its value) in drop-down `element`. For a home-made drop-down, click it, then click the option. Answers the page after it: the elements and text in view, with the same numbers. | Yes | No | No | Yes |
cotlet_browser_tabsThe tabs of the user's web browser, where they keep their signed-in sites open. `list` (default) answers each tab's id, URL and title and which is shown; `switch` with `tab` shows that tab, and every later step acts on it; `new` with `url` opens a tab (at most 8); `close` with `tab` closes it. Work in the tab of the site the task is about and close only the tabs you opened. | No | No | No | Yes |
cotlet_browser_typeTypes `text` into field `element`, replacing what it held; `submit` presses Enter after it. For several fields use fill_form. Without `element` the text goes where the focus is, as a person types after clicking: for spreadsheet cells and editors that read does not number (Google Sheets, Docs), click the place first; there a tab in `text` presses Tab and a line break Enter, so one call fills a table. Answers the page after it: the elements and text in view, with the same numbers. Password, card and one-time code fields are refused: the user types them. | Yes | No | No | Yes |
cotlet_browser_uploadPuts files into file field or upload button `element`: each file is {"url": "https://..."} or {"file_id": "..."} of a file uploaded to Cotlet; up to 10 files, 20 MB each. Answers the page after it: the elements and text in view, with the same numbers. | Yes | No | No | Yes |
cotlet_browser_waitWaits until `text` shows on the page (at most `seconds`, default 5, up to 20), or just `seconds`: for results that load slowly. Says whether the text appeared. Answers the page after it: the elements and text in view, with the same numbers. | No | Yes | Yes | Yes |
cotlet_get_callStatus of an earlier Cotlet call, by its call_id: pending (waits for the owner's approval in the Cotlet console), approved, running, success, rejected, expired, blocked or failed. For a call that answered with status pending or running. | No | Yes | Not declared | No |
cotlet_report_issueSends a report to the Cotlet team: a tool that failed or returned wrong data, an error you could not get past, or a step the browser could not do, with the page, the step and what you saw. A missing dedicated tool is not a problem to report: do the task in the browser. A feature the user asks for goes as feature_request. A report promises nothing: tell the user it was sent, never that something will be built or fixed, or when. The report carries the error text and call_id when there is one, never passwords or tokens. Needs the user's Cotlet API key or sign-in. | No | No | No | No |
cotlet_upload_fileReturns a one-time upload_url and a file_id for a local file (an image for a post, an attachment). The file is sent to upload_url with an HTTP PUT; an argument that takes a file accepts {"file_id": "..."}. Up to 25 MB, the URL works once. Free. Needs the user's Cotlet API key or sign-in. | No | No | Not declared | No |
cotlet_whoamiThe Cotlet account this connection acts as: email, workspace, access status, the API key or OAuth client in use with its scope, the apps the workspace may call, its credit balance, and the app the user signed up for with its first task and sign-in link. Free. Needs the user's Cotlet API key or sign-in. | No | Yes | Not declared | No |
Details
- Registry status
- Active
- Published
- Nov 10, 2026
- Updated
- Nov 10, 2026
- Repository
- Not given
- Categories (suggested)
- Browser automationSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared