small businessno-API automationmacOS

Automation for Small Business: reaching the 40% of tools with no API

Every small-business automation guide on the SERP recommends the same three things: Zapier, Make, IFTTT. Those tools stop at the API wall. The software a small business actually lives in (the desktop accounting program, the bank portal behind 2FA, the industry CRM, Apple Mail, WhatsApp Business) is on the other side of that wall. This is a guide about automating there.

F
Fazm
11 min read
4.9from 200+
Drives any Mac app through accessibility APIs, not screenshots
Uses your real Chrome session, not a fresh browser
Consumer app, no workflow builder, no YAML

The SERP gap nobody writes about

Search the keyword this page ranks on and read the first ten results. They are nearly interchangeable. A block on the benefits of automation, a list of tasks every small business should automate, and a rundown of the same five or six tools: Zapier, Make, IFTTT, Pipedream, sometimes Microsoft Power Automate. Every tool in that list works the same way under the hood. It waits for a webhook, calls an API, and writes to another API.

That is a great foundation when the target tool has an API. It is useless when it does not. And a surprising amount of the software a real small business uses does not. Ask any accountant whether their clients use QuickBooks Online or QuickBooks Desktop, and you will hear that half or more are still on Desktop. Ask any single-location business whether their bank exposes a public API, and the answer is almost always no. Ask a home services company whether WhatsApp Business has free programmatic access, and the answer is no.

The existing guides do not address that tier because their tools literally cannot reach it. We can, and this page is about how.

The five built-in MCP servers, hardcoded in the bridge

When Fazm launches, the bridge registers exactly five MCP servers before the chat surface is even rendered. The list is on one line of source you can grep. None of them require the target application to ship an API.

acp-bridge/src/index.ts

Why this is the uncopyable anchor: every other small-business automation article points at a vendor catalog. This one points at a single line of code in the Fazm source tree. acp-bridge/src/index.ts:1266 is the ground truth. Two of those five servers (macos-use and playwright) are the no-API path.

The no-API tier, category by category

A partial catalog of the software where small business work lives and where cloud automation tools cannot reach. Each of these is reachable through AX tree or real-Chrome DOM snapshots.

Desktop accounting

QuickBooks Desktop, Sage 50, Quicken. The cloud versions have APIs. The desktop versions your accountant uses do not.

Bank and credit union portals

Most regional bank portals gate exports behind 2FA and offer no public API. Fazm logs in as you, in your real Chrome.

WhatsApp Business

The WhatsApp Business API is gated, expensive, and meta-owned. The native Mac app is free. Fazm reads and sends from the native app.

Apple Mail and Calendar

IMAP exists, CalDAV exists, but the small business is already using Mail.app with signed rules and smart mailboxes. Fazm drives Mail.app itself.

Numbers and Pages

Tens of millions of one-off spreadsheets and contracts live here, never in Google Sheets or Docs. No API. Fazm clicks cells.

Niche industry CRMs

MatrixCare (senior care), Dentrix (dental), Jobber or ServiceTitan on lower tiers, Mindbody for studios. APIs missing or paywalled.

Paid-ads dashboards without APIs

Google Ads has an API. The Amazon Seller Central replenishment screen does not, and the TikTok Shop ads flow is a moving target. Fazm reads the UI.

Square Register and iPad apps

iPad point-of-sale flows you screen-mirror from the counter to your Mac. No REST surface. Fazm acts through the mirrored UI.

What Fazm reaches from one install

The agent orbits the two primitives the Mac already exposes: the accessibility tree for native apps, and the DOM of your real Chrome session. From that center, it can touch anything you can touch on your machine.

Fazm agent
QuickBooks Desktop
Bank portal
WhatsApp
Apple Mail
Numbers
Mindbody
Square
Local SQLite
Industry CRM
iMessage

The tool-routing block the model reads every session

The reason Fazm picks the right primitive for each target is that the model is briefed with an explicit routing table. It is plain English and it lives in the Swift source next to the chat prompts. When a user asks for something in Numbers, it routes to macos-use. When the request names a web page, it routes to Playwright. When the target is WhatsApp, it routes to the WhatsApp MCP.

Desktop/Sources/Chat/ChatPrompts.swift

One plain-English request, three primitives

The user says the sentence. The bridge fans it out to whatever primitive actually reaches the target. That fanout is the reason a small business can drive twenty different tools from a single prompt.

Plain English, fanned out across the no-API tier

User prompt
Browser profile
Local DB
Fazm agent
macos-use
playwright
whatsapp
fazm_tools

What the install actually gives a small business

These are not marketing numbers. They are what the app literally ships with. The last one is the whole point of the page.

0Built-in MCP servers in every Fazm install
0macos-use tools, all _and_traverse
0Bundled skills (Sources/BundledSkills/*.skill.md)
0APIs required for the no-API tier

A Zapier-style workflow for the same scope would require 0 paid connectors minimum for the best-case subset, and would silently omit the desktop and WhatsApp legs entirely.

The six tools that reach any Mac app

You can verify this yourself. Pipe a JSON-RPC tools/list into the bundled binary and the same six tools the bridge registers print out. Every one of them ends in _and_traverse, meaning the agent acts and re-observes in a single MCP round trip.

tools/list

End-to-end: the monthly bank reconciliation no SaaS automator can do

1

Open Chrome, go to the bank portal in the tab you already have open

Fazm calls browser_tabs to find an existing session. 2FA is already satisfied from your morning login.

No OAuth, no app password, no 'reconnect your bank' flow. Playwright MCP runs in extension mode against your real Chrome process.
2

Navigate to the monthly statement page and download the CSV

Fazm reads the DOM snapshot saved as a .yml file, finds the export button by its accessible name, and clicks it.

The CSV lands in ~/Downloads exactly the way it would if you clicked it yourself. No vendor plugin, no CSV generator service.
3

Open QuickBooks Desktop with macos-use

macos-use_open_application_and_traverse, then macos-use_click_and_traverse on File > Utilities > Import > Bank Feed.

The AX tree exposes menu items by title. The agent matches 'Import' and 'Bank Feed' by string, reads the frame, clicks. No Intuit-sanctioned connector.
4

Match transactions line by line, approving anomalies with you

For each row, the agent checks against your categorization memory and either commits or asks you with ask_followup.

The approval gate is built into the chat surface. Nothing auto-commits a $9,000 wire transfer without you clicking yes.
5

Email the accountant the reconciled PDF from Apple Mail

The reconciled statement prints to PDF, opens in Preview, and the agent drives Mail.app to attach it and send.

The email address comes from your browser profile index (extract_browser_profile has already seen it in autofill). You never typed it.
6

Total elapsed: roughly as long as you would take, minus the clicking

Nothing in this sequence hit an official API. It all went through AX tree and DOM snapshots the way you would with a mouse.

That is the whole point. The tools a small business uses for reconciliation do not ship APIs. Fazm did not wait for them to.

Every step above happens on your machine. The CSV never leaves a path you control. The bank password never leaves your real Chrome session. The reconciled PDF is sent from your own mail account. That is a property of the no-API tier: nothing touches a cloud automation vendor in the middle.

The tool-by-tool honest reckoning

A small business stack split by whether the tool ships an API and how each automation approach treats it.

FeatureZapier / Make / IFTTTFazm
Stripe, Shopify, Gmail, Google Drive, Calendly, HubSpot free tierZapier, Make, IFTTT cover theseAPIs exist, Fazm uses them first
QuickBooks Desktop, Sage 50, QuickenNo coverage, or 'use the cloud version' adviceFazm drives the app UI via AX tree
Regional bank and credit union portals (2FA gated)Rely on Plaid, which misses ~half of US credit unionsFazm uses your real Chrome session
WhatsApp Business, iMessageMeta's gated API or no supportFazm drives the native Mac app
Apple Mail, Calendar, Numbers, PagesIMAP / CalDAV scripting, manualFazm clicks the app
Niche industry CRMs (Dentrix, MatrixCare, MindBody)Paywalled APIs or noneFazm drives the web or desktop UI
TikTok Shop, Amazon Seller Central flowsScraping tools, rate-limitedFazm drives the dashboard
Your own SQLite database and local CSV filesOut of scope for cloud automatorsFazm executes SQL directly

What you need for each path

The preconditions are wildly different. The API-based path asks the SaaS vendor for permission. The UI-based path asks the machine you already own.

API-based automation needs

  • A public REST or GraphQL API, stable enough to version
  • Paid developer tier that lets you actually call it
  • OAuth credentials you are willing to keep rotating
  • A cloud automation vendor that has written the connector
  • Engineering time to maintain when an API version deprecates

UI-based automation needs

  • An on-screen element with a role and an accessible title
  • macOS Accessibility permission (the same one VoiceOver uses)
  • Your Chrome session, signed in the way you use it every day
  • A plain-English description of what you want done
  • The machine to stay awake while the work runs

A partial roll call of tools without a useful public API

Not exhaustive. Each of these is on at least one small-business operator's Mac right now and is currently invisible to the Zapier-style catalog.

QuickBooks Desktop
Sage 50
Quicken
Apple Mail.app
Apple Calendar
Numbers
Pages
Keynote
WhatsApp Business (native)
iMessage
Mindbody
Jobber (lower tiers)
MatrixCare
Dentrix
ServiceTitan (lower tiers)
Square Register (iPad)
TikTok Shop admin
Most regional US credit unions
Most Canadian small-business banks

The mental model to take into Monday morning

Split your stack in two. On one side, the tools with real APIs: Stripe, Gmail, Shopify, Google Calendar, HubSpot at the free tier. Those are where a Zap or a Make scenario still makes sense. On the other side, the tools that do not: your desktop accounting program, your bank portal, WhatsApp, your industry CRM, your local spreadsheets. That side is where you are losing weekly hours and where the existing automation literature has nothing to say.

You do not need to replace the API-side automations you already have. Keep them. What you need is a tool that crosses the line. Fazm is designed around that line. The macos-use primitive handles the Mac apps. The Playwright primitive handles the logged-in web portals. The WhatsApp primitive handles the messaging side. The single five-line list at acp-bridge/src/index.ts:1266 is the whole surface.

The thing to notice is that none of those primitives are about APIs. They are about reading and acting on what is already on your screen. That is also why they are durable. A SaaS vendor can deprecate an API version on a Tuesday. They cannot deprecate the accessibility tree macOS ships with every build.

Want to walk through your own no-API tier?

30 minutes on a call. Bring the task you keep meaning to script and we'll show you how it runs in Fazm, on your actual Mac, without asking a single vendor for an API key.

Book a call

Frequently asked questions

Why does every small-business automation guide read the same way?

Because they are all written from the API layer up. Zapier, Make, IFTTT, Pipedream and the blogs that review them catalog cloud SaaS connectors. A 'connector' is a thin wrapper around a public REST or GraphQL API. If the target software does not ship that API, there is nothing to write about, so those tools get left out. The ~40% of a small-business software stack that lacks a public API (desktop accounting, the bank portal behind 2FA, WhatsApp Business, Apple Mail and Calendar, Numbers, niche industry CRMs, paid-ads dashboards without public endpoints) is invisible to that whole school of automation. This guide is about automating that 40%.

What exactly does Fazm use instead of APIs?

Two things. For anything running on the Mac desktop, Fazm drives the macOS accessibility tree through the bundled mcp-server-macos-use binary. That is the same AX tree VoiceOver reads. Every on-screen button, text field, menu item and table cell is exposed with role, title, frame in points, and a visible flag, so the agent can click 'Reconcile' in QuickBooks Desktop or 'Export' in a bank portal without the app needing any integration. For Chrome-based work (portals that gate behind 2FA, SaaS dashboards with no public API, tools where login is tied to a cookie), Fazm uses the Playwright MCP server against your real Chrome session, reading DOM snapshots saved to /tmp/playwright-mcp/ as .yml files. Neither path calls an API on the target tool. Both are pinned in Desktop/Sources/Chat/ChatPrompts.swift lines 56 through 65, the tool-routing block the model is briefed with.

Which built-in MCP servers ship with Fazm, and where can I see the list?

Exactly five: fazm_tools, playwright, macos-use, whatsapp, google-workspace. The list is hardcoded at acp-bridge/src/index.ts line 1266 as BUILTIN_MCP_NAMES. You can also read the macos-use tool set by piping a JSON-RPC tools/list into Fazm.app/Contents/MacOS/mcp-server-macos-use; it prints six tools, all ending in _and_traverse: open_application, click, type, press_key, scroll, and refresh. Every action rebuilds the tree in the same MCP call, so an agent acts and re-observes in a single round trip.

What are the real small-business examples that fall into the no-API tier?

QuickBooks Desktop (still used by accountants who refuse the cloud version), Sage 50, Xero imports that need a human click in the bank portal, your small business's login page on their local credit union (2FA-gated, no public API), Quicken, WhatsApp Business on desktop, iMessage for customer reminders, Apple Mail and Calendar for owner-run shops, Numbers and Pages for single-use spreadsheets and contracts, Mindbody, Jobber, ServiceTitan (all with APIs rationed or paywalled behind the highest tier), industry-specific CRMs like MatrixCare or Dentrix, Square Register on an iPad you touch from a Mac, Canva's paid tiers where the API is enterprise only, and the TikTok / Instagram Business suites where a lot of hosted actions have no programmatic route. Fazm reaches all of these because it treats the UI as the interface.

How is this different from a browser automation script I could write in Python?

Three ways. First, the scope: a Python Selenium or Playwright script only touches the browser, so it cannot help with QuickBooks Desktop, Numbers, Apple Mail, or any native app. Fazm's macos-use path covers those. Second, the login surface: your homegrown script starts from a cold profile, so every 2FA-gated portal asks for a code; Fazm plugs into your real Chrome session via Playwright MCP's extension mode, inheriting the cookies and device trust you already have. Third, the delivery: a script is a codebase you now maintain. Fazm is a consumer app and the agent is handled by the model, so a small business operator triggers work in plain English instead of committing a Python file.

Does the Mac need to stay awake for these automations?

Yes. Fazm is a desktop agent, not a cloud service. That is the trade-off: it can drive anything on your machine (local files, non-API apps, 2FA-authenticated sessions), but the machine has to be on. For overnight runs or scheduled tasks, a cheap always-on Mac mini in a closet is the usual pattern. The gain is that you are not paying per-task to a cloud workflow vendor and you are not rewriting automations every time a SaaS vendor deprecates an API version.

Is this only for technical users?

No. Fazm is a consumer Mac app, not a developer framework. You install it, grant Accessibility permission once (the same TCC dialog VoiceOver uses), and talk to it in plain English or voice. The MCP servers, AX tree walks, and Playwright snapshots are handled by the bridge. You do not write YAML, you do not configure connectors, and you do not maintain a workflow canvas. The 'skill' files in the app bundle (seventeen of them, living at Sources/BundledSkills/*.skill.md) are the agent's recipes, not yours. You can edit them if you want, but you never have to.

What should the first automation be on a Monday morning?

Pick the task you have resisted scripting because the tool did not have an API. The usual candidates for a small business: weekly bank reconciliation (log into the bank portal, export the CSV, open QuickBooks Desktop, import, categorize, reconcile), new-lead enrichment (copy a row out of your industry CRM, search LinkedIn, paste contact into Apple Mail, send a templated intro), or WhatsApp Business replies (read incoming messages, pull customer context from your local database, draft a reply, wait for your approval). All three are API-hostile and all three are weekly time sinks. Fazm handles them through the UI.

Can Fazm still use APIs when the tool does have one?

Yes. If the target has an API and the MCP ecosystem has a server for it, the agent uses that first because it is cheaper and more reliable. The point is not 'never use APIs.' The point is 'do not let the API wall decide what is automatable.' Most small-business stacks are hybrid: Stripe has an API, QuickBooks Desktop does not; Gmail has an API, Apple Mail does not; the Shopify admin has an API, the Canadian bank your LLC banks with does not. Fazm crosses both sides of that line.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.