Symmetry Tax Engine MCP

The Symmetry Tax Engine (STE) Model Context Protocol (MCP) server connects STE's payroll tax calculation engine directly to the AI tools your team already uses. Ask questions in plain English — no JSON payloads, no developer tickets, no code required.

Supported clients: Claude Desktop, Cursor, Claude Code, Gemini CLI

Who is this for?

RoleWhat you can do
Tax & compliance analystsValidate jurisdiction rules and rate changes before they reach production
Customer supportReproduce a client's paycheck calculation without waiting on engineering
Implementation & onboardingRun parallel-payroll sanity checks during cutover
Payroll operationsVerify that an address maps to the correct local jurisdictions
Product managersPrototype a new wage type, benefit, or election before writing a ticket

Prerequisites

  • An active STE license
  • One of the supported AI clients installed (see below)

Choosing a client

All four options are free to download. If you're new to MCP tools and don't have a preference, Claude Desktop is the easiest starting point — it installs like any desktop app and requires no command line.

ClientBest forDownload
Claude DesktopEasiest setup; no technical experience neededclaude.ai/download
CursorUsers who work in or alongside codecursor.com/downloads
Claude CodeTerminal-comfortable usersInstall guide
Gemini CLIUsers already in the Google ecosystemgithub.com/google-gemini/gemini-cli

Installation

Add the STE MCP server to your client of choice. The first time you invoke a tool, your browser will open and prompt you to log in with your Symmetry Client Support Center credentials.

Claude Desktop

  1. Open Claude Desktop and click Customize in the left sidebar.
  2. Select the Connectors tab.
  3. Click + (next to the search icon) at the top of the Connectors panel, then choose Add custom connector.
  4. Fill in the fields:
    • Name: ste
    • URL: https://mcp.symmetry.com/ste
    • Leave OAuth Client ID and OAuth Client Secret blank.
  5. Click Add.
  6. The ste connector appears under Not connected, tagged CUSTOM. Select it and click Connect.
  7. Your browser opens for Symmetry sign-in. After authenticating, return to Claude Desktop and start a new chat.

Cursor

Option A — Settings UI

  1. Press Cmd+, (macOS) or Ctrl+, (Windows/Linux) to open Settings.
  2. Click MCP in the left sidebar, then Add MCP Server.
  3. Fill in:
    • Name: ste
    • URL: https://mcp.symmetry.com/ste
    • Leave Transport on the default (Streamable HTTP).
  4. Save. A green dot appears next to ste once Cursor connects successfully.
    Option B — Edit ~/.cursor/mcp.json

If the file doesn't exist yet, create it. Add:

{
  "mcpServers": {
    "ste": {
      "url": "https://mcp.symmetry.com/ste"
    }
  }
}

If you already have other MCP servers configured, add ste as a new key inside the existing mcpServers object — don't replace the whole file:

{
  "mcpServers": {
    "some-other-server": {
      "url": "https://example.com/mcp"
    },
    "ste": {
      "url": "https://mcp.symmetry.com/ste"
    }
  }
}

Save the file. Cursor picks up the change automatically — no restart needed.

Claude Code

Run this command in your terminal:

claude mcp add ste --transport http https://mcp.symmetry.com/ste --callback-port 33418

Why --callback-port 33418? Symmetry's OAuth allowlist only accepts port 33418 as a redirect target. Claude Code picks a random ephemeral port by default, which causes a redirect_mismatch error. Pinning the port fixes this. Cursor uses 33418 by default, so no flag is needed there.

After adding, restart Claude Code — MCPs are only loaded at startup.

Verify the server registered:

claude mcp list

You should see ste in the output.

Gemini CLI

Edit ~/.gemini/settings.json and add the following under mcpServers:

{
  "mcpServers": {
    "ste-mcp": {
      "httpUrl": "https://mcp.symmetrydev.com/ste",
      "oauth": {
        "enabled": true,
        "redirectUri": "http://localhost:33418/oauth/callback"
      }
    }
  }
}

Always set redirectUri explicitly. If omitted, Gemini CLI may choose a random port that fails authentication.


Verify the connection

The quickest way to confirm everything is working is to ask your client:

use the ste mcp to get the ste version

The first time, your browser opens for Symmetry sign-in. After authenticating, your client returns a version string like:

2026.4.3.7-SNAPSHOT

Subsequent calls in the same session reuse the cached token — no more browser prompts.


Available tools

You never need to call these by name. Just describe what you need in plain English and the assistant picks the right one.

ToolWhat it does
ste_get_versionReturns the STE engine version. Good first test to confirm your connection.
ste_get_schemaReturns the JSON schema for STE requests and responses.
ste_pay_calcCalculates federal, state, and local payroll taxes for one or more employees.
ste_gross_upGiven a net amount, computes the required gross and full tax breakdown.
ste_jurisdiction_dataReturns filing-status options, allowance rules, and parameters for a given tax ID and pay date.
ste_location_codeResolves an address or coordinates to an STE GEO/location code, PSD, school district, and municipality.
ste_location_taxReturns all applicable taxes (federal through local) for a taxReferenceFull and effective date.
ste_tax_id_listWildcard search over STE's reference catalogue of tax IDs, filterable by pay date and status.
ste_set_tax_listReturns the tax codes and parameters already applied to an employee setup.
ste_benefit_infoReturns IRS/state benefit codes, tax treatment, combined limits, and catch-up amounts.
ste_benefit_statusReturns active benefits, YTD usage, and effective contribution limits for a setup.

Example prompts

Copy these directly into your AI assistant once connected.

Compliance analyst — validating a rate change

For pay date 2026-05-15, what taxes apply to location 42-003-1213644
(Pittsburgh, Allegheny)? I'm specifically looking for the Local Services
Tax and EIT rate so I can verify our internal table.

Customer support — debugging a wrong-number ticket

A client is reporting that the Ohio SUTA 2025 wage base isn't capping
at $9,000. Here's the payload from their ticket. Please replay it
through STE and walk me through where the cap should have applied.

Implementation lead — sanity-checking onboarding

Look up location codes for these three addresses [paste]. For each,
list the local taxes a new employee would face and tell me which ones
the employee can opt out of versus which are mandatory.

Product manager — prototyping a feature

Run the same $3,000 regular wage in PA, NY, and CA semi-monthly,
single, 1 exemption. Show me the federal + state + local totals
side by side so I can design the UI for our multi-state preview.

Tax operations — end-of-quarter parity check

For this employee with $87,500 YTD in PA and a $5,000 bonus paid
2026-06-30, calculate Supplemental flat method and compare to
combined-aggregation. I want to see the FICA + PA SIT + local difference.
Jump to top