using-notification-send

How to email or text the Wayfinder Shells instance owner from agents/scripts via the notify MCP tool or NotifyClient (Markdown body rendered to themed HTML for email, throttled).

Best use case

using-notification-send is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

How to email or text the Wayfinder Shells instance owner from agents/scripts via the notify MCP tool or NotifyClient (Markdown body rendered to themed HTML for email, throttled).

Teams using using-notification-send should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/using-notification-send/SKILL.md --create-dirs "https://raw.githubusercontent.com/WayfinderFoundation/wayfinder-paths-sdk/main/.claude/skills/using-notification-send/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/using-notification-send/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How using-notification-send Compares

Feature / Agentusing-notification-sendStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

How to email or text the Wayfinder Shells instance owner from agents/scripts via the notify MCP tool or NotifyClient (Markdown body rendered to themed HTML for email, throttled).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

## TL;DR

Notify the user who owns this Wayfinder Shells instance. Email renders Markdown into themed HTML; SMS/text sends concise plain text.

**MCP tool (preferred from agents):**

```
notification_send(
  title="Rebalance complete",
  message="Moved **50 USDC** from Aave → Morpho.\n\n- tx: 0x…\n- new APY: 7.4%",
)
```

**Python client (from scripts):**

```python
from wayfinder_paths.core.clients.NotifyClient import NOTIFY_CLIENT

await NOTIFY_CLIENT.notify(
    title="Rebalance complete",
    message="Moved **50 USDC** from Aave → Morpho.\n\n- tx: 0x…\n- new APY: 7.4%",
    delivery="email",  # or "sms" / "text"
)
```

Both POST to `{api_base}/opencode/notify/` with the configured `WAYFINDER_API_KEY`.

## Limits & gotchas

- **Title:** ≤ 200 chars (required, non-empty after strip).
- **Message:** ≤ 20 000 chars (required). Rendered as Markdown — headings, lists, tables, fenced code, links all work.
- **Delivery gate:** Email requires `email_verified: true`; SMS/text requires a verified phone number.
- **Throttle:** Backend caps at **12 notifications / user / day** across email/SMS. Budget sends; don't spam progress updates.
- **Shells-only:** No-op (or HTTP error) outside a Wayfinder Shells instance. The MCP tool gates on `is_opencode_instance()` indirectly via the API; the client just hits the URL. Detection: `OPENCODE_INSTANCE_ID` env var is set, or the health probe at `http://localhost:3096/global/health` returns `healthy: true`.
- Client returns the parsed JSON dict directly (no `(ok, data)` tuple — it's a `WayfinderClient`, not an adapter).
- **Scheduled jobs:** Routine successful runs already sync to backend job history. Only opt into all success chat `job_result` messages with `always_notify_session_on_job_completion=True` when the user explicitly wants live run output. For conditional chat callbacks, print one line from the script: `WAYFINDER_JOB_RESULT {"summary":"Funding crossover detected","instructions":"Research whether to unroll the position.","severity":"warning"}`.

## When to use

- Report completed fund-moving work to the owner ("rebalance done", "withdraw confirmed").
- Surface decisions that need them ("APY dropped below threshold — pause strategy?").
- Flag failures you can't auto-resolve.
- Escalate `job_result` events from scheduled jobs only when they need owner attention.

Don't use for chatty progress updates. Alert scripts should be edge-triggered: persist the previous state, notify once when a threshold first crosses or an action is taken, then suppress repeats until a reset condition or cooldown. If the right response is more research or a proposed script rather than an external notification, emit `WAYFINDER_JOB_RESULT` instead of calling Notify.

## Markdown formatting tips

- Use `**bold**` for amounts and statuses.
- Code-fence tx hashes / addresses so they don't wrap mid-string.
- Tables work for multi-step rebalance summaries.
- Links: `[Block explorer](https://...)` → clickable in the rendered email.

## Error shape

MCP tool returns `{"ok": false, "error": {"code": ..., "message": ...}}` for:

- `invalid_request` — title/message empty or exceeds limit.
- `notify_http_error` — backend rejected (check `details` for body).
- `notify_error` — transport failure.

Related Skills

using-visual-chart-annotations

14
from WayfinderFoundation/wayfinder-paths-sdk

How to read Wayfinder Shells frontend state, create chart panes, and add TradingView annotations or overlays to the default live chart or agent-created workspace charts.

using-uniswap-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Uniswap V3 adapter for concentrated liquidity on Base/Arbitrum/Ethereum (LP provisioning, position management, tick math, and common gotchas).

using-sparklend-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the SparkLend adapter for the functionality implemented in this repo (market reads, user state, supply/withdraw, borrow/repay, collateral, rewards, and native-token flows).

using-polymarket-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Polymarket adapter in Wayfinder Paths for market discovery (Gamma), orderbooks/prices/history (CLOB), user positions/activity (Data API), and execution (buy/sell + redeem) using pUSD collateral on Polygon (including deposit / withdraw preparation flows).

using-pendle-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Pendle adapter in Wayfinder Paths for PTs (Principal Tokens), YTs (Yield Tokens), and Pendle limit orders: market discovery, historical data, Hosted SDK swap tx building, taker fills, maker orders, inputs/outputs, chain IDs, unit handling, and approvals.

using-morpho-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Morpho adapter for Morpho Blue markets + MetaMorpho vaults (market discovery, positions, collateral ops, rewards, and common gotchas).

using-moonwell-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Moonwell adapter for lending/borrowing on Base (market discovery, APYs, collateral management, and common gotchas).

using-hyperliquid-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use Hyperliquid adapter data (meta, funding, candles, orderbooks) and execution surfaces (orders/transfers) in Wayfinder Paths, including required executor wiring.

using-hyperlend-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to read Hyperlend markets/time-series and execute lend/withdraw flows in Wayfinder Paths (inputs/outputs, unit handling, and safety).

using-euler-v2-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Euler v2 (EVK / eVault) adapter for vault market discovery, APYs, positions, and EVC-batched lend/borrow flows.

using-etherfi-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the ether.fi adapter for ETH liquid restaking on Ethereum mainnet (stake ETH→eETH, wrap/unwrap weETH, async withdraw requests, and position reads).

using-ethena-vault-adapter

14
from WayfinderFoundation/wayfinder-paths-sdk

How to use the Ethena sUSDe vault adapter for spot APY, cooldown/position reads, and USDe→sUSDe stake/unstake flows (Ethereum mainnet vault).