Skip to main content
Glama

Hreyfill CLI + MCP

Command-line access to Frogne Taxi Hreyfill (com.frogne.infinity.hreyfill 3.8.3 / 83), not the newer is.hreyfill.app. This project is not affiliated with Hreyfill. Coverage and unfinished flows are recorded in docs/COVERAGE.md.

Install

With Bun 1.3.13 or newer:

bun add -g github:axelpaul/Hreyfill-cli
hreyfill --version
hreyfill --help

Single-file Linux, macOS and Windows binaries will be published by the release workflow when a matching version tag is pushed. There is no release yet. The CLI command is hreyfill; --version, help, doctor and MCP all use the version in package.json.

Related MCP server: MCP Google Maps

Authentication

Hreyfill uses a phone number and SMS code. Fresh SMS/Firebase onboarding and automatic refresh are not yet implemented end-to-end in this CLI. Authenticate normally in the Frogne Hreyfill app, then import your existing session privately:

hreyfill auth import --file <session.json>
hreyfill auth status
hreyfill doctor
hreyfill orders upcoming

auth import also accepts stdin. Session JSON contains accessToken and, for quotes/bookings, the associated phoneId; firebaseToken is optional context for operations that require it. Never share these values. The service expects the access token verbatim in Authorization, without adding Bearer.

doctor and auth status check local storage, not network authentication; an orders/profile read verifies service access. auth logout deletes the local session, not the server session or inherited environment variables. Login, SMS, signup, session import and logout are CLI-only, never MCP tools. Raw login/SMS adapters remain available for valid existing device/Firebase context, with --yes --allow-auth; they are not a promise of standalone login. No rejected session automatically sends an SMS or retries a write.

Public contact information and transport options need no account. Quotes, bookings and personal trip details use the imported account session.

CLI usage

JSON output is default; --json is accepted. <...> denotes a placeholder to replace, never a real identifier or location in this documentation.

hreyfill orders upcoming
hreyfill orders history --params '{"max":10}'
hreyfill orders get --params '<order-json>'
hreyfill profile get
hreyfill contacts
hreyfill transport-options
hreyfill schema get-quote
hreyfill quote --data @quote.json
hreyfill nearby --params '<coordinates-json>' --timeout 3
hreyfill live --params '<order-json>' --timeout 10
hreyfill receipt --params '<order-json>' --output receipt.pdf
hreyfill schema

<order-json> contains numeric orderId. <coordinates-json> contains numeric latitude and longitude. Google address/directions tools need your own Google Maps key and may incur charges; they never receive your Frogne session token.

Quote JSON uses quoteType: "fixedPrice", pickupTime as a UTC ISO timestamp, numPassengers, and addresses.pickup/destination. Addresses contain coord: [latitude, longitude] and appropriate street/houseNum/city/zipCode/country fields. Optional via addresses use the same coordinate order. phoneId is filled from the saved session when omitted. A quote calculates a price, does not book a taxi, and does not establish an arrival time. Addresses are not geocoded implicitly.

Writes

CLI write commands preview by default and send nothing:

hreyfill orders create --data @booking.json
hreyfill orders cancel --params '<order-json>'

Only add --yes after reviewing and explicitly authorizing that exact action. A preview is not server-side validation. Booking can have a pickup without a destination. If a write times out or returns an unexpected response, its outcome may be unknown: check current state before retrying. Requests never retry implicitly.

Four write request bodies are marked partial-model: update-attributes, delete-user, update-phone-settings, modify-payment. Their exact schemas are not fully recovered, so they accept raw JSON; do not guess fields for these workflows. Some nested references also have incomplete schema coverage. Payment enrollment still needs the provider/browser handoff, which this CLI does not implement. No real booking, cancellation or payment change was used to test this client.

Binary downloads require --output; files are private (0600) and existing files are never overwritten. WebSockets are bounded to 1–30 seconds, 100 frames and 1 MiB; they never reconnect automatically. HTTP responses are bounded to 10 MiB, redirects are refused, and errors omit private response bodies.

MCP server

{
  "mcpServers": {
    "hreyfill": {
      "command": "/absolute/path/to/hreyfill",
      "args": ["serve"]
    }
  }
}

hreyfill serve runs a stdio server. stdout contains protocol only. Read tools are enabled by default. Set HREYFILL_MCP_ENABLE_WRITES=1 to expose write tools; login/SMS remain CLI-only. Every write call must include boolean confirm: false previews, true permits execution. Missing, string or numeric confirmation is rejected. This applies to booking, cancellation, card operations and all other writes. Arguments use params and body according to hreyfill schema.

The table below mirrors a real writes-enabled tools/list. An automated test compares its names and read/write classification with mcp-catalog.json.

Tool

Mode

Description

hreyfill_get_quote

Read

Calculate a taxi fare quote; does not book a ride or provide an arrival time.

hreyfill_cc_auth_failed

Write

Report a failed card authorization; confirm=true required. Payment flow unverified.

hreyfill_cc_check_auth

Write

Check or finalize a card authorization; confirm=true required. Payment flow unverified.

hreyfill_get_payment_windows

Write

Start card enrollment; confirm=true required. Browser handoff is not implemented.

hreyfill_get_receipt

Read

Download the PDF receipt for a booking.

hreyfill_cancel_order

Write

Preview or cancel a booking; execution requires confirm=true. Not ride-tested.

hreyfill_create_order

Write

Preview or create a taxi booking; execution requires confirm=true. Not ride-tested.

hreyfill_get_most_recent_order_today

Read

Show the most recent booking from today.

hreyfill_get_order

Read

Show the details of one booking.

hreyfill_get_order_history

Read

List past bookings, with a maximum result count.

hreyfill_get_order_upcoming

Read

List upcoming bookings.

hreyfill_remove_order

Write

Preview or remove a booking from history; requires confirm=true. Not ride-tested.

hreyfill_get_address

Read

Look up an address from coordinates using your own Google Maps key.

hreyfill_get_address_details

Read

Look up address details for a Google place ID using your own key.

hreyfill_get_autocompleted_addresses

Read

Find matching places using your own Google Maps key.

hreyfill_get_autocompleted_addresses_strict

Read

Find matching places within a search area using your own Google Maps key.

hreyfill_get_directions

Read

Get driving directions using your own Google Maps key.

hreyfill_get_places_extra_details

Read

Look up details of a Google place using your own key.

hreyfill_get_call_list

Read

List taxi service contact numbers; no login required.

hreyfill_get_transportation_options

Read

List vehicle and journey options; no login required.

hreyfill_delete_payment

Write

Preview or delete a saved payment method; requires confirm=true. Untested live.

hreyfill_delete_user

Write

Preview or delete the account; requires confirm=true. Partial request schema; unverified.

hreyfill_get_user

Read

Show the signed-in user profile.

hreyfill_modify_payment

Write

Preview or edit a saved payment method; confirm=true required. Partial schema.

hreyfill_set_favourite_address

Write

Preview or set a favourite address; confirm=true required. Untested live.

hreyfill_set_user_data

Write

Preview or change saved vehicle preferences; confirm=true required. Untested live.

hreyfill_update_attributes

Write

Preview or edit the user profile; confirm=true required. Partial request schema.

hreyfill_update_phone_settings

Write

Preview or initialize device settings; confirm=true required. Partial schema.

hreyfill_get_walkthrough_screens_configuration

Read

Read the service’s introductory information; no login required.

hreyfill_get_driver_image

Read

Download the driver image for a booking.

hreyfill_get_trip_path

Read

Get the recorded route for a booking.

hreyfill_send_rating

Write

Preview or submit a trip rating; confirm=true required. Not ride-tested.

hreyfill_remove_companyprofile

Write

Preview or remove a company account link; confirm=true required. Untested live.

hreyfill_set_companyprofile

Write

Preview or link a company account; confirm=true required. Untested live.

hreyfill_nearby

Read

Watch nearby taxi positions for a bounded interval.

hreyfill_live

Read

Watch a booking’s live status for a bounded interval. Not ride-tested.

Configuration

Session directory: $XDG_CONFIG_HOME/hreyfill-cli/, default ~/.config/hreyfill-cli/. Directory permissions are 0700 and auth.json is 0600. HREYFILL_CONFIG_DIR overrides that location. Older local prototypes used ~/.config/hreyfill; import that session or set the override to continue using it. Neither credentials nor captured service responses belong in this repository.

  • HREYFILL_CONFIG_DIR — Override the session directory (default $XDG_CONFIG_HOME/hreyfill-cli or ~/.config/hreyfill-cli)

  • HREYFILL_ACCESS_TOKEN — Use an existing Frogne session token instead of the stored session

  • HREYFILL_PHONE_ID — Device identity for the imported session; needed for quote and booking requests

  • HREYFILL_FIREBASE_TOKEN — Existing Firebase context for requests that require it; no automatic refresh

  • HREYFILL_GOOGLE_API_KEY — Your own Google Maps key for optional address and directions tools; may incur charges

  • HREYFILL_MCP_ENABLE_WRITES — Set to 1 to expose MCP write tools; each call still requires explicit confirmation. Login stays CLI-only.

  • XDG_CONFIG_HOME — Base configuration directory (default ~/.config)

Development

git clone https://github.com/axelpaul/Hreyfill-cli.git
cd Hreyfill-cli
bun install --frozen-lockfile
bun run check
bun run build
bun run verify:mcp

check runs TypeScript plus offline tests, including a real stdio tools/list comparison and validation against the vendored site schema (draft 2020-12). No Hreyfill account or live booking/payment request is used by the test suite. All fixtures are synthetic placeholders, not captured customer data.

bun run verify:source-install tests a real GitHub global install in temporary isolated Bun directories, checks the installed version and MCP tool list, then uninstalls it without touching your existing global installation.

The release and site-notification workflows are copied from the site templates. A version tag must match package.json. The optional SITE_DISPATCH_TOKEN secret enables immediate catalogue notification; without it, hourly discovery uses the mcp-axelpaul repository topic. No tag is created by check or build.

License: MIT, Axel Paul Gunnarsson.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Provides access to Google Maps API functionality including geocoding, place search, direction routing, and distance calculations through a structured MCP interface.
    4
    13 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server exposing Google Maps Platform to MCP clients with seven tools for geocoding, place search/details, traffic-aware travel times, and time zones. Runs as a local stdio server or a containerized HTTP service with bearer auth, needing only a single API key.
    7
    MIT