Skip to main content
Glama
DanCastHub

awardmath-mcp

by DanCastHub

AwardMath MCP-Server

awardmath-mcp verbindet KI-Assistenten über das Model Context Protocol mit der öffentlichen AwardMath-API.

AwardMath ist der Optimierer für Reisepunkte. Sie geben Ihre Punkteguthaben und ein Reiseziel an. Ein deterministischer Solver durchsucht einen versionierten Graphen aus Transferverhältnissen und Prämiencharts und liefert bis zu drei verifizierte, erklärbare Buchungspläne. Die Methode dahinter ist Aufzählung und Bewertung über veröffentlichte Charts. Ein LLM kann Ihre Frage analysieren und die Ergebnisse erklären, aber es wählt oder optimiert die Pläne niemals.

Dieses Repository enthält den MCP-Server und einen kostenlosen Daten-Snapshot unter data/. Der Server ist schreibgeschützt. Er benötigt keinen API-Schlüssel, kein Login oder keinen AbonnementDienst und betreibt kein Scraping von Fluggesellschafts-Websites.

Werkzeuge

Der Server stellt drei Werkzeuge bereit.

Tool

Funktion

list_programs

Listet überwachte und ausgabefähige Programme auf

solve_award_trip

Lädt drei Pläne zurück

parse_wallet

Strukturiert Wallet-Text

list_programs

list_programs gibt jedes Programm zurück, das AwardMath verfolgt, und zeigt an, welche Programm-IDs eine Suche heute ausgeben kann.

Zu den ausgabefähigen Programmen gehören Prämienprogramme mit bepreisten Charts sowie Bankwährungen, die in eines dieser Programme übertragbar sind. Diese Unterscheidung verhindert, dass ein Assistent den Solver um die Verwendung eines Aliens bittet, das keinen Weg zu einer bepreisten Prämie hat.

solve_award_trip

solve_award_trip sucht nach Plänen, die zu Ihrem Guthaben, den Abflug- und Zielorten, den Kabinen, der Reisendenzahl und einer Barzahlungsobergrenze passen.

Eine erfolgreiche Antwort enthält bis zu drei Pläne mit:

  • Exakten Transferschritten

  • Gesamtpunkten (required

  • Den anfallenden Gebühren

Wenn kein Plan passt, enthält die Antwort no_plan_reasons. Diese benennen die fehlgeschlagene Beschränkung, instead of the Lücke mit einer geschätzten Route oder einem Preis zu füllen.

parse_wallet

parse_wallet wandelt Freitext in strukturierte Guthaben um.

Zum Beispiel:

250k Amex, 80k Chase

Eindeutige Guthaben werden zu Programm-IDs und Beträgen. Mehrdeutige Formulierungen werden zur Klärung angezeigt, statt versehentlich einem Programm zugeordnet zu werden.

Related MCP server: mcp-travelcode

Einrichtung

Sie können eine Auswertung des Servers direkt über GitHub oder eine Installation aus einem Clone durchführen.

Claude Code

claude mcp add awardmath -- uvx --from git+https://github.com/DanCastHub/awardmath-mcp awardmath-mcp

Claude Desktop oder einen anderer JSON-configured MCP-Client

{
  "mcpServers": {
    "awardmath": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/DanCastHub/awardmath-mcp", "awardmath-mcp"]
    }
  }
}

Aus einem Clone

pip install -e .
awardmath-mcp

Es ist weder API-Key noch AwardMath-Konto erforderlich.

Beispiel

Bitten Sie Ihren KI-Agenten, konkrete Pläne anhand der vorhandenen Guthaben zu suchen.

Sie: Ich habe 60.000 Amex Membership Rewards Punkte. Finde einen bezahlten Economy-Sitzsitz von LAX nach HNL.

Assistent: Stand 2026-08-23 nutzte der preislich beste Plan 16.000 Qatar Avios für den Platz, finanziert durch einen Amex-Transfer bei 1:1. Das Ergebnis enthält die genauen Transferschritte, die erforderlichen Punkte und Gebühren. Weißabgleichbiten? Es bestätigt keine Verfügbarkeit eines Platzes.

Das Ergebnis ist datumsgebunden, da sich Verhältnisse und Preise ändern. Führen Sie eine neue Lösungungsanfrage durch, bestätigen Sie den Prämienplatz und erneut die Transfürkonditionen temperaturef, bevor Sie Punkte übertragen.

Datenmaterial

Das Verzeichnis data/ enthält einen datierten Schnappschuss des Prämien-Netzwerks und von ausgelieferte Solversergebnisse.

data/transfer-ratings-current.csv

Diese Datei enthält 109 Bank-zu-Programm-Transferkanten aus acht Quellwährungen, excepted am 2026-08-23.

Jede Zeile stellt die zuletzt beobachtete Überprüfung dar, die AwardMath gegen eine Programmseite oder über unabhängige Quellen verifiziert hat. Redaktionelle Behauptungen ohne nachvollziebaren Beleg wurden nicht aufgenommen.

Die Spalten umfassen:

  • Umrechnungsfaktor

  • Gebühren

  • Übertragungszeit, falls beobachtet

  • Verifizierungsstatus

  • Datum der Beobachtung

Verhältnisse ändern sich. Beachten Sie jede Zeile nur für das beobachtete Datum als gültig und prüfen Sie das Programm vor einer Übertragung erneut.

data/sample-solved-plans.json

Diese Datei enthält die fünf Szenarien, die am 2026-08-23 mit inkwilligen Solver ausgeführt wurden.

Vier Szenarien führten zu Pläne. Darunter:

  • LAX nach HNLi in der Economy-Klasse mit 60.000 Amex Membership Rewards Punkten

  • SFO nach HND in Business-Klasse mit 100.000 Amex Membership Rewards Punkten, über Ana mit 82.500 Punkten

Ein Szenario ist bewusst leer. Die Suche von YVR nach DXB in Business-Klass zeigt, wie der Solver reagiert, wenn der Graph keine Route preislich darstellen kann. Er benennt die fehlende Graph-Abdeckung, PreisWeil ein Plan erfunden werden.

Was nicht enthalten ist

Der Datensatz ist ein Snapshot und nicht das vollständige AwardMath-Produkt.

Die versionierte Historie dahinter bleibt auf awardmath.com verfügbar. Diese Historie erstellt Vorgänge über Zeit und unterstützt Preisverlauf- und Entscheidungen wie Erwerben. Sie ist nicht in diesem Repository enthalten.

Was dieser Server nicht kann

Der Server erkennt keine Live-Verfügbarkeit von Prämienplätzen.

Die Fahrpläne werden anhand veröffentlichter Prämiablashsten und Transferregeln bezogen. Eine Route kann mathematisch valide essen, auch wenn auf den gewünschten Reisedaten keine Plätze frei sind.

Bevor Sie Punkte absenken:

  1. Überprüfen Sie die Prämienverfügbarkeit auf Seats.aero, über PointsYeah oder bei der Fluggesellschaft.

  2. Prüfen Sie den Punktepreis und die Gebühren beim jeweiligen Buchungsprogramm.

  3. Kontrollieren Sie das Übertragungsververhältnis und die Bedingungen erneut.

Transfers sind unumkehrbar. Übertragen Sie nicht nur, weil der Solver einen Punktverlauf angefunden hat. Übertragen Sie erst, wenn Siesichergegangen sind, dass der Platz gebucht werden kann.

AwardMath verifiziert die Mathematik. Sie bestätigen den Platz.

Corporate Governance (Lizenzen)

Der Code steht unter der MIT-Lizenz.

Die Dateien unter data/ stehen unter CC BY-Lizenz. Verwenden Sie die Lizenz mit einem Link:

Quell. Zahlen: AwardMath

Quellen:

Available Tools

3 tools
list_programsA

List every rewards program AwardMath tracks.

Returns {"names": {program_id: display name}, "plannable": [program_id]}. "plannable" ids are the ones a solve can spend today: award programs with priced charts, plus bank currencies that transfer into one. Use these ids in solve_award_trip wallets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It precisely outlines the return structure (an object with 'names' and 'plannable' fields) and elaborates on the meaning of 'plannable' (award programs with priced charts plus bank currencies that transfer into one). This gives the agent solid insight into what the tool returns and on what basis, well beyond a generic 'list' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences: the first states the purpose, the second defines the return shape, and the third explains the 'plannable' field and its intended use. Every sentence contributes meaningful information with no redundancy or padding, making it efficiently structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters and no output schema, the description is exceptionally complete. It fully defines the return object, explains the semantics of each field, and explicitly ties the output to the sibling tool solve_award_trip. There are no critical gaps that would prevent an agent from correctly invoking the tool and interpreting its results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the input schema is empty, so the description has no parameter semantics to add. Per the rubric, a tool with zero parameters gets a baseline of 4. The description appropriately focuses on output and usage rather than parameters, so the score reflects this baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'List every rewards program AwardMath tracks,' which is a clear verb and resource definition. It does not explicitly differentiate from sibling tools like parse_wallet or solve_award_trip, but the listing nature is unmistakable given the name and the different purposes of those siblings. Thus it is specific but lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description goes beyond just stating what it does by explaining when to use the output: 'Use these ids in solve_award_trip wallets.' This directly connects the tool to a sibling and prescribes how the returned 'plannable' ids should be consumed. It also clarifies which programs qualify as 'plannable,' giving the agent a clear decision rule for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_walletA

Turn free text about points balances into structured wallet entries.

Example input: "I have 250k Amex MR, 80k Chase, and my wife has 60k Alaska". Returns {"balances": [{owner, program, balance, expires}], "unrecognized": [...], "needs_clarification": [...]}. Anything ambiguous lands in the latter two lists instead of being guessed — show it to the user rather than dropping it. If you already know the balances in structured form, skip this and build the wallet directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers: it spells out the return shape (balances, unrecognized, needs_clarification), and crucially states the no-guessing policy — 'Anything ambiguous lands in the latter two lists instead of being guessed — show it to the user rather than dropping it.' This is a meaningful behavioral trait. It stops short of edge-case handling (e.g., empty text), keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, followed by a compact example, the return schema, and the behavioral contract. Each sentence earns its place. It runs slightly long due to the dual example-and-schema-format block, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter parse tool with no output schema, the description is nearly complete: it states the input, enumerates the three output lists, and defines the ambiguity contract. The absence of an output schema means the description must explain return values, which it does. Minor omission: it doesn't state a reasonable fallback for degenerate input, but the tool's complexity doesn't demand it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter, so the description must compensate. The example input ('I have 250k Amex MR, 80k Chase...') conveys the expected free-text format with program names and amounts, which is the main semantic need. However, the description never explicitly defines the parameter's contract beyond the example — it leaves the agent to infer that text is a raw user message about point balances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Turn free text about points balances into structured wallet entries' uses a specific verb (turn/parse), a defined resource (free text about points balances), and a concrete outcome (structured wallet entries). It clearly differentiates from siblings list_programs and solve_award_trip, which serve materially different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit when-not-to-use condition: 'If you already know the balances in structured form, skip this and build the wallet directly.' This tells an agent precisely when the tool is unnecessary. It implies when to use it (when balances exist only as free text) via the example, though it doesn't formally exclude siblings — acceptable since the siblings are not genuine alternatives to a text-parsing operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_award_tripA

Compute up to three verified award-booking plans for a trip.

wallet: [{"owner": "me", "program": "amex-mr", "balance": 250000}] — ids from list_programs; "expires" (ISO date) optional per entry. origins / destinations: IATA airport codes, e.g. ["LAX"] -> ["HNL"]. cabins: any of "economy", "premium", "business", "first" (default economy). max_cash_usd: cap on out-of-pocket cash (fees, points purchases). window_from / window_to: ISO dates, optional.

Returns plans with exact transfer steps, points math, and fees, plus no_plan_reasons when nothing works — an empty result explains itself. Plans price the award from published charts; they never assert live seat availability, so tell the user to confirm space before transferring anything irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinsNo
walletYes
originsYes
travelersNo
window_toNo
window_fromNo
destinationsYes
max_cash_usdNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It explicitly states plans are priced from published charts and never assert live seat availability, and that empty results include no_plan_reasons. This is a strong disclosure of key behavioral limitations and return expectations, though it doesn't cover every potential edge case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, followed by a systematic per-parameter breakdown and behavioral caveats. The text is longer than average but every sentence adds value; there is no fluff or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, no annotations, and no output schema, the description covers purpose, inputs, high-level output (plans with transfer steps, points math, fees, no_plan_reasons), and a critical limitation (no live availability). It does not describe the exact output structure, but the summary is sufficient for an agent to call and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains wallet with an example, origins/destinations with IATA codes, cabins with options and default, max_cash_usd as a cap, and window dates as ISO optional. It covers 7 of 8 parameters but omits 'travelers', leaving its meaning to inference—a minor but notable gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair ('Compute up to three verified award-booking plans for a trip') and the context clearly distinguishes it from siblings list_programs and parse_wallet. The 'verified' and 'up to three' qualifiers add specificity without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: after obtaining wallet IDs from list_programs, and it instructs the agent to confirm live availability before irreversible transfers. It does not explicitly name alternatives or exclusions, but the sibling relationships are implicit, so this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedlist_programs
    • First observedparse_wallet
    • First observedsolve_award_trip

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: list_programs enumerates available programs, parse_wallet converts free text into structured wallet entries, and solve_award_trip computes booking plans. There is zero overlap between them, so an agent can easily select the right tool for each step of the workflow.

Naming Consistency5/5

All three tool names follow a consistent verb_noun pattern: list_programs, parse_wallet, solve_award_trip. The verbs are clear and the nouns match the domain, making the naming predictable and intuitive.

Tool Count5/5

Three tools is well-scoped for the server's purpose: listing programs, parsing input, and solving trips. Each tool is necessary and sufficient for the end-to-end workflow, with no redundancy or missing helper clutter.

Completeness4/5

The tools cover the full lifecycle: discovering what programs exist, structuring user input, and computing booking plans with transfer steps. A minor gap is the lack of a dedicated tool for fetching detailed program rules or live availability, but the solve tool's output includes sufficient details and reasons for failures, so most practical needs are met.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers