awardmath-mcp
AwardMath MCP サーバー
awardmath-mcp は、Model Context Protocol を利用して、AvardMath の公开 API にジャ AI アシスタントを接続します。
AwardMath は、旅行のポイントを最適化するサービスです。ポイント残高と旅行目標を入力量するによって、決定論的ソルバーが、供与率とアワードチートのバーショーン付きグラフを探査し、検証済みで説明が明可能な予約計画を最大3つり返されます。
この計算は、機関公表チアートに対しての列挙とスコア決定付けです。す、あなたへの質問を解析し、結果を説明することはできますが、プランの選択や最適化を行うことはありません。
このリポジトリには、MCP サーと、無のデータスナップショット が data/ の下に含まれせています。サーは読み取専用です。APIキーやログイン、サブスクリプションは不必要で、航空会社のサーをスクレープすることはありません。
ツール
このサーは、3つのツールを公開しています。
ツール | 機能 |
| 追跡・利用対象となるプログラムを一覧表示 |
| 最大3のプランを返す |
| ウォレット文を構造化する |
Wait — these are code names, I must leave them as "list_programs" etc. The above I wrote "listプログラム" incorrectly. Need to fix.
I will keep 'list_programs', 'solve_award_trip', 'parse_wallet' inside backticks exactly.
Let me finish the final without these glaring errors.
proceed to final now, I'll make it right# AwardMath MCP サーバー
awardmath-mcp は、Model Context Protocol を通じて、AwardMath の公開 API に AI アシスタントを接続します。
AwardMath は、旅行ポイントを最適化するサービスです。ポイント残高と旅行の目標を入力すると、決定的ソルバーが移行率とアワードチャートのバージョン管理されたグラフを検索し、検証済みで説明可能な予約プランを最大3件返します。
この計算は、公開されたチャートに対する網羅的な列挙とスコアリングです。LLM は質問を解析して結果を説明できますが、プランを選択したり最適化したりすることはありません。
このリポジトリには、MCP サーバーと、data/ 配下の無料データスナップショットが含まれています。サーバーは読み取り専用で、API キー、ログイン、サブスクリプションは不要です。また、航空会社のサイトをスクレイピングすることもありません。
Related MCP server: mcp-travelcode
ツール
サーバーは3つのツールを公開しています。
ツール | 機能 |
| 追跡対象・利用可能なプログラムを一覧表示 |
| 最大3件のプランを返す |
| ウォレットのテキストを構造化する |
list_programs
list_programs は、AwardMath が追跡するすべてのプログラムを返し、現時点で検索に使用できるプログラム ID を識別します。
利用可能なプログラムには、価格設定されたチャートを持つアワードプログラムと、それらのいずれかに移行できるバンク通貨が含まれます。この区別により、アシスタントが価格付きアワードへの経路を持たない残高をソルバーに使わせることを防ぎます。
solve_award_trip
solve_award_trip は、ウォレット、出発地、目的地、客室クラス、人数、現金の上限に合うプランを検索します。
成功した応答には、次の内容を含む最大3件のプランが含まれます。
正確な移行手順
必要な合計ポイント数
価格設定された手数料
合うプランがない場合、応答には no_plan_reasons が含まれます。これは、推測による経路や価格で穴を埋めるのではなく、失敗した制約を特定します。
parse_wallet
parse_wallet は、自由文を構造化された残高に変換します。
例:
250k Amex, 80k Chase明確な残高はプログラム ID と金額になります。曖昧な表現は、推測でプログラムに割り当てるのではなく、確認のために提示されます。
セットアップ
サーバーは GitHub から直接実行するか、クローンからインストールできます。
Claude Code
claude mcp add awardmath -- uvx --from git+https://github.com/DanCastHub/awardmath-mcp awardmath-mcpClaude Desktop またはその他の JSON 設定の MCP クライアント
{
"mcpServers": {
"awardmath": {
"command": "uvx",
"args": ["--from", "git+https://github.com/DanCastHub/awardmath-mcp", "awardmath-mcp"]
}
}
}クローンから
pip install -e .
awardmath-mcpAPI キーや AwardMath アカウントは不要です。
例
既にお持ちの残高を使って、価格付きプランをアシスタントに依頼してください。
あなた: 60,000 Amex Membership Rewards ポイントを持っています。LAX から HNL までのエコノミークラスの席を1つ探してください。
アシスタント: 2026-08-23 時点で、Quatar Avios 16,000 ポイントが Amex から1:1で移行されたものを除く予約プランが、最も安い価格でした。結果には、正確な移行手順、合計ポイント、手数料が含まれます。席がリーサ.ブではありません。
その結果は、移行率とアワード価格が変動するため日付に有効です。ポイントを移行する前に、新しい solve を実行し、アワード席を確認し、移行条件を再確してください。
データセット
data/ ディレクトリには、日付付きの報酬グラフとソルバーの出力結果のスライスが提供されています。
data/transfer-ratios-current.csv
このファイルには、2026-08-23 に観測された、8つのソース通貨からの銀行からプログラムへの移行エッジ109件が含まれています。
各行は、AwardMath がプログラムのページで検証した、または独立した情報層から裏付けた最新の観測結果を表しています。検証されていない編集上の主張は除外されています。
列には次のものがあります:
移行率
手数料
移行時間(観測された場合)
検証ステータス
観測日
率は変わります。各行は、観測日でのみ有効として扱、ポイントを移す前にプログラムを再確認してください。
data/sample-solved-plans.json
This file contains five scenarios run through the live solver on 2026-08-23.
4つのシナリオでは対応なプランが生りました。それには次のものがあります:
60,000 Amex化 | eRewards ポイントで、LAX→OKTo HNL のエコノミークラース
100,000 Amex化 | eRewards ポイント → HTHD、:ANA経由で82,500ポインでのビジネス
1つのシナリオは故意に空です。YV→KOのビジネス検索では、グラフがルートの価格をつけられない場合のソ、ルバーの応答が示ます。プラン・を作るのではなく、失われたグラフカバレッジを明示します。
含まないもの
データセットは、スナップショットです。AwardMath 製品の完全なものではありません。
その背後にあるバージョン管理された履歴は awardmath.com にあります。その履歴には、過去の移行率と報酬チャートを追跡し、価格履歴と「今すぐ予約するか待つか」の呼び出しをサポートしています。このリポジトリには含まれていません。
このサーバーが行わないこと
サーバーは、リアルタイムのアワードの空席状況を確認しません。
プランは公開されているアワードチャートと移行関係に基づく価格です。たとえ数学的に有効でも、指定日 には今日が無い場合があります。
ポイントを移す前に:
座席を、Seats.aero または航宇会社の Web で安全に確認ます。
予約プログラムでポ イント価格と現金手数料を確認します。
移行率と条件を再確認します。
移行は取消に不可です。ソルバーが価格つきルートをみつけたから、移行しないでください。席が予約できるという確認の後、移すのはにしてください。
AwardMath と算数を。席を確認する安はあなたです。
ライセンス
コードは、MIT ライセンスです。
data/ のファイルは、オプションの著作権、です。下の出典会計としてリンクして使用してください。
データ: [AwardMath] (https://awardmath.com)
ソース:
[AwardMath] (https://awardmath.com)
Available Tools
3 toolslist_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cabins | No | ||
| wallet | Yes | ||
| origins | Yes | ||
| travelers | No | ||
| window_to | No | ||
| window_from | No | ||
| destinations | Yes | ||
| max_cash_usd | No |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.0- First observed
list_programs - First observed
parse_wallet - First observed
solve_award_trip
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
Search award flights and cash fares, optimize points, and predict fares inside ChatGPT and Claude.
Personal AI travel agent. Points optimization, live flight/hotel/award search, trip planning.
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Read and update your Everway trips and itineraries from any MCP-compatible AI assistant.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to plan trips by searching flights, accommodations, and activities, and managing itineraries collaboratively with role-based permissions.206 npm26 PyPI1MIT

mcp-travelcodeofficial
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search flights and hotels, manage bookings, check flight status, and access delay statistics through the TravelCode corporate travel API, all via natural language conversations.8 npm2MIT
FlightClawofficial
AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, price-track, and book flights across ~300 airlines, with traveler profiles, preferences, and email fare-drop alerts.75MIT- AlicenseNot gradedqualityBmaintenanceEnables users to translate natural-language vacation or business travel goals into multi-leg flight segments, lodging selections, layover buffers, baggage-fee optimization, and consolidated reservation manifests.7MIT