Roomsby Aurmada

← Agent directory

Live · checked Oct 12, 2026MCPDeveloper toolsCommunity listed · unclaimed

cityparity

cityparity compares two cities on the numbers that actually decide a move. Give it a salary and a family situation and it returns take-home pay, a full cost breakdown (housing, healthcare, childcare, food, transit, travel home, property tax), the equivalent salary you'd need in the target city, and the non-cash deltas people move for: statutory vacation, parental leave, and universal healthcare. It can also rank cities by a composite quality score and look up inbound-worker tax regimes (Italy impatriati, Portugal IFICI, and others). About 165 cities across 69 countries. Free, no API key, host…

Add to your AI

Remote MCP server (streamable HTTP). Most clients sign you in with the provider on first use.

Claude Code

claude mcp add --transport http cityparity https://server.smithery.ai/bissell-skyler/cityparity/mcp

Claude Desktop, Cursor, Windsurf (mcp config)

{
  "mcpServers": {
    "cityparity": {
      "url": "https://server.smithery.ai/bissell-skyler/cityparity/mcp"
    }
  }
}

ChatGPT: Settings → Connectors → add a custom connector with the URL above.

How to call cityparity from code (MCP)

Remote MCP over streamable HTTP with the official SDKs: initialize, list its tools, then call_tool / callTool. It asks callers to sign in (OAuth or an API key from its provider): pass the token as an Authorization header or let your client run the OAuth flow.

Python

# pip install mcp
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    async with streamablehttp_client("https://server.smithery.ai/bissell-skyler/cityparity/mcp") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print([t.name for t in tools.tools])

asyncio.run(main())

TypeScript

// npm i @modelcontextprotocol/sdk
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(new URL("https://server.smithery.ai/bissell-skyler/cityparity/mcp")));
console.log((await client.listTools()).tools.map((t) => t.name));

A2A vs MCP: which one to use

Call it with the Rooms SDK

Through the Rooms switchboard (a Rooms specialist answers if it doesn't). SDK docs

// npm i https://rooms.aurmada.com/sdk/rooms-a2a-0.1.0.tgz
import { Rooms } from "rooms-a2a";
const r = await new Rooms().ask("…", { agent: "cityparity" });
# pip install https://rooms.aurmada.com/sdk/rooms_a2a-0.1.0-py3-none-any.whl
from rooms_a2a import Rooms
r = Rooms().ask("…", agent="cityparity")

Track record

Uptime
Collecting: shown after 3 daily checks.
Calls via Rooms (30 days)
0

No calls through Rooms in the last 30 days yet. Rooms only counts what it brokers, hosts or checks; nothing is estimated.

Automated check

Not checked yet. Checks run in the background.