Tabs MCP Connector — Setup & Usage Guide
Last updated: April 23, 2026
Overview
The Tabs MCP connector lets AI assistants like Claude query your billing, revenue, and contract data through the Model Context Protocol. Connect your AI tools to Tabs and ask questions in natural language — no custom integration code required.
Protocol: Model Context Protocol (MCP) over Streamable HTTP
Authentication: OAuth 2.0
Version: 1.0.0
Prerequisites
Before connecting, you'll need:
A Tabs platform account with access to at least one Tabs instance
An MCP-compatible AI client (Claude Code, Claude Desktop, or any client supporting MCP over Streamable HTTP)
Getting Started
1. Connect Your MCP Client
Claude Desktop
Option 1: Custom Connector (Recommended)
Check if the Tabs connector is already available in your account:
Open Claude Desktop or go to claude.ai
Navigate to Settings → Connectors
Look for "Tabs" in the list of available connectors
If Tabs is listed, toggle it on — you're done. The connector syncs across Claude Desktop, claude.ai, and mobile.
If Tabs is not listed and you have admin access to your Claude organization:
Go to Settings → Connectors
Click + then Add custom connector
Enter the URL:
https://integrators.prod.api.tabsplatform.com/mcpClick Add
If you don't have admin access, contact your Claude organization admin to add the Tabs connector.
Option 2: Local MCP Server
Add this to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"tabs": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"<https://integrators.prod.api.tabsplatform.com/mcp>"
]
}
}
}
Claude Code
Add the following to your MCP configuration:
{
"mcpServers": {
"tabs": {
"type": "url",
"url": "<https://integrators.prod.api.tabsplatform.com/mcp>"
}
}
}
Other MCP Clients
Point any Streamable HTTP-compatible MCP client at:
POST <https://integrators.prod.api.tabsplatform.com/mcp>
The server is stateless — no session management required.
2. Authenticate
When you first interact with a Tabs tool, your MCP client will prompt you to sign in via OAuth. The connector uses standard OAuth 2.0 discovery (RFC 8414 / RFC 9728), so compatible clients handle the flow automatically — no API keys or manual token management needed.
3. Working with multiple Tabs Instances
After authenticating, Claude will call list_merchants to see which Tabs instances your account has access to. If you only have access to one instance, it's selected automatically.
If you have access to multiple Tabs instances, just tell Claude which one you want to work with (e.g., "Use the Acme Corp instance" or "Switch to our production instance"). Claude handles passing the correct instance ID to each tool call.
Available Tools
All tools are read-only (readOnlyHint: true). Every tool except list_merchants is scoped to a specific Tabs instance.
Setup
ToolDescription | |
| List all Tabs instances your account has access to. Called automatically on first use. |
| Get details about a specific Tabs instance |
Customers
ToolDescription | |
| List customers with optional filtering by name, external ID, or last updated date |
| Get a single customer by ID |
| List contacts for a specific customer |
Contracts
ToolDescription | |
| List contracts with filtering by name, external ID, source, status, customer, or last updated date |
| Get a single contract by ID |
| Get usage data for a contract, optionally filtered by event type |
| Get billing term groups for a contract |
| Get performance obligations for a contract |
Invoices
ToolDescription | |
| List invoices with filtering by customer, contract, status, issue date, due date, and more |
| Get a single invoice (requires customer ID) |
Payments
ToolDescription | |
| List payments with filtering by received date, status, type, invoice, or customer |
| Get a single payment (requires customer and invoice IDs) |
Credit Memos
ToolDescription | |
| List credit memos with filtering by number, customer, issue date range, or status |
| Get a single credit memo by ID |
| Get all credit memos for a specific invoice |
Items & Products
ToolDescription | |
| List items with filtering by name, external ID, or external ID type |
| Get a single item by ID |
| List products with filtering by name or status |
| Get a single product by ID |
Revenue & Commitments
ToolDescription | |
| List revenue data with filtering by month range (YYYY-MM) or customer |
| List commitments with filtering by customer or contract |
| Get a single commitment by ID |
Renewals & Reports
ToolDescription | |
| List renewals with filtering by contract, type, status, or contract end date |
| Get the cash forecasting report |
Response Format
Successful tool response
Tool results are returned as JSON text content. For single-resource tools:
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Inc.",
"parentCustomerId": null,
"defaultCurrency": "USD",
"primaryBillingContactName": "John Doe",
"primaryBillingContactEmail": "john.doe@example.com",
"secondaryBillingContacts": ["jane.doe@example.com"],
"billingAddress": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postalCode": "94105",
"country": "US"
},
"externalIds": [
{ "type": "NETSUITE", "id": "NS-10042" }
],
"lastUpdatedAt": "2025-06-15T14:30:00.000Z",
"customFields": [],
"autoCharge": true,
"dunningDisabled": false
}
Paginated list response
List tools return data with pagination metadata:
{
"data": [
{ "id": "...", "name": "Acme Inc.", "..." : "..." },
{ "id": "...", "name": "Globex Corp.", "..." : "..." }
],
"currentPage": 1,
"limit": 50,
"totalItems": 142
}
Error response
When a tool encounters an error, it returns an error message with isError: true:
{
"error": "You do not have access to this Tabs instance. Call list_merchants to see available options."
}
Common error scenarios:
ErrorCauseResolution | ||
Missing or invalid authorization header | No Bearer token provided | Sign in again — your MCP client will re-trigger the OAuth flow |
Invalid or expired token | OAuth token has expired | Re-authenticate via your MCP client |
User not found or has no access | Account not provisioned in Tabs | Contact your Tabs admin to ensure your account has instance access |
You do not have access to this instance | Invalid instance ID | Call |
Invalid filter property: X | Unsupported filter field | Check the tool description for supported filter properties |
Invalid filter rule: X | Unrecognized filter operator | Use a supported rule: |
Filtering
Tools that support filtering accept a filter string parameter. Use the format:
property:rule:value
Combine multiple filters with commas:
name:eq:Acme Corp,status:eq:active
Available rules:
RuleDescriptionExample | ||
| Equals |
|
| Not equals |
|
| Greater than |
|
| Greater than or equal |
|
| Less than |
|
| Less than or equal |
|
| Contains (partial match) |
|
| In list |
|
| Not in list |
|
| Between two values |
|
Each tool's description lists which filter properties it supports.
Pagination
List tools support pagination with two optional parameters:
ParameterTypeDefaultDescription | |||
| integer | 1 | Page number (starting at 1) |
| integer | 50 | Items per page |
Rate Limits
Requests are rate-limited per Tabs instance. If you exceed the limit, the server returns HTTP 429 with a message indicating the current limit and reset window.
Rate limit headers are included on every response:
HeaderDescription | |
| Maximum requests allowed in the current window |
| Requests remaining in the current window |
| Time (in seconds) until the rate limit window resets |
If you hit a rate limit, wait for the reset window before retrying. AI clients will typically handle this automatically.
Examples
Here are some things you can ask your AI assistant once connected:
Revenue overview
"Show me this month's revenue broken down by customer"
Overdue invoices
"Which invoices are overdue and what's the total outstanding amount?"
Contract details
"Pull up the contract for Acme Corp and show me the billing term groups"
Cash forecasting
"What does our cash forecast look like?"
Customer lookup
"Find the contact info for Wilson Electric"
The AI assistant will automatically call the right tools, handle pagination, and combine results to answer your question.
FAQ
Do I need an API key?
No. The Tabs MCP connector uses OAuth 2.0. Your MCP client handles the sign-in flow automatically.
Can AI assistants modify my data?
No. All tools are read-only. The connector can only retrieve data — it cannot create, update, or delete anything.
Which AI clients are supported?
Any MCP-compatible client that supports Streamable HTTP transport, including Claude Code, Claude Desktop, and other tools implementing the Model Context Protocol.
What data can I access?
You can access the same data available through the Tabs Integrators API: customers, contracts, invoices, payments, credit memos, items, products, revenue, commitments, renewals, and reports.
How is my data secured?
Authentication is handled via OAuth 2.0. All requests are scoped to the Tabs instances your account has access to — you can only query data you're authorized to see.
Is there a privacy policy?
Yes. See the Tabs Privacy Policy for details on how your data is handled.
Versioning & Changelog
The Tabs MCP connector follows semantic versioning. The current version is 1.0.0.
Breaking changes will be communicated in advance via email and release notes. Non-breaking additions (new tools, new filter properties) are deployed continuously.
VersionDateNotes | ||
1.0.0 | April 2026 | Initial release — 26 read-only tools across billing, revenue, contracts, and more |
Support
If you need help or run into issues:
Email: support@tabsplatform.com
Slack: Reach out via your dedicated Tabs <> Customer Slack channel
Documentation: Tabs API Docs
When reaching out, include the error message and the tool name you were calling so we can help quickly.