Square MCP Server — payments-v1 (payments, refunds, orders, catalog, customers, cards, disputes, webhooks) + billing-v1 (subscriptions, plans, invoices)
Project description
square-blade-mcp
Square MCP server — payments, refunds, orders, catalog, customers, cards, disputes, webhooks (payments-v1) and subscriptions, subscription plans, invoices (billing-v1). Implements both payments-v1 and billing-v1 Stallari contracts.
Token-efficient by default: pipe-delimited list rows, field selection, human-readable money, null-field omission. Write operations gated behind SQUARE_WRITE_ENABLED=true. Destructive operations (cancel, delete, disable, pause, resume, send invoice) require confirm=true.
Why not square/square-mcp-server?
Square's official server uses a "meta-tool" pattern: a single make_request tool that takes a method name and JSON args. That works for breadth but pushes parsing, output trimming, and error formatting onto the model — which burns tokens and removes any chance of structured guardrails.
| Concern | square/square-mcp-server |
square-blade-mcp |
|---|---|---|
| Tool surface | 1 meta-tool | 45 typed tools |
| Output | Raw JSON | Pipe-delim lists, formatted money, null-omitted |
| Write gates | None | SQUARE_WRITE_ENABLED env + confirm=true on destructive |
| PCI safety | Caller's problem | Card output limited to last_4/brand/exp/fingerprint |
| Credential scrubbing | None | Access tokens, app IDs, app secrets, bearer tokens scrubbed from errors |
| Webhook verification | Multi-step | Single square_verify_webhook tool |
| Idempotency | Caller-supplied | Auto-injected UUIDv4 if omitted, caller key preserved |
| Contract compliance | N/A | payments-v1 + billing-v1 (Stallari) |
The two can coexist in the same Stallari catalog — square-mcp-server for breadth/escape-hatch, square-blade-mcp for the typical operator-driven flows.
Install
uv sync --group dev --group test
Configure
export SQUARE_ACCESS_TOKEN=EAAA... # PAT from Square Developer Dashboard
export SQUARE_ENVIRONMENT=sandbox # or "production"
export SQUARE_WRITE_ENABLED=true # opt-in to writes (default: read-only)
export SQUARE_WEBHOOK_SIGNATURE_KEY=... # optional, for webhook verification
Run
uv run square-blade-mcp # stdio (default)
SQUARE_MCP_TRANSPORT=http uv run square-blade-mcp # HTTP on 127.0.0.1:8770
For HTTP transport, set SQUARE_MCP_API_TOKEN to require bearer auth.
Scope
payments-v1 (Required + Recommended + Optional + most Gated):
- Payments: list / get / create / cancel / complete
- Refunds: list / get / create
- Customers: list / search / get / create / update / delete
- Cards (on file): list / get / create / disable
- Locations: list / get
- Orders: get / search / create / update / pay
- Catalog: list / get / inventory query
- Disputes: list / get
- Webhooks: list subs / create sub / delete sub / event types / single-call verify
billing-v1 (v0.2.0 — Square Subscriptions + Invoices APIs):
- Subscriptions: list / get / create / update / cancel / pause / resume
- Subscription plans: list / get / create (via Catalog
SUBSCRIPTION_PLAN) - Invoices: list / get / create / send / cancel
- Adjustments: refunds (re-used from
payments-v1) - Discounts: catalog discount objects (re-used from
payments-v1)
Honest gaps (declared via not_supported: in the manifest):
credit_balance,events,notifications,reports,preview_transaction,ip_addresses— Square has no equivalentcreate_discount,replay_notification,simulate— gated ops outside this server's scope- payments-v1 gated extras still deferred:
card_delete(usecard_disable),payment_void,refund_unlinked,inventory_adjust
Deferred (roadmap):
- v0.3.0 — OAuth (token exchange + refresh, scope mapping per [DD-154])
- v0.4.0 — Bookings, Loyalty, Gift Cards
Development
make test # unit tests
make check # lint + format + type-check
make test-e2e # requires SQUARE_E2E=1 + live sandbox creds
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file square_blade_mcp-0.2.0.tar.gz.
File metadata
- Download URL: square_blade_mcp-0.2.0.tar.gz
- Upload date:
- Size: 119.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcc5b775e808a96ad001cf8442f3e47103b8bc5bd8908eb8febf4ae4d2cd883f
|
|
| MD5 |
cca26ff2a36e287e412bff634b248463
|
|
| BLAKE2b-256 |
60a7322a186ddf96aa368f5df29628b7e23735ba84227d7198d8ef8165005518
|
Provenance
The following attestation bundles were made for square_blade_mcp-0.2.0.tar.gz:
Publisher:
publish.yml on Groupthink-dev/square-blade-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
square_blade_mcp-0.2.0.tar.gz -
Subject digest:
fcc5b775e808a96ad001cf8442f3e47103b8bc5bd8908eb8febf4ae4d2cd883f - Sigstore transparency entry: 1395434798
- Sigstore integration time:
-
Permalink:
Groupthink-dev/square-blade-mcp@373121a412627717e4bc0df49499cb221439f407 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Groupthink-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@373121a412627717e4bc0df49499cb221439f407 -
Trigger Event:
push
-
Statement type:
File details
Details for the file square_blade_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: square_blade_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7ae27ddd2d81192cd4e221a3a65be57653882bba6e8d6dc43bd11767e298993
|
|
| MD5 |
0524fb171da7a7d7e6a1dd1d1b89d9c0
|
|
| BLAKE2b-256 |
1af8a90bb49923b584fdadc938f09ee842b70b7883731d70b9713b6e721c6d56
|
Provenance
The following attestation bundles were made for square_blade_mcp-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Groupthink-dev/square-blade-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
square_blade_mcp-0.2.0-py3-none-any.whl -
Subject digest:
b7ae27ddd2d81192cd4e221a3a65be57653882bba6e8d6dc43bd11767e298993 - Sigstore transparency entry: 1395434836
- Sigstore integration time:
-
Permalink:
Groupthink-dev/square-blade-mcp@373121a412627717e4bc0df49499cb221439f407 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Groupthink-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@373121a412627717e4bc0df49499cb221439f407 -
Trigger Event:
push
-
Statement type: