Fair Fare
by GoodTurnStudio · remote · no sign-in to list tools · v1.0.0 · published by GitHub user GoodTurnStudio
What a taxi, Uber or Lyft should cost, airport pickup rules, and overcharge checks.
8 tools: 2 do something that can't be undone, 4 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone2Claude Code: ask: see these tools
- Changes things4Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http fairfare https://goodturn-mcp.pages.dev/fairfare/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnestimate_fare
The server marks "estimate_fare" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
- Warncheck_fare
The server marks "check_fare" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
- Warnget_airport
The server marks "get_airport" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_airport" says "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Can't be undone 2Claude Code: ask
check_fareWas I overcharged?1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "check_fare" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Was I overcharged? Check a fare that was paid. Compares what was paid with the official meter tariff, the airport flat fare or New York's typical Uber and Lyft prices for the same trip and hour, gives a verdict (fair, high or overcharged), the next steps for that company or city regulator, and a short message to send asking for a refund.
Annotations the server declares
- title: Was I overcharged? Check a fare that was paid
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
estimate_fareWhat a trip should cost by taxi, Uber or Lyft.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "estimate_fare" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it What a trip should cost by taxi, Uber or Lyft. Distance and time by road between two places, the licensed taxi meter fare with the extras that apply at that hour, any airport flat fare, typical Uber and Lyft prices in New York, airport pickup rules, a pre-booked transfer option for airport trips, and links that open Uber, Lyft or public transport directions with the trip filled in.
Annotations the server declares
- title: What a trip should cost by taxi, Uber or Lyft
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 4Claude Code: ask
best_time_to_rideCheapest time of day to take a ride.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Cheapest time of day to take a ride. For New York, typical Uber and Lyft prices for a trip of a given length at every hour of the week, from the city's trip records, with the cheapest and most expensive hours today and whether waiting saves money. For other cities, how the taxi meter rates change by time of day.
Annotations the server declares
- title: Cheapest time of day to take a ride
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
check_driver_licenceCheck a New York taxi or ride-app driver's licence.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check a New York taxi or ride-app driver's licence. Whether a TLC licence number is active on New York City's daily open data for for-hire (Uber, Lyft, car service) and taxi drivers, its expiry date, and, if a name is given, whether it matches (the name on the licence is never returned). Other cities get the official way to check.
Annotations the server declares
- title: Check a New York taxi or ride-app driver's licence
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
check_fleet_fileCheck a cab firm's fleet.json.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check a cab firm's fleet.json. Reads a taxi or minicab firm's fleet.json (the open format at fairfare.pages.dev/fleet that lets assistants find and book local firms directly) and lists anything to fix.
Annotations the server declares
- title: Check a cab firm's fleet.json
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_airportGetting a ride at an airport.1 finding
Why it is in this group
- The name "get_airport" says "get": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "get_airport" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_airport" says "get": a word for reading.
Description, as the server wrote it Getting a ride at an airport. Where Uber and Lyft pick up, how the taxi rank works, flat taxi fares, drop-off and pickup charges for cars, meet and greet rules, public transport into the city with prices, and tips, from each airport's own pages.
Annotations the server declares
- title: Getting a ride at an airport
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 2Claude Code: allow
get_taxi_tariffA city's official taxi meter tariff.No findings
Why it is in this group
- The name "get_taxi_tariff" says "get": a word for reading.
Description, as the server wrote it A city's official taxi meter tariff. The starting charge, the rate per mile or kilometre, the waiting rate, time-of-day tariffs, extras and surcharges, flat fares, tipping custom and the official source.
Annotations the server declares
- title: A city's official taxi meter tariff
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_citiesCities and airports covered.No findings
Why it is in this group
- The name "list_cities" says "list": a word for reading.
Description, as the server wrote it Cities and airports covered. Every city whose official taxi tariff is on file and every airport with ground transport facts.
Annotations the server declares
- title: Cities and airports covered
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http fairfare https://goodturn-mcp.pages.dev/fairfare/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__fairfare__get_taxi_tariff",
"mcp__fairfare__list_cities"
],
"ask": [
"mcp__fairfare__estimate_fare",
"mcp__fairfare__check_fare",
"mcp__fairfare__best_time_to_ride",
"mcp__fairfare__get_airport",
"mcp__fairfare__check_driver_licence",
"mcp__fairfare__check_fleet_file"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fairfare. Review it before you use it.
