_ registry / mcp http-sse · checked 55m ago

earnrate

https://mcp.earnrate.dev

Registry code: a4da032e9d9bbd5a

api record

earnrate answers which credit card earns the most for a purchase, from each issuer's own terms. Anyone can use it without entering anything: with no cards given, best_card_for_purchase, best_cards_for, cheat_sheet, simulate_spending and compare_welcome_offers answer from every card earnrate knows, and that's a complete answer. Never require the user's cards, and don't ask what they spend unless the answer depends on it; simulate_spending assumes typical amounts when none are given and says so.

Personalizing is optional. If the user names their cards, pass them as `cards` (ids from…

endpoint
https://mcp.earnrate.dev
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is earnrate live?
Yes — it answered the hub's last check (checked 55m ago). It answered 100% of checks over the last 30 days.
Is earnrate free to use?
Yes — the hub reached it with no key and no payment.
What tools does earnrate have?
16 tools: resolve_merchant, delete_wallet, best_card_for_purchase, simulate_spending, search_cards, list_wallet, record_purchase, add_card, ….
Is earnrate safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
277ms

last good check

priced tools
0

of 16 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 16 tools
2 open 14 never probed 2 of 16 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • cheat_sheet open 55m ago

    The card to use for each everyday kind of purchase right now: groceries, dining, gas, Amazon, Costco, travel, streaming, drugstores and everything else. With no cards given and no saved wallet, it picks from every card earnrate knows (`scope: all cards`, each row noting the card's fee and conditions). With cards named in the conversation or a saved wallet, it picks from the user's own cards, with caps, picks and activations as they are. For one specific store, call best_card_for_purchase instead. Pass on the notes.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "date": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "description": "Purchase date, YYYY-MM-DD. Defaults to today."
        },
        "cards": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "cardId"
            ],
            "properties": {
              "picks": {
                "type": "object",
                "description": "Bonus categories the user picked, for cards that have them: choice id → option ids, from search_cards. Ask; don't guess.",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                }
              },
              "cardId": {
                "type": "string",
                "minLength": 1,
                "description": "A card id from search_cards."
              },
              "activated": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Bonuses the user has activated with the issuer, as rule ids from search_cards."
              }
            }
          },
          "description": "Cards the user named in this conversation, to answer for just those cards without saving anything. Leave out to use the user's saved wallet if they have one; with neither, the answer covers every card earnrate knows."
        },
        "memberships": {
          "type": "array",
          "items": {
            "enum": [
              "amazon-prime",
              "bank-of-america-account",
              "bank-of-america-small-business-account",
              "bofa-rewards-member",
              "bofa-rewards-preferred-honors",
              "bofa-rewards-preferred-plus",
              "bofa-rewards-premier",
              "nordy-club-ambassador"
            ],
            "type": "string"
          },
          "description": "Memberships the user has, such as amazon-prime, when they're named in the conversation rather than saved."
        }
      }
    }
    arguments 67 lines
  • compare_welcome_offers open 55m ago

    Ranks the public welcome (sign-up) offers on cards the user doesn't have by first-year value: the bonus at the user's point values minus the first year's annual fee. Use it when the user asks which new card to get or which has the best sign-up bonus. It covers only the cards earnrate knows, offers vary by person, and each offer's note gives the issuer's eligibility rules; pass those caveats on. It doesn't account for what a card would earn on the user's spending.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "kind": {
          "enum": [
            "any",
            "cash",
            "points"
          ],
          "type": "string",
          "description": "cash: cash back cards only. points: points and miles cards only."
        },
        "cards": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "cardId"
            ],
            "properties": {
              "picks": {
                "type": "object",
                "description": "Bonus categories the user picked, for cards that have them: choice id → option ids, from search_cards. Ask; don't guess.",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                }
              },
              "cardId": {
                "type": "string",
                "minLength": 1,
                "description": "A card id from search_cards."
              },
              "activated": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Bonuses the user has activated with the issuer, as rule ids from search_cards."
              }
            }
          },
          "description": "Cards the user named in this conversation, to answer for just those cards without saving anything. Leave out to use the user's saved wallet if they have one; with neither, the answer covers every card earnrate knows."
        },
        "business": {
          "type": "boolean",
          "description": "Business cards instead of personal ones."
        },
        "includeHeld": {
          "type": "boolean",
          "description": "Include cards already in the wallet."
        },
        "noAnnualFee": {
          "type": "boolean",
          "description": "Only cards with no annual fee."
        }
      }
    }
    arguments 65 lines
  • resolve_merchant unknown never probed

    Shows how earnrate identifies a merchant: its spend category, likely MCC, which card networks it takes, confidence, and whether that came from curated data, Claude, or nowhere. Use it to explain or double-check a recommendation.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "merchant"
      ],
      "properties": {
        "channel": {
          "enum": [
            "online",
            "in_store"
          ],
          "type": "string",
          "description": "How the purchase is made. Omit if unknown; the answer says what it assumed."
        },
        "category": {
          "enum": [
            "dining",
            "dining.fast_food",
            "grocery",
            "grocery.supermarket",
            "grocery.online",
            "superstore",
            "warehouse_club",
            "convenience_store",
            "gas",
            "gas.grocery_store",
            "gas.superstore",
            "ev_charging",
            "transit",
            "transit.rideshare",
            "travel",
            "travel.flights",
            "travel.hotels",
            "travel.car_rental",
            "travel.cruise",
            "streaming",
            "tv_internet",
            "phone",
            "utilities",
            "drugstore",
            "movie_theaters",
            "entertainment",
            "fitness",
            "department_store",
            "clothing",
            "electronics",
            "sporting_goods",
            "home_improvement",
            "furniture",
            "online_retail",
            "office_supply",
            "shipping",
            "online_advertising",
            "other"
          ],
          "type": "string",
          "description": "Only for a merchant earnrate may not know, and only if you're confident what kind of business it is: its spending category, e.g. grocery.supermarket for a supermarket, dining for a restaurant, gas for a gas station. Ignored when earnrate knows the merchant. Leave it out if unsure. Categories: dining (Restaurants), dining.fast_food (Fast food), grocery (Grocery), grocery.supermarket (Supermarkets), grocery.online (Online grocery and delivery), superstore (Superstores), warehouse_club (Warehouse clubs), convenience_store (Convenience stores), gas (Gas stations), gas.grocery_store (Gas at grocery stores), gas.superstore (Gas at superstores and warehouse clubs), ev_charging (EV charging), transit (Transit), transit.rideshare (Rideshare and taxis), travel (Travel), travel.flights (Flights), travel.hotels (Hotels), travel.car_rental (Car rental), travel.cruise (Cruises), streaming (Streaming services), tv_internet (TV and internet service), phone (Cell phone service), utilities (Home utilities), drugstore (Drugstores and pharmacies), movie_theaters (Movie theaters), entertainment (Live entertainment and events), fitness (Gyms and fitness), department_store (Department stores), clothing (Clothing stores), electronics (Electronics stores), sporting_goods (Sporting goods stores), home_improvement (Home improvement), furniture (Furniture stores), online_retail (Online retail), office_supply (Office supply stores), shipping (Shipping and couriers), online_advertising (Social media and search advertising), other (Everything else)."
        },
        "merchant": {
          "type": "string",
          "minLength": 1,
          "description": "Merchant name or web address as the user would say it or see it, e.g. \"Whole Foods\" or \"delta.com\"."
        }
      }
    }
    arguments 66 lines
  • delete_wallet unknown never probed

    Deletes the saved wallet now and for good, and signs out every app using it. Only when the user asks to delete it; confirm first, and offer export_wallet to keep a copy.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • best_card_for_purchase unknown never probed

    Which card earns the most rewards for a purchase, and why. With no cards given and no saved wallet, it ranks every card earnrate knows (in `allCards`): a complete answer for anyone. With cards named in the conversation (`cards`) or a saved wallet, it picks the best of the user's own: `decision.cardId` is the pick and `decision.checkoutLabel` is how the card appears at checkout, with every usable card ranked with reasons, cards the merchant won't take, assumptions, warnings, and when a different point valuation would change the pick. Never needs or returns card numbers.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "merchant"
      ],
      "properties": {
        "date": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "description": "Purchase date, YYYY-MM-DD. Defaults to today."
        },
        "cards": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "cardId"
            ],
            "properties": {
              "picks": {
                "type": "object",
                "description": "Bonus categories the user picked, for cards that have them: choice id → option ids, from search_cards. Ask; don't guess.",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                }
              },
              "cardId": {
                "type": "string",
                "minLength": 1,
                "description": "A card id from search_cards."
              },
              "activated": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Bonuses the user has activated with the issuer, as rule ids from search_cards."
              }
            }
          },
          "description": "Cards the user named in this conversation, to answer for just those cards without saving anything. Leave out to use the user's saved wallet if they have one; with neither, the answer covers every card earnrate knows."
        },
        "amount": {
          "type": "number",
          "description": "Purchase amount in US dollars. Improves cap math.",
          "exclusiveMinimum": 0
        },
        "channel": {
          "enum": [
            "online",
            "in_store"
          ],
          "type": "string",
          "description": "How the purchase is made. Omit if unknown; the answer says what it assumed."
        },
        "category": {
          "enum": [
            "dining",
            "dining.fast_food",
            "grocery",
            "grocery.supermarket",
            "grocery.online",
            "superstore",
            "warehouse_club",
            "convenience_store",
            "gas",
            "gas.grocery_store",
            "gas.superstore",
            "ev_charging",
            "transit",
            "transit.rideshare",
            "travel",
            "travel.flights",
            "travel.hotels",
            "travel.car_rental",
            "travel.cruise",
            "streaming",
            "tv_internet",
            "phone",
            "utilities",
            "drugstore",
            "movie_theaters",
            "entertainment",
            "fitness",
            "department_store",
            "clothing",
            "electronics",
            "sporting_goods",
            "home_improvement",
            "furniture",
            "online_retail",
            "office_supply",
            "shipping",
            "online_advertising",
            "other"
          ],
          "type": "string",
          "description": "Only for a merchant earnrate may not know, and only if you're confident what kind of business it is: its spending category, e.g. grocery.supermarket for a supermarket, dining for a restaurant, gas for a gas station. Ignored when earnrate knows the merchant. Leave it out if unsure. Categories: dining (Restaurants), dining.fast_food (Fast food), grocery (Grocery), grocery.supermarket (Supermarkets), grocery.online (Online grocery and delivery), superstore (Superstores), warehouse_club (Warehouse clubs), convenience_store (Convenience stores), gas (Gas stations), gas.grocery_store (Gas at grocery stores), gas.superstore (Gas at superstores and warehouse clubs), ev_charging (EV charging), transit (Transit), transit.rideshare (Rideshare and taxis), travel (Travel), travel.flights (Flights), travel.hotels (Hotels), travel.car_rental (Car rental), travel.cruise (Cruises), streaming (Streaming services), tv_internet (TV and internet service), phone (Cell phone service), utilities (Home utilities), drugstore (Drugstores and pharmacies), movie_theaters (Movie theaters), entertainment (Live entertainment and events), fitness (Gyms and fitness), department_store (Department stores), clothing (Clothing stores), electronics (Electronics stores), sporting_goods (Sporting goods stores), home_improvement (Home improvement), furniture (Furniture stores), online_retail (Online retail), office_supply (Office supply stores), shipping (Shipping and couriers), online_advertising (Social media and search advertising), other (Everything else)."
        },
        "merchant": {
          "type": "string",
          "minLength": 1,
          "description": "Merchant name or web address as the user would say it or see it, e.g. \"Whole Foods\" or \"delta.com\"."
        },
        "memberships": {
          "type": "array",
          "items": {
            "enum": [
              "amazon-prime",
              "bank-of-america-account",
              "bank-of-america-small-business-account",
              "bofa-rewards-member",
              "bofa-rewards-preferred-honors",
              "bofa-rewards-preferred-plus",
              "bofa-rewards-premier",
              "nordy-club-ambassador"
            ],
            "type": "string"
          },
          "description": "Memberships the user has, such as amazon-prime, when they're named in the conversation rather than saved."
        }
      }
    }
    arguments 132 lines
  • simulate_spending unknown never probed

    Spends monthly amounts for a year across every card earnrate knows, and ranks single cards and two-card pairs by rewards minus annual fees. Spending is optional: without it, typical U.S. household amounts are used and the answer says so. With `cards` (named in the conversation) or compareToWallet (the saved wallet), it ranks the cards that would add the most to those cards instead. Use it for "which card fits my spending?" or "is it worth adding a card?". It leaves out welcome bonuses.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "kind": {
          "enum": [
            "any",
            "cash",
            "points"
          ],
          "type": "string",
          "description": "cash: cash back cards only. points: points and miles cards only."
        },
        "cards": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "cardId"
            ],
            "properties": {
              "picks": {
                "type": "object",
                "description": "Bonus categories the user picked, for cards that have them: choice id → option ids, from search_cards. Ask; don't guess.",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                }
              },
              "cardId": {
                "type": "string",
                "minLength": 1,
                "description": "A card id from search_cards."
              },
              "activated": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Bonuses the user has activated with the issuer, as rule ids from search_cards."
              }
            }
          },
          "description": "Cards the user named in this conversation, to answer for just those cards without saving anything. Leave out to use the user's saved wallet if they have one; with neither, the answer covers every card earnrate knows."
        },
        "issuer": {
          "enum": [
            "amex",
            "bank-of-america",
            "capital-one",
            "chase",
            "citi",
            "column",
            "sofi",
            "td-bank",
            "usbank",
            "wells-fargo"
          ],
          "type": "string",
          "description": "Only this issuer's cards."
        },
        "business": {
          "type": "boolean",
          "description": "Business cards instead of personal ones."
        },
        "spending": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "monthly"
            ],
            "properties": {
              "monthly": {
                "type": "number",
                "description": "US dollars a month.",
                "exclusiveMinimum": 0
              },
              "category": {
                "enum": [
                  "dining",
                  "dining.fast_food",
                  "grocery",
                  "grocery.supermarket",
                  "grocery.online",
                  "superstore",
                  "warehouse_club",
                  "convenience_store",
                  "gas",
                  "gas.grocery_store",
                  "gas.superstore",
                  "ev_charging",
                  "transit",
                  "transit.rideshare",
                  "travel",
                  "travel.flights",
                  "travel.hotels",
                  "travel.car_rental",
                  "travel.cruise",
                  "streaming",
                  "tv_internet",
                  "phone",
                  "utilities",
                  "drugstore",
                  "movie_theaters",
                  "entertainment",
                  "fitness",
                  "department_store",
                  "clothing",
                  "electronics",
                  "sporting_goods",
                  "home_improvement",
                  "furniture",
                  "online_retail",
                  "office_supply",
                  "shipping",
                  "online_advertising",
                  "other"
                ],
                "type": "string",
                "description": "A spending category: dining (Restaurants), dining.fast_food (Fast food), grocery (Grocery), grocery.supermarket (Supermarkets), grocery.online (Online grocery and delivery), superstore (Superstores), warehouse_club (Warehouse clubs), convenience_store (Convenience stores), gas (Gas stations), gas.grocery_store (Gas at grocery stores), gas.superstore (Gas at superstores and warehouse clubs), ev_charging (EV charging), transit (Transit), transit.rideshare (Rideshare and taxis), travel (Travel), travel.flights (Flights), travel.hotels (Hotels), travel.car_rental (Car rental), travel.cruise (Cruises), streaming (Streaming services), tv_internet (TV and internet service), phone (Cell phone service), utilities (Home utilities), drugstore (Drugstores and pharmacies), movie_theaters (Movie theaters), entertainment (Live entertainment and events), fitness (Gyms and fitness), department_store (Department stores), clothing (Clothing stores), electronics (Electronics stores), sporting_goods (Sporting goods stores), home_improvement (Home improvement), furniture (Furniture stores), online_retail (Online retail), office_supply (Office supply stores), shipping (Shipping and couriers), online_advertising (Social media and search advertising), other (Everything else)."
              },
              "merchant": {
                "type": "string",
                "minLength": 1,
                "description": "Merchant name or web address as the user would say it or see it, e.g. \"Whole Foods\" or \"delta.com\"."
              }
            }
          },
          "description": "Monthly spending lines, each a category (grocery.supermarket, dining, gas, other) or a merchant (Amazon, Costco). Optional: leave out to use typical amounts, and don't press the user for numbers they haven't offered."
        },
        "valuation": {
          "enum": [
            "flat",
            "points-heavy"
          ],
          "type": "string",
          "description": "flat (default): points at their cash-out value, about 1¢. points-heavy: Amex MR and Chase UR at 1.7¢, for people who transfer points to airlines and hotels."
        },
        "memberships": {
          "type": "array",
          "items": {
            "enum": [
              "amazon-prime",
              "bank-of-america-account",
              "bank-of-america-small-business-account",
              "bofa-rewards-member",
              "bofa-rewards-preferred-honors",
              "bofa-rewards-preferred-plus",
              "bofa-rewards-premier",
              "nordy-club-ambassador"
            ],
            "type": "string"
          },
          "description": "Memberships the user has, such as amazon-prime. Rates that need one they don't have are listed separately."
        },
        "noAnnualFee": {
          "type": "boolean",
          "description": "Only cards with no annual fee."
        },
        "compareToWallet": {
          "type": "boolean",
          "description": "Rank the cards that would add the most to the user's saved wallet."
        }
      }
    }
    arguments 172 lines
  • search_cards unknown never probed

    Finds credit cards in earnrate's catalog by name or issuer, e.g. "sapphire", "amex gold" or "bofa". Returns each card's id (for add_card), network, annual fee, whether it's already in the wallet, and what it needs set up: category picks and their options, memberships, activations. Leave the query out to list every card. US cards only.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "query": {
          "type": "string",
          "description": "Card name or issuer, as the user said it."
        }
      }
    }
    arguments 10 lines
  • list_wallet unknown never probed

    Lists the user's cards: checkout label, network, rewards currency and its value, spending caps with how much is left this period, chosen bonus categories (and whether they're current), welcome-bonus progress, which stores a store card works at, and when each card's data was last verified.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • record_purchase unknown never probed

    Records a purchase the user has already made, so spending caps and welcome-bonus progress stay accurate for future recommendations. It updates the user's saved wallet. Only call it after the purchase has happened, and only once per purchase: calling it twice counts the spend twice. Purchases with no cap and no open welcome bonus are acknowledged and nothing is written.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cardId",
        "merchant",
        "amount"
      ],
      "properties": {
        "date": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "description": "Purchase date, YYYY-MM-DD. Defaults to today."
        },
        "amount": {
          "type": "number",
          "description": "Amount spent in US dollars.",
          "exclusiveMinimum": 0
        },
        "cardId": {
          "type": "string",
          "minLength": 1,
          "description": "The card used, as a cardId from list_wallet or best_card_for_purchase."
        },
        "channel": {
          "enum": [
            "online",
            "in_store"
          ],
          "type": "string",
          "description": "How the purchase is made. Omit if unknown; the answer says what it assumed."
        },
        "category": {
          "enum": [
            "dining",
            "dining.fast_food",
            "grocery",
            "grocery.supermarket",
            "grocery.online",
            "superstore",
            "warehouse_club",
            "convenience_store",
            "gas",
            "gas.grocery_store",
            "gas.superstore",
            "ev_charging",
            "transit",
            "transit.rideshare",
            "travel",
            "travel.flights",
            "travel.hotels",
            "travel.car_rental",
            "travel.cruise",
            "streaming",
            "tv_internet",
            "phone",
            "utilities",
            "drugstore",
            "movie_theaters",
            "entertainment",
            "fitness",
            "department_store",
            "clothing",
            "electronics",
            "sporting_goods",
            "home_improvement",
            "furniture",
            "online_retail",
            "office_supply",
            "shipping",
            "online_advertising",
            "other"
          ],
          "type": "string",
          "description": "Only for a merchant earnrate may not know, and only if you're confident what kind of business it is: its spending category, e.g. grocery.supermarket for a supermarket, dining for a restaurant, gas for a gas station. Ignored when earnrate knows the merchant. Leave it out if unsure. Categories: dining (Restaurants), dining.fast_food (Fast food), grocery (Grocery), grocery.supermarket (Supermarkets), grocery.online (Online grocery and delivery), superstore (Superstores), warehouse_club (Warehouse clubs), convenience_store (Convenience stores), gas (Gas stations), gas.grocery_store (Gas at grocery stores), gas.superstore (Gas at superstores and warehouse clubs), ev_charging (EV charging), transit (Transit), transit.rideshare (Rideshare and taxis), travel (Travel), travel.flights (Flights), travel.hotels (Hotels), travel.car_rental (Car rental), travel.cruise (Cruises), streaming (Streaming services), tv_internet (TV and internet service), phone (Cell phone service), utilities (Home utilities), drugstore (Drugstores and pharmacies), movie_theaters (Movie theaters), entertainment (Live entertainment and events), fitness (Gyms and fitness), department_store (Department stores), clothing (Clothing stores), electronics (Electronics stores), sporting_goods (Sporting goods stores), home_improvement (Home improvement), furniture (Furniture stores), online_retail (Online retail), office_supply (Office supply stores), shipping (Shipping and couriers), online_advertising (Social media and search advertising), other (Everything else)."
        },
        "merchant": {
          "type": "string",
          "minLength": 1,
          "description": "Merchant name or web address as the user would say it or see it, e.g. \"Whole Foods\" or \"delta.com\"."
        }
      }
    }
    arguments 84 lines
  • add_card unknown never probed

    Adds a card the user holds to their wallet by its id from search_cards, creating the wallet if there isn't one. The reply says what the card still needs (category picks, memberships, activations); ask the user about those. Stores only the card's product id and settings, never card numbers.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cardId"
      ],
      "properties": {
        "bonus": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "opened"
              ],
              "properties": {
                "by": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "The deadline, YYYY-MM-DD, only if the user's offer differs from the published one."
                },
                "spend": {
                  "type": "number",
                  "description": "Dollars of spending the bonus needs, only if the user's offer differs from the published one.",
                  "exclusiveMinimum": 0
                },
                "spent": {
                  "type": "number",
                  "minimum": 0,
                  "description": "Dollars already spent toward the bonus. Default 0."
                },
                "opened": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "The day the account opened, YYYY-MM-DD."
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "A welcome bonus the user is working toward, so purchases recorded on this card count toward it and answers can favor it. Ask when they opened the account; spending needed and the deadline default to the card's published offer. null stops tracking it."
        },
        "picks": {
          "type": "object",
          "description": "For cards where the cardholder picks bonus categories: choice id → option ids, from search_cards, e.g. {\"five-percent\": [\"tv-internet-streaming\", \"fast-food\"]}. Saved for the current period. Ask the user; don't guess.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        },
        "cardId": {
          "type": "string",
          "minLength": 1,
          "description": "The card id from search_cards, e.g. chase-sapphire-preferred."
        },
        "activated": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Rule ids the user has activated with the issuer, such as rotating categories. Replaces the current list."
        },
        "anniversary": {
          "type": "string",
          "pattern": "^\\d{2}-\\d{2}$",
          "description": "The account's anniversary as MM-DD, for cards whose cap resets on it."
        },
        "checkoutLabel": {
          "type": "string",
          "minLength": 1,
          "description": "How the card appears at checkout or in a browser wallet, e.g. \"Amex Gold\". Optional."
        }
      }
    }
    arguments 83 lines
  • update_card unknown never probed

    Changes settings on a card already in the wallet: its category picks for this period, checkout label, anniversary or activated categories. Picks for the current period are merged with the ones already saved. Use it when the user picks new categories, such as each quarter on U.S. Bank Cash+.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cardId"
      ],
      "properties": {
        "bonus": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "opened"
              ],
              "properties": {
                "by": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "The deadline, YYYY-MM-DD, only if the user's offer differs from the published one."
                },
                "spend": {
                  "type": "number",
                  "description": "Dollars of spending the bonus needs, only if the user's offer differs from the published one.",
                  "exclusiveMinimum": 0
                },
                "spent": {
                  "type": "number",
                  "minimum": 0,
                  "description": "Dollars already spent toward the bonus. Default 0."
                },
                "opened": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "The day the account opened, YYYY-MM-DD."
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "A welcome bonus the user is working toward, so purchases recorded on this card count toward it and answers can favor it. Ask when they opened the account; spending needed and the deadline default to the card's published offer. null stops tracking it."
        },
        "picks": {
          "type": "object",
          "description": "For cards where the cardholder picks bonus categories: choice id → option ids, from search_cards, e.g. {\"five-percent\": [\"tv-internet-streaming\", \"fast-food\"]}. Saved for the current period. Ask the user; don't guess.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        },
        "cardId": {
          "type": "string",
          "minLength": 1,
          "description": "The card id from search_cards, e.g. chase-sapphire-preferred."
        },
        "activated": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Rule ids the user has activated with the issuer, such as rotating categories. Replaces the current list."
        },
        "anniversary": {
          "type": "string",
          "pattern": "^\\d{2}-\\d{2}$",
          "description": "The account's anniversary as MM-DD, for cards whose cap resets on it."
        },
        "checkoutLabel": {
          "type": "string",
          "minLength": 1,
          "description": "How the card appears at checkout or in a browser wallet, e.g. \"Amex Gold\". Optional."
        }
      }
    }
    arguments 83 lines
  • remove_card unknown never probed

    Removes a card from the wallet, with its tracked cap usage and bonus progress. Only when the user says they no longer have it or don't want it considered.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cardId"
      ],
      "properties": {
        "cardId": {
          "type": "string",
          "minLength": 1,
          "description": "The card id from search_cards, e.g. chase-sapphire-preferred."
        }
      }
    }
    arguments 14 lines
  • set_memberships unknown never probed

    Sets the memberships that unlock some cards' rates, such as amazon-prime for Prime Visa's 5% or a Bank of America Preferred Rewards tier. Replaces the whole list, so include the ones to keep.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "memberships"
      ],
      "properties": {
        "memberships": {
          "type": "array",
          "items": {
            "enum": [
              "amazon-prime",
              "bank-of-america-account",
              "bank-of-america-small-business-account",
              "bofa-rewards-member",
              "bofa-rewards-preferred-honors",
              "bofa-rewards-preferred-plus",
              "bofa-rewards-premier",
              "nordy-club-ambassador"
            ],
            "type": "string"
          },
          "description": "Every membership the user has. Known: amazon-prime, bank-of-america-account, bank-of-america-small-business-account, bofa-rewards-member, bofa-rewards-preferred-honors, bofa-rewards-preferred-plus, bofa-rewards-premier, nordy-club-ambassador."
        }
      }
    }
    arguments 26 lines
  • export_wallet unknown never probed

    The saved wallet as a wallet.yaml file the earnrate command line and earnrate.dev can import: card ids, picks, activations, memberships, cap usage and bonus progress. Never card numbers.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • import_wallet unknown never probed

    Replaces the saved wallet with a wallet.yaml from the earnrate command line or earnrate.dev, when the user pastes or attaches one. Wallet files only: never statements or card numbers. Confirm with the user first if they already have cards saved.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "yaml"
      ],
      "properties": {
        "yaml": {
          "type": "string",
          "maxLength": 100000,
          "minLength": 1,
          "description": "The wallet.yaml text, as the user gave it."
        }
      }
    }
    arguments 15 lines
  • best_cards_for unknown 55m ago

    Ranks every card earnrate knows, not only the user's, for one purchase or category, each set up at its best (the right category pick, activated, cap unused), with its annual fee and what earning the rate takes. Use it for questions like "what's the best card for groceries?" or "which card should I get for Amazon?". It needs no wallet. For which of the user's own cards to use, call best_card_for_purchase instead. Mention the annual fee and any conditions alongside each card.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "kind": {
          "enum": [
            "any",
            "cash",
            "points"
          ],
          "type": "string",
          "description": "cash: cash back cards only. points: points and miles cards only."
        },
        "amount": {
          "type": "number",
          "description": "Purchase amount in US dollars, if known.",
          "exclusiveMinimum": 0
        },
        "issuer": {
          "enum": [
            "amex",
            "bank-of-america",
            "capital-one",
            "chase",
            "citi",
            "column",
            "sofi",
            "td-bank",
            "usbank",
            "wells-fargo"
          ],
          "type": "string",
          "description": "Only this issuer's cards."
        },
        "channel": {
          "enum": [
            "online",
            "in_store"
          ],
          "type": "string",
          "description": "How the purchase is made. Omit if unknown; the answer says what it assumed."
        },
        "business": {
          "type": "boolean",
          "description": "Business cards instead of personal ones."
        },
        "category": {
          "enum": [
            "dining",
            "dining.fast_food",
            "grocery",
            "grocery.supermarket",
            "grocery.online",
            "superstore",
            "warehouse_club",
            "convenience_store",
            "gas",
            "gas.grocery_store",
            "gas.superstore",
            "ev_charging",
            "transit",
            "transit.rideshare",
            "travel",
            "travel.flights",
            "travel.hotels",
            "travel.car_rental",
            "travel.cruise",
            "streaming",
            "tv_internet",
            "phone",
            "utilities",
            "drugstore",
            "movie_theaters",
            "entertainment",
            "fitness",
            "department_store",
            "clothing",
            "electronics",
            "sporting_goods",
            "home_improvement",
            "furniture",
            "online_retail",
            "office_supply",
            "shipping",
            "online_advertising",
            "other"
          ],
          "type": "string",
          "description": "A spending category: dining (Restaurants), dining.fast_food (Fast food), grocery (Grocery), grocery.supermarket (Supermarkets), grocery.online (Online grocery and delivery), superstore (Superstores), warehouse_club (Warehouse clubs), convenience_store (Convenience stores), gas (Gas stations), gas.grocery_store (Gas at grocery stores), gas.superstore (Gas at superstores and warehouse clubs), ev_charging (EV charging), transit (Transit), transit.rideshare (Rideshare and taxis), travel (Travel), travel.flights (Flights), travel.hotels (Hotels), travel.car_rental (Car rental), travel.cruise (Cruises), streaming (Streaming services), tv_internet (TV and internet service), phone (Cell phone service), utilities (Home utilities), drugstore (Drugstores and pharmacies), movie_theaters (Movie theaters), entertainment (Live entertainment and events), fitness (Gyms and fitness), department_store (Department stores), clothing (Clothing stores), electronics (Electronics stores), sporting_goods (Sporting goods stores), home_improvement (Home improvement), furniture (Furniture stores), online_retail (Online retail), office_supply (Office supply stores), shipping (Shipping and couriers), online_advertising (Social media and search advertising), other (Everything else)."
        },
        "merchant": {
          "type": "string",
          "minLength": 1,
          "description": "Merchant name or web address as the user would say it or see it, e.g. \"Whole Foods\" or \"delta.com\"."
        },
        "valuation": {
          "enum": [
            "flat",
            "points-heavy"
          ],
          "type": "string",
          "description": "flat (default): points at their cash-out value, about 1¢. points-heavy: Amex MR and Chase UR at 1.7¢, for people who transfer points to airlines and hotels."
        },
        "memberships": {
          "type": "array",
          "items": {
            "enum": [
              "amazon-prime",
              "bank-of-america-account",
              "bank-of-america-small-business-account",
              "bofa-rewards-member",
              "bofa-rewards-preferred-honors",
              "bofa-rewards-preferred-plus",
              "bofa-rewards-premier",
              "nordy-club-ambassador"
            ],
            "type": "string"
          },
          "description": "Memberships the user has, such as amazon-prime. Rates that need one they don't have are listed separately."
        },
        "noAnnualFee": {
          "type": "boolean",
          "description": "Only cards with no annual fee."
        }
      }
    }
    arguments 126 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a4da032e9d9bbd5a.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a4da032e9d9bbd5a/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a4da032e9d9bbd5a/badge.svg)](https://brick.blue/agent/a4da032e9d9bbd5a?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.