Grok Bot, with rates it can act on.

Grok Bot is xAI’s always-on agent: you give it a job from the app, it works on a cloud computer whether or not yours is awake, and it takes tools as connectors, plugins and remote MCP servers. Because the hosted bot cannot run a local shell, this is one of the cases where RateAPI starts with MCP: one form, a URL, and a header. Grok Build has a terminal and starts with the RateAPI CLI instead. Once connected, Grok Bot can resolve which credit unions you can join from your own facts, price only those offers with the institution named, an observed date and a link to its own page on every rate, sanity-check a quote you already have, and keep a rate alert running after you close the app.

Updated 2026-09-18One connector formPersonal profile: 24 tools in loop order

Set up

Hosted Grok Bot speaks to remote MCP endpoints only, so it cannot use the CLI. Grok Build can—and should.

  1. Get a key

    $One request
    RATEAPI_ENROLLMENT_ID="${RATEAPI_ENROLLMENT_ID:-$(node -e 'console.log(crypto.randomUUID())')}"; curl -X POST https://api.rateapi.dev/keys \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: $RATEAPI_ENROLLMENT_ID" \
    -d '{"email": "[email protected]", "source": "grok-bot"}'
  2. Add the custom connector

    $Grok Bot → Settings → Plugins
    Settings → Plugins → Add Custom Connector
    Name: RateAPI
    Server URL: https://mcp.rateapi.dev/mcp?profile=personal
    Headers: x-api-key: rk_your_key_here
    # Grok Bot connects to REMOTE MCP servers only. This one is remote, streamable HTTP,
    # and answers a plain GET at the server root without a key, so you can confirm
    # reachability before entering the header.
    The form takes a name, a URL and optional headers. RateAPI also supports OAuth 2.1 for clients that can complete the flow, but the connector form has no place for a client id, so use the header — it is the same credential the REST API uses.
  3. Using Grok Build instead?

    $Grok Build terminal
    # Grok Build has a terminal, so start with the RateAPI CLI:
    npm install --global @rateapi/cli
    rateapi agent --json
    # Add MCP later only if you explicitly want a persistent native connection.
Connector
What you are adding: account-wide access to the RateAPI MCP server. Every Bot can use it.
Skill
A packaged workflow invoked with /. Not required — the tool descriptions carry the loop and the rules.
MCP
The protocol underneath. Grok Bot: remote HTTP only. Grok Build: stdio and HTTP.

Why an agent needs eligibility before price

The lowest rate in the state and the lowest rate this user can get are different numbers. A real response, captured 2026-08-28 and unedited except for length.

JSget_financing_decision — mortgage, $420k, Charlotte NC, 740 (captured 2026-08-28)
{
"summary": "Shop Around - Better rates available",
"resolved_county": { "county": "Mecklenburg", "source": "explicit" },
"top_offers": [
{
"rank": 1, "provider": "State Employees' Credit Union", "product": "30-Year Fixed",
"rate": "6%", "apr": "6.073%", "points": 0, "monthly_payment": "$2,538",
"eligibility": { "status": "unknown", "unknown_reason": "charter_type_not_geo_matchable" },
"eligibility_explanation": { "reason": "Eligibility at State Employees' Credit Union is undetermined; it is not ruled out.", "evidence_url": "https://www.ncsecu.org/join" }
},
{
"rank": 2, "provider": "Piedmont Advantage Credit Union", "product": "30-Year Fixed",
"rate": "6.125%", "apr": "6.284%", "points": 0, "monthly_payment": "$2,595",
"eligibility": { "status": "likely_eligible" },
"eligibility_explanation": { "status": "eligible", "reason": "You qualify for membership at Piedmont Advantage Credit Union.", "source": "graph" }
},
{
"rank": 3, "provider": "Allegacy Credit Union", "product": "30-Year Fixed",
"rate": "6.625%", "apr": "6.625%", "points": 0.25, "monthly_payment": "$2,689",
"eligibility": { "status": "unknown", "unknown_reason": "low_confidence_record" }
}
],
"rate_range": { "min": "6.073%", "max": "6.625%" }
}
// Observed 2026-08-28. Trimmed. The agent leads with #2: it is the best offer behind a door this user can open.
// #1 is not ruled out — a state employee would qualify — so the agent asks, rather than hides it.
Read the eligibility field, not the rank. The best APR in the state belongs to a credit union whose membership rule this user’s facts cannot decide. The second offer is 21 basis points higher and the user qualifies today, by a published county rule with the evidence attached.
JSrate_sanity_check — 6.625% quoted, NC 30-year (observed 2026-08-28)
{
"quote": { "rate": 6.625, "apr": 6.625 },
"percentile": 20, "classification": "plausible",
"market": { "min": 6.073, "median": 6.8845, "max": 7.197, "count": 40, "as_of": "2026-08-28T04:36:37Z" },
"note": "This quote beats 80% of the 40 live NC 30-year mortgage offers we track (median 6.885%).",
"better_offers": [
{ "credit_union_name": "State Employees' Credit Union", "apr": 6.073, "apr_delta_bps": 55,
"estimated_monthly_savings": 144.23, "can_you_join": "unknown" },
{ "credit_union_name": "Piedmont Advantage Credit Union", "apr": 6.284, "apr_delta_bps": 34,
"estimated_monthly_savings": 89.52, "can_you_join": "yes" }
],
"share_url": "https://rateapi.dev/rate-check?product=mortgage&state=NC&rate=6.625&term=360&zip=28202"
}
// Observed 2026-08-28. "can_you_join: yes" is the field that turns a percentile into a plan.

The first conversation

Prompts that exercise the whole loop. The CLI routes each request through its capability catalog; a persistent MCP connection exposes the corresponding native tools.

Grok Bot keeps working after you close the app, so the fourth prompt — the alert — is the one that plays to its strength.

1
“I live in 28202 and work at Atrium Health. Which credit unions can I actually join, and what is the best 30-year rate among them for a $420k purchase with a 740 score?”
2
“I was quoted 6.625% on a 30-year in North Carolina. Is that good, and can I do better somewhere that will have me?”
3
“Watch NC 30-year rates and tell me when something I can join drops below 6.1%.”
4
“Which credit unions have a branch within 10 miles of 28202, and what do they charge on a 60-month used auto loan?”
Start terminal agents with rateapi agent --json, then use the narrowest CLI capability for the job. If you later add persistent MCP, connect to https://mcp.rateapi.dev/mcp?profile=personal so the server advertises only the consumer surface (24 of 89 tools, in loop order). The corresponding first-conversation tools are: find_eligible_credit_unions, get_financing_decision, rate_sanity_check, subscribe_rate_alert, find_credit_unions_near_zip, get_eligibility_coverage. Drop ?profile=personal for the full developer registry.

What we have and have not verified

Honesty about the evidence behind this page.

Verified
The connector path (Settings → Plugins → Add Custom Connector, URL + header, remote-only) and the Grok Build command are taken from xAI’s documentation and current third-party guides. The server itself is remote streamable-HTTP with header auth, which is what the form accepts.
Run by us
Not yet — Grok Bot needs a subscription account. The same prompts, run through Hermes Agent and OpenClaw on 2026-08-28 against this server, produced the expected loop (eligibility first, then price, every rate dated); see those pages for the verbatim answers.
If something differs
Grok Bot’s v1 connector speaks JSON-RPC over HTTPS without SSE. The server answers plain POST requests, so this should not matter; if it does, tell us and we will fix the server, not the page.

What the agent will and will not do

These constraints ship in every tool description, so the agent inherits them without prompting.

Every rate is attributed and dated
“6.284% APR at Piedmont Advantage Credit Union, observed 2026-08-28, per its published rate sheet.” Never a bare number; never a rate outside the freshness window.
Unknown is never no
When eligibility cannot be confirmed the agent says so, with the reason, and asks the one question that would resolve it. It does not hide the institution.
No approvals
Published pricing is not an offer. Membership first, then the lender underwrites. The agent finds reachable offers and shows the evidence.
No national average
Benchmarks are medians across the credit unions tracked, labelled as such.
Credit unions only
About 2,950 with fresh rates across 55 states and territories. Not banks, not indices, not non-US lenders — the agent says so rather than guessing.
No credit pull
Eligibility is decided from published rules and the user’s own facts. Score, income and debt are never requested to decide who they can join.

Frequently asked