From e8b39e6fb7a346e6719760b7fa51438488ee0c9f Mon Sep 17 00:00:00 2001 From: "tempo-github-sts[bot]" <312736176+tempo-github-sts[bot]@users.noreply.github.com> Date: Thu, 15 Oct 2026 18:36:16 +0000 Subject: [PATCH] chore(wallet): sync skills --- manifest.config.ts | 2 +- plugins/wallet/.claude-plugin/plugin.json | 2 +- plugins/wallet/.codex-plugin/plugin.json | 2 +- plugins/wallet/.cursor-plugin/plugin.json | 2 +- plugins/wallet/plugin.json | 2 +- plugins/wallet/skills/wallet/SKILL.md | 172 +++++++++++++----- skills.lock.json | 10 + .../gemini/wallet/gemini-extension.json | 2 +- .../plugins/wallet/.claude-plugin/plugin.json | 2 +- .../plugins/wallet/.codex-plugin/plugin.json | 2 +- .../plugins/wallet/.cursor-plugin/plugin.json | 2 +- .../manifests/plugins/wallet/plugin.json | 2 +- 12 files changed, 142 insertions(+), 60 deletions(-) diff --git a/manifest.config.ts b/manifest.config.ts index 64c75d6..d5f07eb 100644 --- a/manifest.config.ts +++ b/manifest.config.ts @@ -76,7 +76,7 @@ export const plugins: readonly PluginDefinition[] = [ }, { name: 'wallet', - version: '0.1.0', + version: '0.1.1', description: 'Set up Tempo Wallet and make explicitly approved paid API requests.', displayName: 'Tempo Wallet', homepage: 'https://tempo.xyz/developers/docs/wallet/use-with-agents', diff --git a/plugins/wallet/.claude-plugin/plugin.json b/plugins/wallet/.claude-plugin/plugin.json index fc588fd..881d32e 100644 --- a/plugins/wallet/.claude-plugin/plugin.json +++ b/plugins/wallet/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "wallet", "displayName": "Tempo Wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "author": { "name": "Tempo" diff --git a/plugins/wallet/.codex-plugin/plugin.json b/plugins/wallet/.codex-plugin/plugin.json index ba37dd9..0b918c1 100644 --- a/plugins/wallet/.codex-plugin/plugin.json +++ b/plugins/wallet/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "homepage": "https://tempo.xyz/developers/docs/wallet/use-with-agents", "repository": "https://github.com/tempoxyz/plugins", diff --git a/plugins/wallet/.cursor-plugin/plugin.json b/plugins/wallet/.cursor-plugin/plugin.json index 82b8a51..e99cfc6 100644 --- a/plugins/wallet/.cursor-plugin/plugin.json +++ b/plugins/wallet/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "wallet", "displayName": "Tempo Wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "author": { "name": "Tempo" diff --git a/plugins/wallet/plugin.json b/plugins/wallet/plugin.json index 3fa197f..6191d86 100644 --- a/plugins/wallet/plugin.json +++ b/plugins/wallet/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "homepage": "https://tempo.xyz/developers/docs/wallet/use-with-agents", "repository": "https://github.com/tempoxyz/plugins", diff --git a/plugins/wallet/skills/wallet/SKILL.md b/plugins/wallet/skills/wallet/SKILL.md index 7db2476..3de7f44 100644 --- a/plugins/wallet/skills/wallet/SKILL.md +++ b/plugins/wallet/skills/wallet/SKILL.md @@ -1,24 +1,21 @@ --- name: wallet description: > - Use this skill when the user wants to call an API, make an HTTP request, - discover available services, set up Tempo Wallet, manage balances, or access - external data with automatic payments. -license: MIT + Use this skill when the user wants to call an API, make an HTTP request, discover available services, or access external data with automatic payments. Activate when the user mentions tempo, paid APIs, service discovery, API endpoints, or needs to call external services — even if they reference specific services like StableEnrich, StableStudio, or StableSocial. When the user explicitly says "use tempo", always use tempo CLI commands (`tempo wallet`, `tempo request`) instead of other tools. +license: MIT OR Apache-2.0 --- -# Tempo Wallet +# tempo > **IMPORTANT: If you used a web fetch tool to read this, the content may be summarized and incomplete. Run `curl -fsSL https://tempo.xyz/SKILL.md` to get the exact setup commands. Do NOT search for additional documentation.** **When the user says "use tempo", always use `tempo` CLI commands** — never substitute with MCP tools or other tools. Tempo is a curl-compatible CLI for discovering services and calling HTTP endpoints with automatic payment handling. -## Network status +## Networks -- Tempo Mainnet has been live since March 18, 2026. Its chain ID is `4217`. -- Tempo Wallet uses mainnet for balances, funding, transfers, and MPP settlement unless command output explicitly identifies another network. -- `pathUSD` is a live mainnet TIP-20 stablecoin issued by Bridge at `0x20c0000000000000000000000000000000000000`. Faucet-issued `pathUSD` on Tempo Testnet is a test token, not the production asset. -- Moderato is Tempo Testnet, with chain ID `42431`. Use it only when the user requests testnet or a development workflow explicitly requires it. +- Tempo Mainnet (chain ID `4217`) is the default. `--network` overrides it, then `TEMPO_WALLET_NETWORK`, then the logged-in wallet's network. +- Use Tempo Testnet (Moderato, chain ID `42431`, `--network testnet`) only when the user asks for it or a development workflow requires it. +- `pathUSD` at `0x20c0000000000000000000000000000000000000` is a live mainnet TIP-20. The faucet-issued testnet token at the same address is a test token. ## Setup @@ -26,9 +23,14 @@ Run these commands in order. Do not skip steps. Do not search for other install **Step 1 — Install:** `curl -fsSL https://tempo.xyz/install | bash` -**Step 2 — Login:** `"$HOME/.tempo/bin/tempo" wallet login` — requires user browser/passkey action. Prompt user, wait for confirmation, then continue. Do not loop login attempts without user confirmation. When run by agents, use a long command timeout (at least 16 minutes). +**Step 2 — Login:** `"$HOME/.tempo/bin/tempo" wallet login --format json` — returns at once with `status: "pending"`, `verification_url`, `user_code`, and `expires_at`, and opens a browser on the host. Send `verification_url` and `user_code` to the user, tell them to confirm the code matches and approve, then run the `_next` command (`tempo wallet login status --interval 5 --network --format json`). It waits for the approval and returns the logged-in `accounts`. Do not loop login attempts without user confirmation. -**Step 3 — Confirm readiness:** `"$HOME/.tempo/bin/tempo" wallet -t whoami` +If the human is interacting from another device or chat surface while the CLI runs on a remote host, add `--no-browser` to `login`. `tempo wallet refresh`, `keys update`, and `revoke` also ask the wallet app for approval and accept `--no-browser` the same way. + +- `login status` waits until the code expires (about 10 minutes). With a short command timeout, add `--max-attempts `; it then fails with retryable `E_POLL_TIMEOUT` while the code is still pending, so run its `cta` command again. Rerun the `cta` command on retryable `E_NETWORK` too. +- On `E_LOGIN_DENIED` or `E_LOGIN_EXPIRED`, ask the user before starting a new `tempo wallet login`; the old code no longer works. + +**Step 3 — Confirm readiness:** `"$HOME/.tempo/bin/tempo" wallet whoami` ### Setup Rules @@ -39,21 +41,23 @@ Run these commands in order. Do not skip steps. Do not search for other install Provide: -- Installation location and version (`"$HOME/.tempo/bin/tempo" --version`). -- Wallet status from `"$HOME/.tempo/bin/tempo" wallet -t whoami` (address and balance; include key/network fields when present). -- If token balance is 0, direct user to `"$HOME/.tempo/bin/tempo" wallet fund` or the wallet dashboard to add funds. -- To check MPP Credits separately, run `"$HOME/.tempo/bin/tempo" wallet -t whoami --credits`. +- Installation location and version (`$HOME/.tempo/bin/tempo --version`). +- Wallet status from `tempo wallet whoami` (address, network, and balance; include key fields when present). +- Check MACH with `tempo wallet whoami --mach`. Fund with `tempo wallet fund --mach --amount `; MACH is an on-chain six-decimal token, not a legacy credit balance. +- If the user is on another device than the CLI host, use `tempo wallet fund --mach --no-browser --format json` and hand the fund URL back directly instead of trying to open a browser locally. +- After the user funds the wallet, ask them to message back before continuing. - 2-3 simple starter prompts tailored to currently available services. To generate starter prompts, list available services and pick useful beginner examples: ```bash -"$HOME/.tempo/bin/tempo" wallet -t services --search ai +tempo wallet services --search ai ``` Starter prompts should be user-facing tasks (not command templates), for example: - Avoid chat/conversational LLM starter prompts when already talking to an agent. Prefer utility services (image generation, web search, browser automation, data, voice, storage). + - "Generate a dog image with a blue background and save it as `dog.png`." - "Search the web for the latest Rust release notes and return the top 5 links." - "Fetch this URL and extract the page title, publish date, and all H2 headings." @@ -61,66 +65,134 @@ Starter prompts should be user-facing tasks (not command templates), for example ## Use Services ```bash -"$HOME/.tempo/bin/tempo" wallet -t whoami -"$HOME/.tempo/bin/tempo" wallet -t services --search -"$HOME/.tempo/bin/tempo" wallet -t services +tempo wallet whoami +tempo wallet services --search +tempo wallet services ``` - Select `SERVICE_ID` from search results that best matches user intent. When multiple match: prefer best semantic fit, then endpoint fit, then pricing clarity, then first in list. -- **Anchor on `"$HOME/.tempo/bin/tempo" wallet -t services `** — it shows the exact URL, method, path, and pricing for every endpoint. Build request URL as `/` from discovered metadata only. -- If service details include `supportsCredits: true`, MPP Credits may be used for one-time `tempo.charge` payments. Credits are separate from token balances; check them with `"$HOME/.tempo/bin/tempo" wallet -t whoami --credits` and buy them with `"$HOME/.tempo/bin/tempo" wallet fund --credits`. +- **Anchor on `tempo wallet services `** — it shows the exact URL, method, path, and pricing for every endpoint. Build request URL as `/` from discovered metadata only. +- Use the endpoint's exact MPP challenge and an explicit `--max-spend` budget for payment. Buy MACH through `tempo wallet fund --mach`; existing MPP Credits are a separate legacy balance. - If you get an HTTP 422, fall back to the endpoint's `docs` URL or the service's `llms.txt` for exact field names. - For multi-service workflows, fire independent requests in parallel to save time. ### Request Templates +Quote first; `--dry-run` reports the price without signing or paying: + ```bash # Quote JSON POST -"$HOME/.tempo/bin/tempo" request -t --dry-run -X POST --json '{"input":"..."}' / +tempo request -t --dry-run -X POST --json '{"input":"..."}' / # Quote GET -"$HOME/.tempo/bin/tempo" request -t --dry-run -X GET / +tempo request -t --dry-run -X GET / +``` + +Show the user the quoted `amount` and any session `deposit`, and wait for explicit approval before paying, unless their budget already covers it. Pass a budget as `--max-spend` on the dry run too, since it changes the deposit a session locks. Then run the same request without `--dry-run`, pinned to what was approved: + +```bash +tempo request -t -X POST --max-spend --network --payment-intent --payment-token --json '{"input":"..."}' / +tempo request -t -X GET --max-spend --network --payment-intent --payment-token / ``` -Present the dry-run price and wait for explicit approval before making a paid -request, unless the user already supplied a budget that covers it. Then run the -matching request without `--dry-run`: +- `` is `mainnet` for `chain_id` `4217` or `testnet` for `42431`; `` and `` are the quote's `intent` and `token`. Keep `--mach` instead of `--payment-token` when the quote used it. The request then refuses a challenge for more, or on another chain, token, or intent. It does not pin the recipient. +- `recurring: true` is a subscription. The quote does not show its renewal terms and `--max-spend` refuses it, so do not run it: tell the user, and quote again with `--payment-intent charge` or `session`. +- `payment_required: false` means the dry run already sent the request; rerun it without `--dry-run` only when repeating the request is safe. + +### MACH Funding and Payments ```bash -"$HOME/.tempo/bin/tempo" request -t -X POST --json '{"input":"..."}' / -"$HOME/.tempo/bin/tempo" request -t -X GET / +tempo wallet whoami --mach +# Hand this JSON URL to the human on any device. +tempo wallet fund --mach --amount 10 --no-browser --format json ``` +Hosted MACH checkout accepts $5–$100 USD with at most two decimal places. The command opens the browser and returns immediately by default; `--no-browser` returns the URL without opening it. The funding handoff identifies the destination wallet, chain, and USD amount. Both general and direct MACH funding use the amount as an editable prefill; an existing checkout retains its own amount for safe retries. Pending means funding has not been verified, even when the command exits successfully. Recheck the MACH balance after checkout. To wait locally, add `--wait`; it watches MACH with `--mach`, otherwise USDC.e on mainnet or pathUSD on testnet. The default wait timeout is ten minutes and `--timeout` accepts seconds only with `--wait`. Any positive balance increase completes the wait, even below `--amount`. This observes incoming funds; it does not verify a particular checkout or purchase amount. `--no-wait` remains accepted for compatibility. Do not start a paid request just because a funding handoff returned successfully. + +Use `tempo request --mach --max-spend ` (or `--payment-token MACH`) to require MACH settlement for a one-time charge. The challenge must explicitly enable machine tokens. Missing MACH funds, liquidity, or permissions fail without stablecoin fallback. Sessions are unsupported; use `--dry-run` to inspect an offer without spending. + +MACH uses the canonical MPP SDK settlement route. Do not construct swap calldata or call legacy Coinflow redemption APIs. Do not infer MACH support from a service's hostname; inspect the actual MPP challenge and use the standard request flow. + +### Legacy MPP Credits + +Use `tempo wallet whoami --credits` to inspect existing off-chain MPP Credits and `tempo wallet transfer --credits` to spend them. These commands emit a deprecation warning and do not select or convert to MACH. `tempo request` does not automatically use legacy credits. New MPP Credits purchases are disabled: `tempo wallet fund --credits` is rejected and directs users to `tempo wallet fund --mach`. + +For credit payments, use `--amount-cents` as the direct payment amount or the maximum credit debit for an MPP challenge, including quoted gas fees; `TEMPO_MAX_SPEND` also caps the total debit in USD. Challenge spending requires one of those caps; `--dry-run` does not. Do not use positional transfer arguments with `--credits`, or combine `--to`, `--data`, or `--value` with `--mpp-challenge` or `--mpp-challenge-file`. Review the destination and calldata in `--dry-run` output before spending. Split-payment challenges are unsupported. Coinflow remains trusted to execute the submitted transaction; its legacy permit authorizes a credit debit rather than a specific recipient. + ### Response Handling - Return result payload to user directly when request succeeds. - If response contains a file URL (e.g., image generation), download it locally: `curl -fsSL "" -o `. -- If response is a usage/auth readiness error, run `"$HOME/.tempo/bin/tempo" wallet login` and retry once. -- If response indicates payment/funding limit issues, report clearly and stop. For token funding use `"$HOME/.tempo/bin/tempo" wallet fund`; for MPP Credits use `"$HOME/.tempo/bin/tempo" wallet fund --credits` only when service details show `supportsCredits: true`. -- After multi-request workflows, check remaining balance with `"$HOME/.tempo/bin/tempo" wallet -t whoami`. +- If response is a usage/auth readiness error, run `tempo wallet login`, finish it with its `_next` `login status` as in Setup, and retry once. When a wallet command returns `E_NOT_AUTHENTICATED`, `E_KEY_EXPIRED`, or `E_AUTH_REFRESH_REQUIRED`, run the `tempo wallet login` or `tempo wallet refresh` command in its `cta` instead; it keeps the command's `--network`. `transfer` and `swap` need a usable access key; `keys update`, `revoke`, and `sessions close` need only the login. +- If response indicates payment/funding limit issues, report clearly and stop. Check `tempo wallet whoami --mach` and offer `tempo wallet fund --mach --no-browser --format json` to fund from another device. Review token-specific access-key limits before retrying. +- When a wallet, key, or RPC problem is unclear, run `tempo wallet doctor --format json` and report its `fail` and `warn` checks; it exits 0 even when unhealthy and never shows secrets. `tempo wallet debug` is a deprecated alias of it. +- After multi-request workflows, check remaining balance with `tempo wallet whoami`. +- Wallet results with a follow-up step include `instruction` and `_next`. Run `_next.argv` as given (`_next.command` is the shell-quoted form), but only after the user approves any spend, transfer, or revocation it performs. +- Revocation cannot be undone. Run `tempo wallet revoke --dry-run` to show the key, wallet, network, limits, and expiry, then run its `_next` (which adds `--yes`) only after the user approves. Without `--yes`, an agent run returns `E_USAGE` with that command as its `cta`. Only the logged-in wallet's keys on the selected network can be revoked: keys stored on this host, or keys from another device that the chain shows authorized for the wallet. Any other address returns `E_USAGE` listing the wallet's stored keys. If it returns `E_NETWORK` because the chain does not show the key revoked, the local key is kept; report it to the user before retrying. ### Rules - Always discover URL/path before request; never guess endpoint paths. -- `"$HOME/.tempo/bin/tempo" request` is curl-compatible for common flags (method, headers, data, redirects, timeouts, output). -- Use `-t` for agent calls to keep output compact, except interactive login (`"$HOME/.tempo/bin/tempo" wallet login`). -- Use `--dry-run`, show the price, and obtain approval before potentially expensive requests. +- `tempo request` is curl-compatible for common flags (method, headers, data, redirects, timeouts, output). +- TOON is the default output format (`-t` selects it explicitly); use another format flag only when needed. +- Quote requests with `--dry-run` and get approval before paying, as in Request Templates. The quote reports the per-call `amount`, the session `deposit` the payment would lock (for `session: "reuse"`, only a top-up the voucher needs), the wallet `balance` and access key `access_key_limit` for the debited token, the effective `max_spend` (the default 10 when no cap is set), and `within_budget` against it. `null` means unknown or, for a subscription offer, that no cap applies. `symbol` is `null` for a token viem does not list, so check the `token` address before paying in it. +- If the user gives a spend cap in natural language (for example "do X for $5", "don't spend more than $10", or "budget is 2 USDC"), include `--max-spend ` on `tempo request` commands. For non-CLI contexts, use `TEMPO_MAX_SPEND`. +- Without `--max-spend` or `TEMPO_MAX_SPEND`, `tempo request` caps each charge, session deposit, and session's cumulative spend at 10 token units. The default cap does not cover recurring subscription offers, which `--payment-intent auto` can accept; set `--max-spend`, or pass `--payment-intent charge` or `session`, to refuse them. A payment over the cap fails with `E_LIMIT_EXCEEDED` before anything is signed; report the required amount, and run the `cta` command (the same request with `--max-spend `) only after the user approves that spend, replacing any `` credential with its original value. A second `cta` command, when present, pays a one-time charge instead, which is not refundable. +- A successful paid request prints a short receipt on stderr, and `--write-meta ` adds it as `payment`: the `amount` paid in `token` (`symbol`), the `tx_hash` when the server reports one, the `payer`, and for a session its `session` (`open` or `reuse`), `channel_id`, `deposit_locked`, and `cumulative` (the total of its signed vouchers, not confirmed spend). A `subscription` (`period`, `expires`) means the wallet authorized `amount` every period until it expires, not a one-time payment, and a `tx_hash` means the first period was already paid; tell the user. With `-j` or `--format`, stderr stays empty, so pass `--write-meta` to read the receipt. A receipt with `outcome: "unknown"` belongs to an `E_PAYMENT_OUTCOME_UNKNOWN` failure: treat the payment as unconfirmed and check with the provider before retrying. A newly opened session keeps its deposit locked until closed: report it, and when you are done with that service, run the receipt's `_next` (`tempo wallet sessions close `) to request the close, then follow that command's `_next` after the grace period to withdraw the unspent deposit. - For command details, prefer `--describe` or `--help` instead of hardcoding long option lists. +## Swap Tokens + +Use the first-party wallet CLI for Tempo token swaps. Do not discover or sign in to third-party or legacy DEX websites. + +```bash +# Quote only. Tokens are symbols listed for the network (USDC.e, pathUSD) or full 0x addresses. +tempo wallet swap --dry-run + +# Submit only after the user approves the quote, token addresses, and bounds. +tempo wallet swap --min-amount-out --yes +``` + +- The amount is exact input by default. Add `--exact-out` to request an exact output amount. +- Default maximum slippage is 50 basis points; override it with `--slippage-bps `. +- Submission re-quotes. Pass the reviewed `min_amount_out` as `--min-amount-out` (or `max_amount_in` as `--max-amount-in` with `--exact-out`) so a worse quote is refused; the dry run's `_next` already includes it. +- If `requires_access_key_update` is true, ask the wallet owner to approve the printed `tempo wallet keys update` command before retrying. +- A swap is sent only on the network the wallet is logged in on. On another `--network`, submission returns `E_USAGE` with a `tempo wallet login --network ` `cta`; run it, then rerun the swap. +- Always run `--dry-run` first and preserve full token addresses in the approval request. + +## Transfer Tokens + +```bash +# Review only: the fee estimate, the sender's balance, and whether it covers the transfer. +tempo wallet transfer --dry-run + +# Send only after the user approves the amount, token address, recipient, and fee. +tempo wallet transfer --yes +``` + +- Without `--yes`, an agent run sends nothing and returns `E_USAGE`; the dry run's `_next` already includes `--yes` and pins the reviewed `fee_token` with `--fee-token`. +- `fee_estimate` is in `fee_token` units. `sufficient_balance` checks `balance` against the amount and `fee_token_balance` against the fee. `fee_token`, `fee_estimate`, `balance`, `fee_token_balance`, and `sufficient_balance` are `null` when unknown; treat `null` as unknown, not as sufficient. +- If `sufficient_balance` is false, report the shortfall and stop; offer `tempo wallet fund`. +- Always run `--dry-run` first and preserve full token and recipient addresses in the approval request. + +## MCP Tools + +When the wallet is connected as an MCP server (`tempo wallet --mcp`), each tool's annotations say what it does: + +- `readOnlyHint: true` (`whoami`, `keys_list`, `services`, `doctor`) only reads. +- `destructiveHint: true` (`transfer`, `swap`, `sessions_close`, `sessions_sync`, `keys_update`, `revoke`, `logout`, `login`, `login_status`, `refresh`) moves funds, changes or revokes a key, closes a session, deletes stored sessions, or replaces or deletes the stored wallet or its network. Get the user's approval before every call, after a `dry-run: true` call where the tool offers one. +- `transfer`, `swap`, and `revoke` refuse to submit without `yes: true`; pass it only after the user approves the reviewed dry run. + ## Common Issues -| Issue | Cause | Fix | -|---|---|---| -| `tempo: command not found` | CLI not installed | Run `curl -fsSL https://tempo.xyz/install \| bash`, then retry using `"$HOME/.tempo/bin/tempo" ...`. | -| "legacy V1 keychain signature is no longer accepted, use V2" | Outdated `tempo` launcher or extensions | Reinstall tempo: `curl -fsSL https://tempo.xyz/install \| bash`, then update extensions: `"$HOME/.tempo/bin/tempo" update wallet && "$HOME/.tempo/bin/tempo" update request`. Log out and back in: `"$HOME/.tempo/bin/tempo" wallet logout --yes && "$HOME/.tempo/bin/tempo" wallet login`. | -| "access key does not exist" | Key not provisioned on-chain, or stale key after reinstall | Run `"$HOME/.tempo/bin/tempo" wallet logout --yes`, then `"$HOME/.tempo/bin/tempo" wallet login` to provision a fresh key. | -| `ready=false` or `No wallet configured` | Wallet not logged in | Run `"$HOME/.tempo/bin/tempo" wallet login`, wait for user completion, then rerun `"$HOME/.tempo/bin/tempo" wallet -t whoami`. | -| HTTP 422 on first request to a service | Wrong request schema — field names vary across services | Check `"$HOME/.tempo/bin/tempo" wallet -t services ` for endpoint details, then fetch the endpoint's `docs` URL or the service's `llms.txt` for exact field names and types. | -| Balance is 0, insufficient funds, or spending limit exceeded | Wallet needs funding or limit hit | Run `"$HOME/.tempo/bin/tempo" wallet fund` or direct user to the wallet dashboard. Report clearly and stop if limit is exceeded. | -| Token balance is 0 but MPP Credits may be available | Credits are separate from token balances | Run `"$HOME/.tempo/bin/tempo" wallet -t whoami --credits`. If the service shows `supportsCredits: true`, credits can be used for one-time charge payments. | -| Need to buy MPP Credits | User wants to fund with card-based credits for eligible services | Run `"$HOME/.tempo/bin/tempo" wallet fund --credits`, complete checkout in the wallet app, then recheck with `"$HOME/.tempo/bin/tempo" wallet -t whoami --credits`. | -| Credits are not accepted by a service | MPP Credits only work for eligible Tempo-proxied services | Inspect `"$HOME/.tempo/bin/tempo" wallet -t services ` and use credits only when `supportsCredits: true` is present. Otherwise use token funding with `"$HOME/.tempo/bin/tempo" wallet fund`. | -| Service uses sessions | MPP Credits currently support one-time charges, not sessions | Use token funding for session-based services. | -| Service not found for query | Search terms too narrow | Broaden search terms with `"$HOME/.tempo/bin/tempo" wallet -t services --search `, then inspect candidate details. | -| Endpoint returns usage/path error | Wrong URL or method | Re-open service details with `"$HOME/.tempo/bin/tempo" wallet -t services ` and use discovered method/path exactly. | -| Timeout/network error | Network issue or slow endpoint | Retry request and optionally increase timeout with `-m `. | +| Issue | Cause | Fix | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `tempo: command not found` | CLI not installed | Run `curl -fsSL https://tempo.xyz/install \| bash`, then retry using `"$HOME/.tempo/bin/tempo" ...`. | +| "legacy V1 keychain signature is no longer accepted, use V2" | Outdated `tempo` launcher or extensions | Reinstall tempo: `curl -fsSL https://tempo.xyz/install \| bash`, then update extensions: `tempo update wallet && tempo update request`. Log out and back in: `tempo wallet logout --yes && tempo wallet login`. | +| "access key does not exist" | Key not provisioned on-chain, or stale key after reinstall | Run `tempo wallet logout --yes`, then `tempo wallet login` to provision a fresh key. | +| `ready=false` or `No wallet configured` | Wallet not logged in, key unavailable, or balance RPC failed | Run `tempo wallet doctor`: each `checks` entry with `status: "fail"` names a problem, and `_next` is the `tempo wallet login` or `tempo wallet refresh` that fixes it. Wait for the user to complete it, then rerun `tempo wallet whoami`. An `rpc` failure means checking connectivity and `TEMPO_RPC_URL`. | +| HTTP 422 on first request to a service | Wrong request schema — field names vary across services | Check `tempo wallet services ` for endpoint details, then fetch the endpoint's `docs` URL or the service's `llms.txt` for exact field names and types. | +| Balance is 0, insufficient funds, or spending limit exceeded | Wallet needs funding or limit hit | For a limit hit, run `tempo wallet keys update --limit ` with user approval. For insufficient funds, suggest `tempo wallet fund` or the wallet dashboard. Check the on-chain MACH balance with `tempo wallet whoami --mach`; use `tempo wallet fund --mach --no-browser --format json` for remote funding. | +| Service not found for query | Search terms too narrow | Broaden search terms with `tempo wallet services --search `, then inspect candidate details. | +| Endpoint returns usage/path error | Wrong URL or method | Re-open service details with `tempo wallet services ` and use discovered method/path exactly. | +| Timeout/network error | Network issue or slow endpoint | Retry request and optionally increase timeout with `-m `. | diff --git a/skills.lock.json b/skills.lock.json index 66ce900..4ba6b3a 100644 --- a/skills.lock.json +++ b/skills.lock.json @@ -30,6 +30,16 @@ "commit": "598f247026fbe99d87e10ccf1cef914918eb5389", "digest": "sha256:d7c7f672a8327800a09086604f508253b3a452689b338e7b337e5ec674a1d8d4", "dest": "plugins/mercator/skills/mercator-setup" + }, + { + "name": "wallet", + "plugin": "wallet", + "repo": "tempoxyz/wallet-cli", + "path": "SKILL.md", + "ref": "release", + "commit": "225ad5d7993df063008e26c2a8e1a40424b21b83", + "digest": "sha256:9843b8b6cf10e961450f4f58a79a315720dbd7c65fa6f91786c237bb2205c024", + "dest": "plugins/wallet/skills/wallet" } ] } diff --git a/test/fixtures/golden/gemini/wallet/gemini-extension.json b/test/fixtures/golden/gemini/wallet/gemini-extension.json index 50a9183..8c046c3 100644 --- a/test/fixtures/golden/gemini/wallet/gemini-extension.json +++ b/test/fixtures/golden/gemini/wallet/gemini-extension.json @@ -1,5 +1,5 @@ { "name": "wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests." } diff --git a/test/fixtures/golden/manifests/plugins/wallet/.claude-plugin/plugin.json b/test/fixtures/golden/manifests/plugins/wallet/.claude-plugin/plugin.json index fc588fd..881d32e 100644 --- a/test/fixtures/golden/manifests/plugins/wallet/.claude-plugin/plugin.json +++ b/test/fixtures/golden/manifests/plugins/wallet/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "wallet", "displayName": "Tempo Wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "author": { "name": "Tempo" diff --git a/test/fixtures/golden/manifests/plugins/wallet/.codex-plugin/plugin.json b/test/fixtures/golden/manifests/plugins/wallet/.codex-plugin/plugin.json index ba37dd9..0b918c1 100644 --- a/test/fixtures/golden/manifests/plugins/wallet/.codex-plugin/plugin.json +++ b/test/fixtures/golden/manifests/plugins/wallet/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "homepage": "https://tempo.xyz/developers/docs/wallet/use-with-agents", "repository": "https://github.com/tempoxyz/plugins", diff --git a/test/fixtures/golden/manifests/plugins/wallet/.cursor-plugin/plugin.json b/test/fixtures/golden/manifests/plugins/wallet/.cursor-plugin/plugin.json index 82b8a51..e99cfc6 100644 --- a/test/fixtures/golden/manifests/plugins/wallet/.cursor-plugin/plugin.json +++ b/test/fixtures/golden/manifests/plugins/wallet/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "wallet", "displayName": "Tempo Wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "author": { "name": "Tempo" diff --git a/test/fixtures/golden/manifests/plugins/wallet/plugin.json b/test/fixtures/golden/manifests/plugins/wallet/plugin.json index 3fa197f..6191d86 100644 --- a/test/fixtures/golden/manifests/plugins/wallet/plugin.json +++ b/test/fixtures/golden/manifests/plugins/wallet/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "wallet", - "version": "0.1.0", + "version": "0.1.1", "description": "Set up Tempo Wallet and make explicitly approved paid API requests.", "homepage": "https://tempo.xyz/developers/docs/wallet/use-with-agents", "repository": "https://github.com/tempoxyz/plugins",