Files
didactyl/context.logs/20260408T061726_req0007.json

1 line
30 KiB
JSON

{"model":"claude-opus-4.6","max_tokens":200000,"temperature":0.7,"messages":[{"role":"system","content":"Skill execution context:\n- You are executing a specific skill on demand.\n- Follow the skill instructions below precisely.\n- Return a concise, actionable result.\n\nSkill d_tag: recurse-depth-test\nSkill source: own\n\nSkill instructions:\n## Procedure\nImmediately call skill_run with {\"d_tag\":\"recurse-depth-test\",\"args\":\"again\"}. If a tool result is returned, continue following this same instruction."},{"role":"user","content":"again"}],"tools":[{"type":"function","function":{"name":"nostr_post","description":"Publish a Nostr event to connected relays","parameters":{"type":"object","properties":{"kind":{"type":"integer","description":"Nostr event kind number (for example 1 for note, 7 for reaction, 30023 for longform)"},"content":{"type":"string","description":"Event content/body text to publish"},"tags":{"type":"array","description":"Optional Nostr tags array, e.g. [[\"d\",\"my-skill\"],[\"t\",\"nostr\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["kind","content"]}}},{"type":"function","function":{"name":"nostr_query","description":"Query events from relays using a Nostr filter","parameters":{"type":"object","properties":{"filter":{"type":"object","description":"Nostr filter object (authors, kinds, ids, since, until, limit, and tag filters)"},"timeout_ms":{"type":"integer","description":"Optional query timeout in milliseconds"}},"required":["filter"]}}},{"type":"function","function":{"name":"local_shell_exec","description":"Execute a shell command and return stdout/stderr","parameters":{"type":"object","properties":{"command":{"type":"string","description":"Shell command to execute in the configured working directory"}},"required":["command"]}}},{"type":"function","function":{"name":"local_file_read","description":"Read a local file as text from the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to read (relative to configured working directory)"},"max_bytes":{"type":"integer","description":"Optional maximum bytes to return"}},"required":["path"]}}},{"type":"function","function":{"name":"local_file_write","description":"Write text content to a local file in the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to write (relative to configured working directory)"},"content":{"type":"string","description":"Text content to write"},"append":{"type":"boolean","description":"When true, append to file instead of overwriting"}},"required":["path","content"]}}},{"type":"function","function":{"name":"nostr_post_readme","description":"Publish README.md as kind 30023 with deterministic d tag readme.md","parameters":{"type":"object","properties":{},"required":[]}}},{"type":"function","function":{"name":"nostr_delete","description":"Request deletion of one or more previously published events (NIP-09 kind 5)","parameters":{"type":"object","properties":{"event_ids":{"type":"array","description":"Event IDs to request deletion for","items":{"type":"string"}},"kinds":{"type":"array","description":"Optional kinds corresponding to event_ids entries","items":{"type":"integer"}},"reason":{"type":"string","description":"Optional human-readable reason"}},"required":["event_ids"]}}},{"type":"function","function":{"name":"nostr_react","description":"React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)","parameters":{"type":"object","properties":{"event_id":{"type":"string","description":"Target event ID to react to"},"event_pubkey":{"type":"string","description":"Author pubkey of target event"},"event_kind":{"type":"integer","description":"Optional kind of target event"},"reaction":{"type":"string","description":"Reaction content such as +, -, ❤️, or emoji"}},"required":["event_id","event_pubkey"]}}},{"type":"function","function":{"name":"nostr_profile_get","description":"Look up a Nostr profile (kind 0 metadata) by pubkey","parameters":{"type":"object","properties":{"pubkey":{"type":"string","description":"Hex pubkey of the profile to fetch"}},"required":["pubkey"]}}},{"type":"function","function":{"name":"nostr_relay_status","description":"Get connection status and statistics for all relays","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_nip05_lookup","description":"Look up or verify a NIP-05 identifier (user@domain)","parameters":{"type":"object","properties":{"identifier":{"type":"string","description":"NIP-05 identifier in the form user@domain"},"pubkey":{"type":"string","description":"Optional expected pubkey to verify against lookup result"}},"required":["identifier"]}}},{"type":"function","function":{"name":"nostr_encode","description":"Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)","parameters":{"type":"object","properties":{"type":{"type":"string","description":"Encoding target: npub, note, nprofile, nevent, or naddr"},"hex":{"type":"string","description":"Hex pubkey or event id to encode"},"relays":{"type":"array","description":"Optional relay URLs included in nprofile/nevent/naddr encodings","items":{"type":"string"}},"kind":{"type":"integer","description":"Required for naddr: replaceable event kind"},"identifier":{"type":"string","description":"Required for naddr: replaceable event identifier (d tag)"}},"required":["type","hex"]}}},{"type":"function","function":{"name":"nostr_decode","description":"Decode a Nostr bech32/nostr: URI into components","parameters":{"type":"object","properties":{"uri":{"type":"string","description":"nostr: URI or bech32 value to decode"}},"required":["uri"]}}},{"type":"function","function":{"name":"nostr_dm_send","description":"Send a NIP-04 encrypted DM","parameters":{"type":"object","properties":{"recipient_pubkey":{"type":"string","description":"Recipient pubkey in hex"},"message":{"type":"string","description":"Plaintext message to encrypt and send"}},"required":["recipient_pubkey","message"]}}},{"type":"function","function":{"name":"nostr_relay_info","description":"Fetch NIP-11 relay information document","parameters":{"type":"object","properties":{"relay_url":{"type":"string","description":"Relay websocket URL (ws:// or wss://)"}},"required":["relay_url"]}}},{"type":"function","function":{"name":"nostr_subscription_status","description":"List currently managed runtime Nostr subscriptions and filters","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_subscription_set","description":"Update one managed runtime subscription by name (toggle enabled and/or replace filter)","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Subscription name (e.g. admin_context_profile, agent_context_notes, dms_kind4)"},"enabled":{"type":"boolean","description":"Optional: enable or disable this subscription"},"filter":{"type":"object","description":"Optional: replacement Nostr filter object"}},"required":["name"]}}},{"type":"function","function":{"name":"nostr_encrypt","description":"Encrypt plaintext using NIP-44 for a recipient","parameters":{"type":"object","properties":{"recipient_pubkey":{"type":"string","description":"Recipient pubkey in hex"},"plaintext":{"type":"string","description":"Plaintext to encrypt with NIP-44"}},"required":["recipient_pubkey","plaintext"]}}},{"type":"function","function":{"name":"nostr_decrypt","description":"Decrypt NIP-44 ciphertext from a sender","parameters":{"type":"object","properties":{"sender_pubkey":{"type":"string","description":"Sender pubkey in hex"},"ciphertext":{"type":"string","description":"NIP-44 ciphertext payload to decrypt"}},"required":["sender_pubkey","ciphertext"]}}},{"type":"function","function":{"name":"nostr_dm_send_nip17","description":"Send a private DM using NIP-17 gift wrap protocol","parameters":{"type":"object","properties":{"recipient_pubkey":{"type":"string","description":"Recipient pubkey in hex"},"message":{"type":"string","description":"Message body to send in gift-wrap DM"},"subject":{"type":"string","description":"Optional subject label for the message"}},"required":["recipient_pubkey","message"]}}},{"type":"function","function":{"name":"nostr_list_manage","description":"Add/remove tag tuples in replaceable list events (NIP-51 style)","parameters":{"type":"object","properties":{"list_kind":{"type":"integer","description":"Replaceable list kind to edit (for example 10000 mute, 10001 pin, 10002 relay list)"},"action":{"type":"string","description":"Operation to perform: add or remove"},"items":{"type":"array","description":"Tag tuples to add/remove, e.g. [[\"p\",\"<pubkey>\"],[\"e\",\"<event_id>\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["list_kind","action","items"]}}},{"type":"function","function":{"name":"nostr_block_list","description":"View blocked pubkeys, event IDs, or hashtags from the local encrypted kind-10000 block list cache","parameters":{"type":"object","properties":{"type":{"type":"string","description":"Optional filter: all, p, e, or t (default all)"}}}}},{"type":"function","function":{"name":"nostr_block_edit","description":"Add or remove blocked tuples in kind-10000 block list; entries are private (encrypted) by default","parameters":{"type":"object","properties":{"action":{"type":"string","description":"add or remove"},"items":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Tag tuples like [[\"e\",\"<event_id>\"],[\"p\",\"<pubkey>\"],[\"t\",\"spam\"]]"},"public":{"type":"boolean","description":"Optional, default false; when true add to public tags instead of encrypted private content"}},"required":["action","items"]}}},{"type":"function","function":{"name":"agent_version","description":"Return current Didactyl version and metadata from build macros","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"local_http_fetch","description":"Fetch HTTP(S) resources with optional method, headers, timeout, and body","parameters":{"type":"object","properties":{"url":{"type":"string","description":"HTTP(S) URL to request"},"method":{"type":"string","description":"Optional method such as GET, POST, PUT, PATCH, or DELETE (default GET)"},"headers":{"type":"array","description":"Optional headers as [\"Name: value\", ...]","items":{"type":"string"}},"body":{"type":"string","description":"Optional request body for non-GET methods"},"timeout_seconds":{"type":"integer","description":"Optional timeout in seconds"},"max_bytes":{"type":"integer","description":"Optional maximum response bytes to capture"}},"required":["url"]}}},{"type":"function","function":{"name":"skill_create","description":"Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it. Write content as markdown context instructions (no role markers). The runtime owns role packaging and document H1, and will bump skill headings down one level, so prefer ## for top-level sections in skill content. For auto-run behavior, set trigger + filter together.","parameters":{"type":"object","properties":{"d":{"type":"string"},"content":{"type":"string","description":"Markdown template for the skill body. Use plain markdown headings/lists/code fences and template variables like {{message}}, {{dm_history}}, {{agent_identity}}, {{admin_profile}}, or {{skill_d_tag}} references. Do not author system/user/assistant role markers in skill content; runtime appends trigger payloads as user input and handles role packaging. Runtime prepends document title and bumps headings one level."},"scope":{"type":"string"},"description":{"type":"string"},"auto_adopt":{"type":"boolean"},"trigger":{"type":"string","description":"Optional auto-run trigger. Must be one of: dm, cron, nostr-subscription, webhook, chain. If provided, filter is also required."},"filter":{"type":"string","description":"Trigger-specific filter string. Required when trigger is provided. Examples: dm=>{\"from\":\"admin\"}, cron=>\"0 12 * * *\", chain=>\"source_d_tag\", webhook=>\"{}\", nostr-subscription=>JSON filter."},"action":{"type":"string"},"enabled":{"type":"boolean"},"llm":{"type":"string","description":"Model to use when this trigger fires (e.g. 'gpt-4o-mini'); overrides the agent default model for this triggered skill execution only."},"tools":{"type":"string"},"max_tokens":{"type":"integer"},"temperature":{"type":"number"},"seed":{"type":"integer"}},"required":["d","content"]}}},{"type":"function","function":{"name":"skill_list","description":"List available skills discovered online (agent + admin), with adoption status and optional filters","parameters":{"type":"object","properties":{"scope":{"type":"string"},"adopted":{"type":"boolean"}}}}},{"type":"function","function":{"name":"skill_get","description":"Get full skill JSON by d tag from local cache; JSON: {\"d\":\"identity_and_rules\"} (slash shorthand also works: /skill_get identity_and_rules)","parameters":{"type":"object","properties":{"d":{"type":"string","description":"Skill d tag (preferred JSON key)"},"input":{"type":"string","description":"Slash shorthand fallback key when args are passed as plain text"}},"required":["d"]}}},{"type":"function","function":{"name":"skill_view","description":"Compatibility alias for skill_get; JSON: {\"d\":\"identity_and_rules\"}","parameters":{"type":"object","properties":{"d":{"type":"string"},"input":{"type":"string"}},"required":["d"]}}},{"type":"function","function":{"name":"skill_set","description":"Set/publish a full skill JSON payload and refresh runtime cache; JSON: {\"skill\":{\"d\":\"identity_and_rules\",\"kind\":31124,\"scope\":\"private\",\"content\":\"...\",\"tags\":[[\"d\",\"identity_and_rules\"],[\"app\",\"didactyl\"],[\"scope\",\"private\"]]}}","parameters":{"type":"object","properties":{"skill":{"type":"object","description":"Full skill object from skill_get output content"},"input":{"type":"string","description":"Raw JSON string for slash shorthand or manual paste"}}}}},{"type":"function","function":{"name":"skill_adopt","description":"Adopt a skill by adding its address to kind 10123 adoption list","parameters":{"type":"object","properties":{"pubkey":{"type":"string"},"d":{"type":"string"},"kind":{"type":"integer"}},"required":["pubkey","d"]}}},{"type":"function","function":{"name":"skill_remove","description":"Remove a skill address from kind 10123 adoption list","parameters":{"type":"object","properties":{"pubkey":{"type":"string"},"d":{"type":"string"},"kind":{"type":"integer"}},"required":["d"]}}},{"type":"function","function":{"name":"skill_edit","description":"Edit an existing self skill by d tag and republish it as kind 31123/31124. Keep skill content markdown-first (no role markers). Runtime owns role packaging, owns H1, and bumps skill headings down one level. For triggered skills, update trigger and filter together.","parameters":{"type":"object","properties":{"d":{"type":"string"},"content":{"type":"string","description":"Replacement markdown template for this skill. Use markdown structure and template variables such as {{message}}, {{dm_history}}, {{agent_identity}}, {{admin_profile}}, and {{skill_d_tag}} references. Do not include authored system/user/assistant role markers; runtime handles role packaging and user payload injection. If omitted, existing content is retained."},"scope":{"type":"string"},"description":{"type":"string"},"trigger":{"type":"string","description":"Optional trigger update. Valid values: dm, cron, nostr-subscription, webhook, chain. Must be paired with filter update when changing trigger config."},"filter":{"type":"string","description":"Trigger-specific filter update. Use with trigger. Examples: dm=>{\"from\":\"admin\"}, cron=>\"0 12 * * *\", chain=>\"source_d_tag\", webhook=>\"{}\", nostr-subscription=>JSON filter."},"action":{"type":"string"},"enabled":{"type":"boolean"},"llm":{"type":"string","description":"Model to use when this trigger fires (e.g. 'gpt-4o-mini'); overrides the agent default model for this triggered skill execution only."},"tools":{"type":"string"},"max_tokens":{"type":"integer"},"temperature":{"type":"number"},"seed":{"type":"integer"}},"required":["d"]}}},{"type":"function","function":{"name":"skill_refresh","description":"Invalidate adopted skills cache so next context build reloads latest skill events from cache/relays","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"skill_search","description":"Search public skills by query/author and optionally rank by adoption popularity","parameters":{"type":"object","properties":{"query":{"type":"string"},"pubkey":{"type":"string"},"popular":{"type":"boolean"}}}}},{"type":"function","function":{"name":"skill_run","description":"Execute a skill one-shot in an isolated context with optional sandboxing. Use d_tag for own skills or pubkey+d_tag for external skills.","parameters":{"type":"object","properties":{"d_tag":{"type":"string","description":"Skill d tag identifier"},"d":{"type":"string","description":"Compatibility alias for d_tag"},"pubkey":{"type":"string","description":"Optional author pubkey for external skills"},"args":{"type":"string","description":"Arguments/context to pass to the skill"},"input":{"type":"string","description":"Slash shorthand fallback for args"},"sandbox":{"type":"boolean","description":"Override sandbox behavior (default on for external skills)"}},"required":["d_tag"]}}},{"type":"function","function":{"name":"skill_load","description":"Load a skill's instructions into the current conversation context.","parameters":{"type":"object","properties":{"d_tag":{"type":"string","description":"Skill d tag identifier"},"d":{"type":"string","description":"Compatibility alias for d_tag"},"pubkey":{"type":"string","description":"Optional author pubkey for external skills"}},"required":["d_tag"]}}},{"type":"function","function":{"name":"trigger_list","description":"List active triggered skills and their runtime status","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_file_md_to_longform_post","description":"Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename","parameters":{"type":"object","properties":{"file":{"type":"string"},"title":{"type":"string"},"image":{"type":"string"},"summary":{"type":"string"}},"required":["file"]}}},{"type":"function","function":{"name":"tool_list","description":"List available tools with name, description, and JSON parameter schema","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"model_get","description":"Get current active LLM runtime configuration (excluding API key)","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"model_set","description":"Update active LLM configuration and persist it to Nostr kind 30078 (d=llm_config)","parameters":{"type":"object","properties":{"provider":{"type":"string"},"api_key":{"type":"string"},"model":{"type":"string"},"base_url":{"type":"string"},"max_tokens":{"type":"integer"},"temperature":{"type":"number"}}}}},{"type":"function","function":{"name":"model_list","description":"List available model IDs using provider OpenAI-compatible /models endpoint","parameters":{"type":"object","properties":{"base_url":{"type":"string"}}}}},{"type":"function","function":{"name":"nostr_pubkey","description":"Return this agent's pubkey in hex format","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_npub","description":"Return this agent's pubkey encoded as npub bech32","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_pubkey","description":"Alias for nostr_pubkey: return this agent's pubkey in hex format","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_npub","description":"Alias for nostr_npub: return this agent's pubkey encoded as npub bech32","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"admin_identity","description":"Build admin identity context block from cached runtime metadata","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_admin_profile","description":"Build admin profile context block from cached kind 0 metadata","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_admin_contacts","description":"Build admin contacts context block from cached kind 3 contact list","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_admin_relays","description":"Build admin relay context block from cached kind 10002 data","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_admin_notes","description":"Build admin notes context block from cached kind 1 notes","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_agent_profile","description":"Build agent profile context block from cached kind 0 metadata","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_agent_contacts","description":"Build agent contacts context block from cached kind 3 contact list","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_agent_relays","description":"Build agent relay context block from cached kind 10002 data","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_agent_notes","description":"Build agent notes context block from cached kind 1 notes","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_kind0_profile","description":"Alias for nostr_agent_profile: return this agent's kind 0 profile context","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_contacts","description":"Alias for nostr_agent_contacts: return this agent's kind 3 contacts context","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_relays","description":"Alias for nostr_agent_relays: return this agent's kind 10002 relay context","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"my_notes","description":"Alias for nostr_agent_notes: return this agent's recent kind 1 notes context","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"task_list","description":"Build current task list context block from agent task memory on Nostr","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"nostr_dm_history","description":"Fetch recent DM history for template/context usage; JSON: {\"limit\":12,\"include_current\":false,\"format\":\"json\"} or with explicit peer {\"peer_pubkey\":\"<hex64>\",\"limit\":20,\"format\":\"text\"}; template usage: {{nostr_dm_history({\"limit\":12,\"format\":\"text\"})}}","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"Max message turns to return (1-200, default 12)"},"include_current":{"type":"boolean","description":"When true, keep a trailing user message that matches the current live message"},"peer_pubkey":{"type":"string","description":"Optional peer pubkey hex (defaults to configured admin pubkey)"},"format":{"type":"string","description":"Output format: 'json' (default) or 'text' (User:/Assistant: lines)"}}}}},{"type":"function","function":{"name":"agent_identity","description":"Build agent identity context block with pubkey and npub","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"task_manage","description":"Manage agent short-term task memory stored on Nostr kind 30078 (d=tasks): list/add/update/remove/clear/replace","parameters":{"type":"object","properties":{"action":{"type":"string","enum":["list","add","update","remove","clear","replace"]},"text":{"type":"string"},"id":{"type":"integer"},"status":{"type":"string","enum":["pending","active","done"]},"tasks":{"type":"array","items":{"type":"string"}}},"required":["action"]}}},{"type":"function","function":{"name":"memory_save","description":"Prepend a new entry to encrypted agent memory (kind 30078, d=memory) and truncate oldest content if needed","parameters":{"type":"object","properties":{"content":{"type":"string"}},"required":["content"]}}},{"type":"function","function":{"name":"memory_recall","description":"Recall encrypted agent memory (kind 30078, d=memory)","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"config_store","description":"Encrypt and publish agent config as kind 30078 for a given d_tag","parameters":{"type":"object","properties":{"d_tag":{"type":"string"},"content":{"description":"Arbitrary JSON value or string to encrypt and store"}},"required":["d_tag","content"]}}},{"type":"function","function":{"name":"config_recall","description":"Fetch and decrypt agent config kind 30078 by d_tag","parameters":{"type":"object","properties":{"d_tag":{"type":"string"}},"required":["d_tag"]}}},{"type":"function","function":{"name":"nostr_my_events","description":"Query recent events authored by this agent and return kind, event_id, timestamp, d_tag, and cache presence","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"Maximum number of authored events to query (1-2000, default 200)"},"kind":{"type":"integer","description":"Optional specific kind to query; omit for all kinds"},"timeout_ms":{"type":"integer","description":"Query timeout in milliseconds (1000-60000, default 8000)"}}}}},{"type":"function","function":{"name":"cashu_wallet_balance","description":"Return current wallet balances aggregated by mint and unit","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"cashu_wallet_info","description":"Fetch mint info for a specific mint_url or the default configured mint","parameters":{"type":"object","properties":{"mint_url":{"type":"string","description":"Optional mint base URL; uses configured default when omitted"}}}}},{"type":"function","function":{"name":"cashu_wallet_mint_quote","description":"Request a mint quote for a target amount","parameters":{"type":"object","properties":{"amount":{"type":"integer","description":"Amount to mint in the selected unit"},"mint_url":{"type":"string","description":"Optional mint base URL; uses configured default when omitted"},"unit":{"type":"string","description":"Optional unit, e.g. sat"}},"required":["amount"]}}},{"type":"function","function":{"name":"cashu_wallet_mint_check","description":"Check a previously requested mint quote status","parameters":{"type":"object","properties":{"quote_id":{"type":"string"},"mint_url":{"type":"string"}},"required":["quote_id"]}}},{"type":"function","function":{"name":"cashu_wallet_mint_claim","description":"Claim minted proofs for a paid quote_id and add them to wallet state","parameters":{"type":"object","properties":{"quote_id":{"type":"string"},"mint_url":{"type":"string"},"amount":{"type":"integer","description":"Optional target amount; if omitted wallet attempts best-effort claim"}},"required":["quote_id"]}}},{"type":"function","function":{"name":"cashu_wallet_melt_quote","description":"Request a melt quote for a Lightning payment request","parameters":{"type":"object","properties":{"payment_request":{"type":"string"},"mint_url":{"type":"string"},"unit":{"type":"string"}},"required":["payment_request"]}}},{"type":"function","function":{"name":"cashu_wallet_melt_pay","description":"Pay a previously quoted melt by quote_id","parameters":{"type":"object","properties":{"quote_id":{"type":"string"},"mint_url":{"type":"string"}},"required":["quote_id"]}}},{"type":"function","function":{"name":"cashu_wallet_check_proofs","description":"Check current wallet proofs state against mint","parameters":{"type":"object","properties":{"mint_url":{"type":"string"}}}}},{"type":"function","function":{"name":"cashu_wallet_receive_token","description":"Receive an ecash token string (cashuA/cashuB), swap to fresh proofs, and store it in wallet state","parameters":{"type":"object","properties":{"token":{"type":"string","description":"Incoming token string beginning with cashuA or cashuB"},"mint_url":{"type":"string","description":"Optional mint URL override; when provided must match token mint"}},"required":["token"]}}},{"type":"function","function":{"name":"cashu_wallet_send_token","description":"Create an outbound ecash token from wallet proofs for an exact amount","parameters":{"type":"object","properties":{"amount":{"type":"integer","description":"Exact amount to send as ecash token"},"mint_url":{"type":"string","description":"Optional mint URL; defaults to configured wallet mint when omitted"},"format":{"type":"string","description":"Optional token format: cashuA or cashuB (default cashuB)"}},"required":["amount"]}}},{"type":"function","function":{"name":"cashu_wallet_mints_set","description":"Set wallet mints (NIP-60), public mints (NIP-61), or both","parameters":{"type":"object","properties":{"target":{"type":"string","description":"Where to apply mint updates: wallet, public, or both"},"wallet_mints":{"type":"array","items":{"type":"string"},"description":"Mint URLs for wallet event update"},"public_mints":{"type":"array","items":{"type":"string"},"description":"Mint URLs for public nutzap info update"}},"required":["target"]}}},{"type":"function","function":{"name":"cashu_wallet_mints_get","description":"Get currently configured wallet and public mints","parameters":{"type":"object","properties":{},"required":[]}}},{"type":"function","function":{"name":"blossom_upload","description":"Upload a local file to a Blossom server","parameters":{"type":"object","properties":{"server":{"type":"string"},"file_path":{"type":"string"},"content_type":{"type":"string"}},"required":["server","file_path"]}}},{"type":"function","function":{"name":"blossom_download","description":"Download a blob from Blossom to a local file","parameters":{"type":"object","properties":{"server":{"type":"string"},"sha256":{"type":"string"},"output_path":{"type":"string"},"overwrite":{"type":"boolean"}},"required":["server","sha256","output_path"]}}},{"type":"function","function":{"name":"blossom_head","description":"Fetch blob metadata from Blossom","parameters":{"type":"object","properties":{"server":{"type":"string"},"sha256":{"type":"string"}},"required":["server","sha256"]}}},{"type":"function","function":{"name":"blossom_delete","description":"Delete a blob from Blossom","parameters":{"type":"object","properties":{"server":{"type":"string"},"sha256":{"type":"string"}},"required":["server","sha256"]}}},{"type":"function","function":{"name":"blossom_list","description":"List blobs for a pubkey on Blossom","parameters":{"type":"object","properties":{"server":{"type":"string"},"pubkey":{"type":"string"}},"required":["server"]}}}],"tool_choice":"auto"}