excalibur_resolve_dynamic_block
Start resolving a dynamic post block with an LLM — returns a CLAIM CHECK.
A dynamic block's prompt is run by the model (with web search + web fetch for
live data) and woven into the surrounding post context in the author's
voice. The author's instruction governs length — there is no character cap
(X supports long-form posts). The operator's LLM key stays in the vault
and never leaves the server.
Because that work (paginated fetches + generation) can outlast a client
timeout, this returns immediately with a claim check instead of the text:
{"success": true, "claim_check": "...", "status": "pending", "poll_after_seconds": N}. Redeem it with the free companion
fetch_dynamic_block(claim_check) until status == "done" (then read
result.text). (The scheduler resolves blocks directly server-side at fire
time and does not use this tool.)
Paid: the AI cost is metered as a tollbooth fare on THIS start call, refunded if no LLM key is configured or the job ultimately fails.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bans | No | Banned constructions — JSON array or comma-separated (optional). | |
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| voice | No | Voice-profile text fed to the model (optional). | |
| prompt | Yes | The dynamic block's prompt to run. | |
| context | No | The surrounding composed post (may contain the ⟨HERE⟩ marker). | |
| dpop_token | No | ||
| max_fetches | No | Author budget for web lookups (search + fetch), 1..25. | |
| allowed_domains | No | Author allowlist for web_fetch — JSON array or comma-separated. Blank = fetch any URL the prompt references. | |
| runtime_limit_seconds | No | Author's time budget for this block in seconds (60–1800). Bounds how long the job may run AND sets the poll cadence; the operator may price it ad valorem. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||