Files
didactyl/context.logs/20260408T064635_req0020.json

1 line
32 KiB
JSON

{"model":"claude-opus-4.6","max_tokens":200000,"temperature":0.7,"messages":[{"role":"system","content":"# Didactyl Agent\n\n### DM History Context\n\n#### Instructions\n- Reference prior conversation naturally when it's relevant to the current request.\n- Do not repeat entire DM history back to the user unless explicitly asked.\n- Use this context to avoid asking questions that were already answered in recent messages.\n\n#### Recent DM History (last 10 messages)\n\n- **You**: Hello! 👋 Welcome! I'm your Didactyl agent, ready to help. How can I assist you today?\n- **Admin**: What is the information in your kind 0?\n- **You**: Here's the information in my **kind 0** (profile metadata):\n\n| Field | Value |\n|-------|-------|\n| **Name** | Didactyl Agent |\n| **Display Name** | Didactyl Agent |\n| **About** | A sovereign AI agent on Nostr. <br><br>Mission: Help maintain and answer questions about the Didactyl project. <br><br>https://git.laantungir.net/laantungir/didactyl <br><br>Not your keys, not your Bitcoin. Not your keys, not your Agent. Not your keys, not your Robot. |\n| **Picture** | [Profile Image](https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png) |\n| **Banner** | [Banner Image](https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg) |\n\nThat's everything currently set in my profile. Would you like to update any of these fields?\n- **Admin**: What is the capital of france?\n- **You**: The capital of France is **Paris**! 🇫🇷\n\nParis is the largest city in France and serves as the country's political, economic, and cultural center. It's known for iconic landmarks like the Eiffel Tower, the Louvre Museum, Notre-Dame Cathedral, and the Champs-Élysées. Is there anything else you'd like to know?\n- **Admin**: What is the capital of Japan\n- **You**: The capital of Japan is **Tokyo**! 🇯🇵\n\nTokyo is the most populous metropolitan area in the world and serves as Japan's political, economic, and cultural hub. It's known for its blend of ultramodern architecture and traditional temples, bustling neighborhoods like Shibuya and Shinjuku, world-renowned cuisine, and iconic landmarks such as the Tokyo Tower and the Imperial Palace.\n\nIs there anything else you'd like to know?\n- **Admin**: hello\n- **You**: Hello again! 👋 Good to see you back! How can I help you today?"},{"role":"user","content":"What is your kind 0 information?","_ts":1775645195}],"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"}