Square Model Context Protocol Server
Enables integration with Apple Pay through Square's connect API, allowing for Apple Pay payment processing.
Provides comprehensive access to Square's API ecosystem, allowing for catalog management, order processing, payment handling, customer management, inventory tracking, subscription management, and other commerce operations through Square's platform.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Square Model Context Protocol Serverlist my recent orders from the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Square Model Context Protocol Server (Beta)
This project follows the Model Context Protocol standard, allowing AI assistants to interact with Square's connect API.
Quick Start
Get up and running with the Square MCP server using npx:
# Basic startup
npx square-mcp-server start
# With environment configuration
ACCESS_TOKEN=YOUR_SQUARE_ACCESS_TOKEN SANDBOX=true npx square-mcp-server start
# local runs
npx /path/to/project/square-mcp-serverReplace YOUR_SQUARE_ACCESS_TOKEN with your actual Square access token. You can obtain your access token by following the guide at Square Access Tokens. You can also set environment variables before running the command.
Related MCP server: paystack-mcp-server
Remote MCP Server
Square now offers a hosted remote MCP server at:
https://mcp.squareup.com/sseThe remote MCP is recommended as it uses OAuth authentication, allowing you to log in with your Square account directly without having to create or manage access tokens manually.
Configuration Options
Environment Variable | Purpose | Example |
| Your Square API access token |
|
| Use Square sandbox environment |
|
| Use Square production environment |
|
| Restrict to read-only operations |
|
| Specify Square API version |
|
Integration with AI Assistants
Goose Integration
To configure the Square MCP Server with Goose:
Remote MCP
To install the Square remote MCP in Goose, click this URL on a computer where Goose is installed:
Or copy and paste the URL into your browser's address bar.
# Automatic installation
npx square-mcp-server install
# Get URL for manual installation
npx square-mcp-server get-goose-urlThe install command automatically updates your Goose configuration.
Claude Desktop Integration
For Claude Desktop integration, see the Model Context Protocol Quickstart Guide. Add this configuration to your claude_desktop_config.json:
Remote MCP
{
"mcpServers": {
"mcp_square_api": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.squareup.com/sse"]
}
}
}This approach allows you to authenticate directly with your Square account credentials without needing to manage access tokens.
Local MCP
{
"mcpServers": {
"mcp_square_api": {
"command": "npx",
"args": ["square-mcp-server", "start"],
"env": {
"ACCESS_TOKEN": "YOUR_SQUARE_ACCESS_TOKEN",
"SANDBOX": "true"
}
}
}
}Tool Reference
The Square MCP Server provides a streamlined set of tools for interacting with Square APIs:
Tool | Description | Primary Use |
| Discover methods available for a service | Exploration and discovery |
| Get detailed parameter requirements | Request preparation |
| Execute API calls to Square | Performing operations |
Service Catalog
Square MCP Server provides access to Square's complete API ecosystem. Check out the Square API Documentation for detailed information about each service:
Service | Description |
| Apple Pay integration |
| Bank account management |
| Custom attributes for bookings |
| Appointment booking management |
| Payment card management |
| Cash drawer management |
| Catalog management (items, categories, etc.) |
| Checkout and payment processing |
| Custom attributes for customers |
| Customer grouping |
| Customer segmentation |
| Customer management |
| Square device management |
| Payment dispute handling |
| Event tracking |
| Gift card activity tracking |
| Gift card management |
| Inventory tracking |
| Invoice management |
| Workforce management |
| Custom attributes for locations |
| Location management |
| Loyalty program management |
| Custom attributes for merchants |
| Merchant account management |
| Authentication |
| Custom attributes for orders |
| Order management |
| Payment processing |
| Payout management |
| Refund management |
| Website integration |
| Square Online Code integration |
| Subscription management |
| Staff management |
| Square Terminal management |
| Supplier management |
| Event notifications |
Usage Pattern
For optimal interaction with the Square API through MCP:
Discover: Use
get_service_infoto explore available methodsget_service_info(service: "catalog")Understand: Use
get_type_infoto learn parameter requirementsget_type_info(service: "catalog", method: "list")Execute: Use
make_api_requestto perform the operationmake_api_request(service: "catalog", method: "list", request: {})
Development and Debugging
Using MCP Inspector
The MCP Inspector provides a visual interface for testing:
# Build the project
npm run build
# Start the inspector with the Square MCP Server
npx @modelcontextprotocol/inspector node dist/index.js startDevelopment Workflow
Clone the repository
Install dependencies:
npm installStart development mode:
npm run watchRun the server:
node dist/index.js startTest your changes using the MCP Inspector
Contributing
This repository is auto-generated from Square's OpenAPI Specification. While contributions are welcome, please note that changes will need to be incorporated into the generator that produces this code. Please open an issue to discuss proposed changes before submitting a pull request.
Available Tools
3 toolsget_service_infoA
Get information about a Square API service. Call me before trying to get type info
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The Square API service category (e.g., 'catalog', 'payments') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only says 'get information', without mentioning whether it's read-only, idempotent, or any side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose, second provides usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple info tool with one parameter, but lacks description of the output format or any additional behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for the only parameter, so baseline is 3. Tool description does not add extra meaning beyond the schema parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes a specific action: getting info about a Square API service. Explicitly differentiates from sibling tool get_type_info by telling the agent to call this before that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear directive to call this before get_type_info, indicating proper ordering. However, no guidance on when not to use or alternatives like make_api_request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_infoA
Get type information for a Square API method. You must call this before calling the make_api_request tool.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The Square API service category (e.g., 'catalog', 'payments') | |
| method | Yes | The API method to call (e.g., 'list', 'create') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavior. It states it 'gets type information' but does not disclose whether it is read-only, any side effects, or what the response structure looks like, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and a clear usage instruction. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple prerequisite tool, the description is acceptable but lacks detail on return values and behavioral context. Given no output schema, the agent might need more info to effectively use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described. The description adds no additional information beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets type information for a Square API method, and the prerequisite relationship with make_api_request distinguishes it from sibling tools, though it does not specify what 'type information' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to call this tool before make_api_request, providing clear usage context. However, it does not mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_api_requestB
Unified tool for all Square API operations. Be sure to get types before calling. Available services: applepay, bankaccounts, bookingcustomattributes, bookings, cards, cashdrawers, catalog, checkout, customercustomattributes, customergroups, customersegments, customers, devices, disputes, events, giftcardactivities, giftcards, inventory, invoices, labor, locationcustomattributes, locations, loyalty, merchantcustomattributes, merchants, oauth, ordercustomattributes, orders, payments, payouts, refunds, sites, snippets, subscriptions, team, terminal, vendors, webhooksubscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The Square API service category (e.g., 'catalog', 'payments') | |
| method | Yes | The API method to call (e.g., 'list', 'create') | |
| request | No | The request object for the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it is a unified tool and lists services. It does not disclose that it makes HTTP calls, requires authentication, can modify data, or has rate limits. Minimal behavioral context is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences with no superfluous words. It front-loads the core purpose and then lists services efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity (any API operation), the description lacks details on return values, how to structure the request object, or supported methods beyond 'list' and 'create' implied. Sibling tools exist but the description does not fully compensate for missing output schema or behavioral specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by enumerating all available services, which is absent as enum constraints in the schema. This helps the agent select valid service values, going beyond the generic schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a unified tool for all Square API operations, clearly indicating its purpose as a general-purpose API caller. It distinguishes from sibling tools (get_service_info, get_type_info) by specifying it performs operations rather than information retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to 'get types before calling,' providing a prerequisite but not explicit when-to-use or when-not-to-use guidance. It implies this is the primary tool for API calls but does not contrast with alternatives beyond the mention of getting types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_service_info - First observed
get_type_info - First observed
make_api_request
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose with no overlap: get_service_info provides service metadata, get_type_info supplies method type details, and make_api_request handles all actual API calls. The descriptions explicitly state the sequential dependency between them, eliminating any confusion about when to use each tool.
All tools follow a consistent verb_noun pattern (get_service_info, get_type_info, make_api_request) with clear, descriptive names that reflect their specific functions. The naming is uniform and predictable across the entire set.
With only 3 tools, the count feels thin for covering the extensive Square API surface listed (over 40 services). While the tools are well-designed, the minimal number may force agents to rely heavily on a single make_api_request tool for all operations, which could be cumbersome for complex workflows.
The tool set provides complete coverage for the Square API domain through a unified request tool, with preparatory tools for service and type information. However, the reliance on a single generic API call tool may lack the granularity and error handling that dedicated tools for common operations (like create_order or get_payment) would offer, creating minor gaps in usability.
Maintenance
Related MCP Connectors
Connect AI to store orders, products and inventory with scoped access and human approvals.
Connect AI agents to 580+ APIs with OAuth or API-key auth. Hosted gateway; API pricing varies.
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to manage consignment and retail business operations through the ConsignCloud API, including inventory management, sales tracking, vendor accounts, and analytics.261GPL 3.0

paystack-mcp-serverofficial
AlicenseAqualityCmaintenanceEnables AI assistants to interact with the full range of Paystack APIs, allowing operations like transaction management, customer creation, and payments through natural language.211 npm55MIT
Spreedly MCP Serverofficial
AlicenseBqualityCmaintenanceEnables AI assistants to manage payments via Spreedly API, including gateways, transactions, and payment method tokenization.3218 npm10Apache 2.0- AlicenseBqualityDmaintenanceEnables AI agents to manage Paystack payments, products, customers, and transactions through natural language.2811 npm9MIT