360 Secure SkillHub
360 安全技能中心

Shelter

连接 Shelter Agent API(需 SHELTER_API_KEY),以只读方式获取安全消费额、资金跑道、14 天预测、提醒、省钱机会、购买力模拟、每日与主题理财教练及 Guardian AI 问答,并按决策树选用成本最低的端点,把返回的 JSON 解读为面向用户的理财建议。附数据模型参考文档与安装、卸载脚本。

code-with-brian
code-with-brian
热度 62.13
最近更新 2026-05-11 17:26:48
分类:生活依赖:第三方 API / 代码执行应用场景:个人理财 / 财务 / 推荐

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add shelter
Metadata
name
shelter
description
Connect to your Shelter financial data. Check safe-to-spend, predict cash crunches, find zombie subscriptions, simulate purchases, get AI coaching, and ask Guardian AI about your money. Read-only access to real bank data via Plaid.
version
1.0.0
metadata
{"openclaw":{"emoji":"🛡","requires":{"env":["SHELTER_API_KEY"],"bins":["curl"]},"primaryEnv":"SHELTER_API_KEY","homepage":"https://shelter.money"}}

Shelter

Connect to a user's Shelter financial data via the Agent API. All endpoints return JSON. You are a financial coach — interpret the data, don't just dump it.

Authentication

Every request needs two things:

  • Header: X-Shelter-Key: $SHELTER_API_KEY
  • Base URL: $SHELTER_API_URL (default: https://api.shelter.money/agent)

All examples below use these variables. Confirm they're set before making any call.

Decision Tree

Use this to pick the right endpoint for the user's question:

User wants to know... Endpoint Cost
"How am I doing?" / "Can I spend today?" GET /v1/status Cheap
"When do I run out of money?" GET /v1/runway Cheap
"What does next week look like?" GET /v1/forecast Medium
"Any problems I should know about?" GET /v1/alerts Medium
"Where am I wasting money?" GET /v1/opportunities Medium
"Give me the full picture" GET /v1/context Medium
"Can I afford X?" POST /v1/affordability Medium
"Give me today's coaching" GET /v1/coach/daily Medium
"Help me with [debt/savings/bills]" GET /v1/coach/advice?topic= Medium
Complex/nuanced question POST /v1/ask Expensive

Always start with the cheapest endpoint that answers the question. Only use /v1/ask when structured endpoints can't answer it.


Endpoints

Quick Checks

These are fast, cached, and cheap. Use them first.

GET /v1/status

The user's current financial health snapshot.

When to use: User asks how they're doing, wants safe-to-spend, or you need a quick health check before answering.

When NOT to use: User wants a multi-day forecast or detailed breakdown.

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/status"

Key response fields:

  • safeToSpend — dollars available after upcoming commitments
  • safeDays — days of runway at current burn rate
  • stressLevel — low | medium | high | critical
  • upcomingIncome — { amount, date, source } or null
  • nextCommitment — { name, amount, dueDate } or null
  • confidence — 0-100 data quality score
  • explanation — human-readable summary

How to summarize: Lead with safe-to-spend and stress level. Mention next income if it's within 3 days. Flag low confidence (<50) as "limited data."


GET /v1/runway

How long until the money runs out.

When to use: User asks about runway, burn rate, or when they'll be broke.

When NOT to use: User wants day-by-day detail (use forecast instead).

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/runway"

Key response fields:

  • safeDays — days of remaining runway
  • burnRate — average daily spending (last 30 days)
  • breathingRoom — buffer after commitments
  • nextCrunchDate — ISO date when balance goes negative (or null)
  • nextCrunchAmount — commitments due around the crunch
  • daysUntilCrunch — days until the crunch (or null)
  • explanation — human-readable summary

How to summarize: State days of runway and daily burn rate. If a crunch is coming, warn with the date and amount. If no crunch, reassure them.


Deep Analysis

More detailed endpoints. Use when quick checks aren't enough.

GET /v1/forecast

14-day day-by-day financial projection.

When to use: User asks what the next week/two weeks look like, or wants to see when specific bills hit.

When NOT to use: User just wants today's snapshot (use status).

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/forecast"

Key response fields:

  • forecast[] — array of daily projections: { date, projectedBalance, events[], isCrunch, isTight }
  • summary — { crunchDays, tightDays, lowestBalance, highestBalance }

How to summarize: Highlight crunch days (negative balance) and tight days first. Mention the lowest balance and when it occurs. List significant events (big bills, income).


GET /v1/alerts

Active warnings: zombie subscriptions, spending spikes, upcoming bills.

When to use: User asks what needs attention, or you want to proactively surface problems.

When NOT to use: User is asking about a specific topic (use advice instead).

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/alerts"

Key response fields:

  • alerts[] — { id, type, severity, title, description, amount?, daysUntil?, evidence? }
  • count — total alerts
  • hasCritical — boolean

How to summarize: Critical alerts first, then warnings, then info. Be specific about amounts and dates. If hasCritical is true, lead with urgency.


GET /v1/opportunities

Places the user is wasting money or could save.

When to use: User asks about saving money, zombie subscriptions, or spending optimization.

When NOT to use: User needs a forecast or health check.

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/opportunities"

Key response fields:

  • opportunities[] — { id, type, title, description, potentialSavings, difficulty, actionUrl? }
  • totalPotentialSavings — annual savings if all opportunities are acted on

How to summarize: Lead with total potential savings. List opportunities easiest-first. Include action URLs when available.


GET /v1/context

Full financial overview combining status, alerts, spending insights, and upcoming events.

When to use: User wants the big picture, or you need comprehensive context to answer a complex question.

When NOT to use: A more specific endpoint can answer the question. This is heavy.

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/context"

Key response fields:

  • snapshot — { availableBalance, breathingRoom, daysOfBreathingRoom, upcomingIncome, commitments[] }
  • highlights — { urgentActions, biggestOpportunities, recentWins }
  • alerts[] — same format as alerts endpoint
  • spendingInsights — { summary, byCategory, topMerchants, anomalies }
  • upcomingEvents[] — { type, name, amount, currentDate, priority }

How to summarize: Start with available balance and breathing room. Highlight urgent actions. Mention recent wins (positive reinforcement). Dive into spending insights only if the user asks.


POST /v1/affordability

Simulate whether the user can afford a specific purchase.

When to use: User asks "Can I afford X?" with a specific dollar amount.

When NOT to use: User is asking generally about spending (use status).

curl -s -X POST -H "X-Shelter-Key: $SHELTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 200, "description": "New headphones"}' \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/affordability"

Key response fields:

  • canAfford — boolean
  • safeToSpendAfter — remaining safe-to-spend after the purchase
  • impactOnRunway — how many fewer days of runway
  • recommendation — AI-generated advice
  • confidence — 0-100

How to summarize: Give a clear yes/no first, then explain the impact on their runway and safe-to-spend.


Coaching

AI-generated coaching messages tailored to the user's financial situation.

GET /v1/coach/daily

Today's personalized coaching message.

When to use: Start of a session, or user asks for their daily update.

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/coach/daily"

Key response fields:

  • messageType — daily_checkin | alert | celebration | suggestion | warning
  • headline — short headline
  • body — 2-4 sentences of coaching with specific numbers
  • actions[] — { label, actionType, actionTarget }
  • tone — encouraging | urgent | celebratory | supportive

How to summarize: Present the headline and body naturally. Suggest the actions conversationally. Match the tone.


GET /v1/coach/advice?topic=

Deep-dive coaching on a specific financial topic.

When to use: User asks for help with a specific area.

Topics: debt, savings, bills, subscriptions, negotiation, general

curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/coach/advice?topic=debt"

Response format: Same as daily coaching (headline, body, actions, tone).

How to summarize: Present the advice naturally. If the user didn't specify a topic, ask which area they want help with or default to general.


Guardian AI Chat

POST /v1/ask

Ask Guardian AI a free-form question about the user's finances. This is the most expensive endpoint — use it as a last resort when structured endpoints can't answer.

When to use: Nuanced questions, planning advice, or follow-ups that need reasoning.

When NOT to use: Questions answerable by structured endpoints above. Always try those first.

curl -s -X POST -H "X-Shelter-Key: $SHELTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "What should I prioritize right now?"}' \
  "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/ask"

Key response fields:

  • response — Guardian AI's natural language answer
  • confidence — 0-100
  • relatedAlerts[] — IDs of relevant alerts
  • limitRemaining — remaining /ask calls for the day

How to summarize: Present Guardian's response directly. If confidence is low (<50), note the uncertainty. If limitRemaining is low, mention it so the user knows.


Rate Limits

Endpoint group Free tier Premium tier
Status, Runway 60/hour 60/hour
Forecast, Alerts, Opportunities, Context, Affordability 60/hour 60/hour
Coach (daily, advice) 60/hour 60/hour
Ask (Guardian AI) 5/day 100/day

Error Codes

Code Meaning What to do
401 Invalid or missing API key Check SHELTER_API_KEY is set and valid
403 Key lacks required scope User needs to update key permissions at shelter.money
429 Rate limit exceeded Wait and retry. Check Retry-After header
500 Server error Wait a moment and retry

If you get a 401, tell the user to check their API key. Don't retry auth errors.

Setup

  1. Sign up at shelter.money
  2. Connect bank accounts via Plaid (takes ~60 seconds)
  3. Create an Agent API key at shelter.money/settings/api-keys
  4. Set your environment variable:
    export SHELTER_API_KEY="wv_your_key_here"
    
  5. Test the connection:
    curl -s -H "X-Shelter-Key: $SHELTER_API_KEY" \
      "${SHELTER_API_URL:-https://api.shelter.money/agent}/v1/status"
    

Security

  • Read-only — Shelter can see transactions and balances but can never move money
  • Scoped API keys — you choose exactly what the key can access
  • No raw bank data — the API returns computed insights (safe-to-spend, alerts), not raw transactions
  • Keys are hashed — the secret is never stored in plain text
  • Audit logging — every API call is logged
  • Instant revocation — disable any key from your settings

Data Reference

For field-by-field documentation of all response shapes, see references/DATA_MODEL.md.