Card Rate
Goal
Return the earning-structure view of one exact card variant in compact format.
Search Strategy: knowledge-first
Use training knowledge plus one issuer page fetch + one secondary source for merchant-coding caveats. Do NOT spawn a subagent — answer directly.
Workflow
- Resolve the card using ../card-identity/SKILL.md. If ambiguous, return a numbered choice list and stop.
- Run one Brave Search API call (see
search_methodin ../card-shared/source-policy.yaml):
Ifcurl -sS "https://api.search.brave.com/res/v1/web/search?q=CARD+NAME+earning+rates+categories&count=10" -H "X-Subscription-Token: $BRAVE_API_KEY"$BRAVE_API_KEYis not set, fall back to WebSearch. - Fetch pages — pick the top issuer URL and top 1 secondary URL (prefer bankrate.com, then thepointsguy.com) from the search results. Fetch both in parallel:
Search snippets are too shallow for earning details — the full page has complete rate tables and caps.curl -sS -L "URL" | sed 's/<[^>]*>//g' | tr -s '\n' | head -200 - Combine the fetched page content + search snippets + training knowledge to fill all required sections.
- Follow ../card-shared/confidence-rules.md. Flag any detail that may have changed since training data.
- Return compact markdown using the
card-ratecontract in ../card-shared/command-contracts.yaml. - YAML is internal only — do not include it in user-facing output.
- Do not show a "Why It Matters" section.
Required Sections
## 📊 Rate Summary## 📈 Earning Categories## 🚫 Caps And Exclusions## 📋 Confidence Notes## 🔗 Sources
Omit ## Card Identity when the match is confident. Use short category lines and a compact exclusions/caps block.