FrugalFinder
FrugalFinder
最高の価値を見つけるお買い物代行サービス。 欲しいもの + 理由 + 予算を送信すると、FrugalBot エージェントが定期的にスキャンして、最高の 価値 のある機会を返します。最安値でも、最も派手なものでもありません。
アーキテクチャ (MVP)
[Web UI / Telegram bot / MCP client agents]
↓ POST
Vercel serverless API ──→ Vercel KV store (wishlists + scans)
↓ ↑
FrugalBot analyzer │ scheduled re-scan
(OpenRouter LLM) ────────┘ (Vercel Cron, hourly tick)Related MCP server: ecommerce-mcp-server
エンドポイント
ルート | メソッド | 目的 |
| GET | Web UI: ウィッシュリストの送信、分析の表示 |
| POST | ウィッシュリストを作成 → 最初の FrugalBot 分析を実行 |
| GET/PATCH | 1つのウィッシュリストを取得または更新 |
| GET/POST | 最新スキャンのポーリング / 今すぐスキャンをトリガー |
| POST | Cron ターゲット — 期限が来たすべてのウィッシュリストをスキャン |
| POST | Telegram ウェブフックの取り込み |
| POST | 外部 AI エージェント向け MCP Streamable HTTP エンドポイント |
| POST | キャンプ場予約ウォッチャーを作成 (Recreation.gov) |
| GET/PATCH | 予約ウォッチャーの一覧/取得/更新 |
| POST | 今すぐ予約スキャンをトリガー |
| POST/GET | 3モデル LLM 比較スキャン / パフォーマンスサマリー |
| GET | 管理ダッシュボード: LLM 品質対コストモニター |
キャンプ場予約ウォッチャー
複数の Recreation.gov キャンプ場を、指定した日付範囲内の空き状況について監視します。
site_preference: "lakefront" は、キャンセルで空きが出たときに湖畔サイトを高く評価します。
スコアリング: 空き状況 + 希望条件の一致 + 設備 (日陰、ペット可、舗装された車道) − 価格。
curl -X POST https://YOUR-DOMAIN.vercel.app/api/reservations \
-H 'Content-Type: application/json' \
-d '{"campground_ids":["233117","232665"],"date_window":"2026-10-09 to 2026-10-12","site_preference":"lakefront","cadence":"daily"}'既知の制限: Recreation.gov の日付ベースの空き状況エンドポイントは現在、匿名の呼び出し元に 404 を返します (API が変更されました)。スキャナーは公開のサイトメタデータ検索を使用します (動作確認済み: ループ、属性、ステータス、価格)。日付レベルの空き状況が再公開されたら、getCampgroundSites() に配線してください — 下流の処理はすべてすでに対応済みです。ReserveAmerica (ノースカロライナ州立公園) は匿名 API 呼び出しをブロックします。必要になったら、クッキー/セッションを使用してプロバイダーとして追加してください。
マルチ LLM 比較 ("品質対コスト管理")
POST /api/compare は、同じ frugal-bot プロンプトで3つのモデルティアを競わせます:
ティア | デフォルトモデル | 目的 |
|
| OpenRouter 自身の最適モデルルーティング |
|
| 最も安価な Web 対応モデル |
|
| 中級の Web 対応モデル |
ジャッジ (anthropic/claude-opus-4.1) が、3つすべてをブラインドで (順序をシャッフルして) ランク付けし、1〜10 でスコアリングします。
各実行はトークン/コスト/スコア/勝利数をパフォーマンスストアに記録します。GET /api/compare がそれらを集計し、/admin.html が可視化します。すべてのスラッグはコード変更なしで毎週環境変数で上書き可能です:
PARETO_MODEL、BUDGET_WEB_MODEL、MID_WEB_MODEL、JUDGE_MODEL。
検証済みの実運用実行: mid_web (Sonar) は 9、pareto (ルーティングされた DeepSeek v4 flash) は 8、budget (GPT-4.1-nano) は 4〜7 で、合計コストは約 $0.05/比較。
環境変数 (Vercel ダッシュボード → Settings → Environment Variables で設定)
OPENROUTER_API_KEY(必須) — LLM プロバイダーFRUGAL_MODEL(オプション、デフォルトstealth/ox-alpha) — 任意の OpenRouter モデルスラッグKV_REST_API_URL、KV_REST_API_TOKEN(本番永続化に必須) — Vercel → Storage で接続された Vercel KV (Upstash) データベースからWISHLIST_TOKEN(オプション) —/api/wishlists用の共有シークレットCRON_SECRET(オプションだが推奨) —/api/scan-allを保護TELEGRAM_BOT_TOKEN、TELEGRAM_WEBHOOK_SECRET(オプション) — Telegram 取り込みMCP_TOKEN(オプション) —/api/mcp用の共有シークレットPARETO_MODEL、BUDGET_WEB_MODEL、MID_WEB_MODEL、JUDGE_MODEL(オプション) — LLM 比較ティアの上書き
共有パス
ウィッシュリストに追加 (ブックマークレット)
Add to Wishlist という名前のブラウザブックマークを、次の URL で作成してください:
javascript:(function(){var u=location.href;var t=document.title;prompt('Send to FrugalFinder? Add budget/use hints:',t+'\n'+u)&&fetch('https://frugalfinder.vercel.app/api/wishlists',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({item:t,source_url:u,budget:'see notes',use_case:'shared from '+u,cadence:'daily'})}).then(r=>r.json()).then(d=>alert('Added! id='+d.id))})()任意の商品ページでクリックすると、そのリスティングをウィッシュリストエントリとして送信します。
メール (MVP ノート)
まだ配線されていません — MVP は Web UI + Telegram + ブックマークレットを使用します。メール取り込みは、インバウンドメールウェブフック (例: Resend/Postmark → /api/wishlists) による自然な v2 追加です。
価格ティア (推奨)
ティア | 頻度 | 価格の根拠 |
無料 | 毎日 | 無料ステルスモデルでの限界コスト $0 で、アイテムあたり月約30回の LLM 呼び出し ≈ インフラはほぼ無視できる |
Power | 毎時 | $0.01/スキャン × 月約720スキャン = アイテムあたり月 $7.20 — 月額 $5 の定額で価格設定、利益は複数のウィッシュリストを1時間ごとの cron ティックにバッチ処理することで生まれる |
Pro (将来) | 毎時 + 優先キュー + メールダイジェスト | $12/月 |
ユニットエコノミクスが成立するのは、アナライザーが期限の来たすべてのウィッシュリストを単一の cron パス (/api/scan-all) にバッチ処理し、コールドスタートのオーバーヘッドを償却するからです。
認証ロードマップ (ポスト MVP)
現在の MVP: 認証なし、シングルユーザー、オプションの共有シークレットで保護。
v1.1: マジックリンクメールログイン (Auth.js または Clerk 無料ティア) → ユーザー ID でキー付けされたユーザーごとのウィッシュリスト。
v2: Power/Pro ティア向け Stripe チェックアウト。使用量メータリング = 請求期間ごとのスキャン数。
ローカル開発
npm install
vercel dev # needs `vercel link` once
npm test # node:test unit testsMCP の使用法 (ChatGPT/Claude/Codex などの外部エージェント向け)
MCP 対応クライアントを次に接続:
https://YOUR-DOMAIN.vercel.app/api/mcpヘッダー: x-mcp-token: <MCP_TOKEN> (設定されている場合)。
公開ツール:
submit_wishlist(item, use_case, budget, flexibility?, cadence?, source_url?)→ 保存 + 即時分析get_wishlist(id)→ 最新の分析とスキャン履歴を含む完全なレコードlist_wishlists()→ すべてのアクティブなウィッシュリストのサマリーtrigger_scan(id)→ 帯域外の frugal-bot スキャンを強制submit_reservation_watch(campground_ids, date_window?, site_preference?, min_features?, max_price?, cadence?, notes?)→ キャンプ場ウォッチャー + 最初のスキャン (湖畔の希望条件に対応)list_reservations()→ 最後の結果を含むすべての予約ウォッチャーtrigger_reservation_scan(id)→ 予約を今すぐ再スキャンrun_model_comparison(item, use_case, budget, flexibility?)→ 3ティア LLM レース + ジャッジ判定get_model_performance()→ ティアごとの品質/コスト統計の集計
呼び出し側エージェントはこれを 送信 + ポーリング として扱う必要があります: 一度送信し、その後は自分に合った頻度で get_wishlist を呼び出します (または独自のスケジューラーを待ちます)。MCP 仕様には任意の更新のためのプッシュチャネルがないため、定期的なポーリングが標準的なパターンです。
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-powered product search, affiliate links, and price negotiation for e-commerce platforms
Personal-finance workspace for AI agents: accounts, spending, budgets, goals, and investments.
Directory of APIs, merchants, and tools AI agents can actually use.
AI Agent Utility Layer for agent safety, web monitoring, crypto research and tool discovery.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to save product URLs to a user's Wishfinity wishlist. When recommending products, the AI can generate a clickable link that saves items for later purchase or gifting.63 npm1MIT
- AlicenseAqualityFmaintenanceEnables AI agents to search products, lookup barcodes, and manage shopping carts and wishlists using free e-commerce APIs.8MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.8-
- AlicenseNot gradedqualityDmaintenanceImplements the iwant.fyi demand-side protocol, enabling AI agents to express structured purchase intent, receive matched supply from multiple sources, and report outcomes.Apache 2.0