What it is
Card payments and point of sale for cafés, shops, salons and food trucks. Square also holds the customer list, the item catalogue, stock counts, bookings and invoices.
How an agent connects
- Through the gateway (the default for client work). The owner presses "Connect Square" on their agents page, ticks what the agent may do, and signs in with Square. Square is asked only for the permissions those ticks need. We keep the sign-in in our vault; the agent gets a token and calls the
square.*actions below. - Square's own MCP server (Beta). Block hosts a remote server at
https://mcp.squareup.com/mcp; the owner signs in to Square with OAuth. The same server runs locally from GitHub with an access token. Locally,DISALLOW_WRITES=truemakes it read-only andSANDBOX=truepoints it at Square's sandbox. Use it for building and testing in the sandbox. - Exports of sales, items and customers from the Square Dashboard.
- Zapier has a Square connector.
What agents may do
agent_access: write-with-approval. Our workflows read sales, orders, items, stock, customers and invoices. Some propose changes: a new price after a cost change, a counted stock level or a waste entry, a draft invoice from an approved list. Each change waits for the owner's approval. Payments, refunds, sending or publishing invoices, and customer deletions are done by a person.
Through the gateway
| Action | What it does | Held? |
|---|---|---|
square.list_locations | Locations with their ids (other calls need them) | No (read, logged) |
square.list_payments | Payments with amounts, times and status; no card details | No |
square.list_orders | Orders for up to 10 locations, by date and state, with line items | No |
square.list_catalog | Items, their variations and prices | No |
square.inventory_counts | Stock counts for up to 100 variations | No |
square.list_customers | Customers with name, email and phone | No |
square.list_invoices | Invoices of one location | No |
square.update_item_price | Changes one variation's price, nothing else | Always |
square.adjust_inventory | Records a physical count, or moves stock to waste | Always |
square.draft_invoice | Creates an order and a DRAFT invoice; Square sends nothing until the owner publishes it | Always |
Reads are on when the owner connects; each change is off until the owner ticks it. Refunds, payments, publishing or cancelling invoices and deleting customers are refused by name (403 never_automated). Customer messages still go through gmail.draft and the held gmail.send. Examples are in docs/GATEWAY.md, "Business systems".
Watch out for
- The server is in Beta. Test every tool in the sandbox before a live account.
- We could not confirm which permissions the remote MCP server asks for at sign-in. Through the gateway, Square is asked only for what the owner ticked.
- A physical count replaces Square's number. Square warns that a count you calculate yourself can miss sales made while a register was offline: send a count only when someone counted the shelf.
- Customer phone numbers and emails are personal data; marketing messages need the customer's consent.
- A wrong inventory adjustment changes stock counts and reorder decisions. A person checks each one before it is sent.
Used in workflows
Sources
- Block: Square Model Context Protocol ServerChecked 6 Oct 2026
- Block: square-mcp-server (GitHub)Checked 6 Oct 2026
- Zapier: Square integrationsChecked 6 Oct 2026
- Model Context Protocol: MCP Registry search for SquareChecked 6 Oct 2026
- Square: OAuth API OverviewChecked 6 Oct 2026
- Square: OAuth Permissions ReferenceChecked 6 Oct 2026
- Square: CreateInvoiceChecked 6 Oct 2026
- Square: How Inventory WorksChecked 6 Oct 2026