# Send Shelter to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "shelter",
    "name": "Shelter",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/code-with-brian/shelter",
    "canonicalUrl": "https://clawhub.ai/code-with-brian/shelter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/shelter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=shelter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "clawhub.json",
      "install-skill.js",
      "package.json",
      "references/DATA_MODEL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "shelter",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T05:03:15.650Z",
      "expiresAt": "2026-05-07T05:03:15.650Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=shelter",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=shelter",
        "contentDisposition": "attachment; filename=\"shelter-1.0.3.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "shelter"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/shelter"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/shelter",
    "downloadUrl": "https://openagent3.xyz/downloads/shelter",
    "agentUrl": "https://openagent3.xyz/skills/shelter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/shelter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/shelter/agent.md"
  }
}
```
## Documentation

### 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...EndpointCost"How am I doing?" / "Can I spend today?"GET /v1/statusCheap"When do I run out of money?"GET /v1/runwayCheap"What does next week look like?"GET /v1/forecastMedium"Any problems I should know about?"GET /v1/alertsMedium"Where am I wasting money?"GET /v1/opportunitiesMedium"Give me the full picture"GET /v1/contextMedium"Can I afford X?"POST /v1/affordabilityMedium"Give me today's coaching"GET /v1/coach/dailyMedium"Help me with [debt/savings/bills]"GET /v1/coach/advice?topic=MediumComplex/nuanced questionPOST /v1/askExpensive

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

### 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 groupFree tierPremium tierStatus, Runway60/hour60/hourForecast, Alerts, Opportunities, Context, Affordability60/hour60/hourCoach (daily, advice)60/hour60/hourAsk (Guardian AI)5/day100/day

### Error Codes

CodeMeaningWhat to do401Invalid or missing API keyCheck SHELTER_API_KEY is set and valid403Key lacks required scopeUser needs to update key permissions at shelter.money429Rate limit exceededWait and retry. Check Retry-After header500Server errorWait a moment and retry

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

### Setup

Sign up at shelter.money
Connect bank accounts via Plaid (takes ~60 seconds)
Create an Agent API key at shelter.money/settings/api-keys
Set your environment variable:
export SHELTER_API_KEY="wv_your_key_here"


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.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: code-with-brian
- Version: 1.0.3
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T05:03:15.650Z
- Expires at: 2026-05-07T05:03:15.650Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/shelter)
- [Send to Agent page](https://openagent3.xyz/skills/shelter/agent)
- [JSON manifest](https://openagent3.xyz/skills/shelter/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/shelter/agent.md)
- [Download page](https://openagent3.xyz/downloads/shelter)