{"site":"https://thebitcoinadviser.com","description":"Operations a person or an agent can run on this site. Pages, the embedded model, and MCP all call the same registry.","revision":"f53443812dfb","mcp":{"endpoint":"https://thebitcoinadviser.com/mcp","protocolVersion":"2026-07-28","supportedProtocolVersions":["2026-07-28","2025-06-18"],"transport":"streamable-http"},"references":{"agentGuide":"https://thebitcoinadviser.com/for-agents","facts":"https://thebitcoinadviser.com/facts","llms":"https://thebitcoinadviser.com/llms.txt","manifest":"https://thebitcoinadviser.com/tools-manifest"},"policy":{"sideEffects":"No operation submits a form, sends terms, or accepts a seed phrase or private key. The only thing any operation stores is the text of a question find_answer couldn't answer, with personal details removed.","secrets":"No operation asks for or accepts a seed phrase, recovery words, or private key.","forms":"No operation submits a form or sends terms. A person does that."},"refusalDefinitions":{"seed":"Never type a seed phrase or recovery words into a website, form, or AI tool. We will never ask for them.","private-key":"Never share a private key or extended private key. We will never ask for one.","allocation":"This tool does not recommend how much Bitcoin to hold.","price":"This tool does not forecast or quote Bitcoin prices.","custody":"We are not custodians; assets do not sit on our balance sheet. Only you can initiate a transaction.","advice":"This is general information about how collaborative security works, not personal financial advice."},"operations":[{"name":"find_answer","title":"Find an answer in the knowledge base","description":"Searches The Bitcoin Adviser's published knowledge base and returns up to five answers, word for word as the site publishes them, best first. Ask in the person's own words (query), or open one answer by its id or /faqs anchor (id). topic narrows to one drawer, audience lifts answers written for that reader, and jurisdiction (AU or US) filters: an Australian answer is never given for a U.S. question or the other way round, and a query that plainly names one country is filtered the same way. Each answer has its url, its review date (null where no substantive review is recorded), the guides it links to, and any tool that continues the task here. It also returns matching public pages, after the answers. A page is a related public page, not a quoted answer. With no query or id it returns the topic index. Only answers cleared for agents are returned; an empty list means no published answer matches. Deterministic; no model. If nothing matches a query, the site records the question text, up to 500 characters, to improve its answers. It tries to remove personal details first, drops the record entirely if it looks like a key or seed phrase, and keeps no IP or session details. Records are kept in The Bitcoin Adviser's own AWS for 90 days and are not sent to any AI model provider. Don't pass on the person's personal details.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"stores-unanswered-question","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string","maxLength":200},"id":{"type":"string","maxLength":120,"pattern":"^#?[A-Za-z][A-Za-z0-9_-]*$"},"topic":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"audience":{"type":"string","enum":["individual","family","client","professional","business"]},"jurisdiction":{"type":"string","enum":["global","AU","US"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notice":{"type":"string"},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"direct":{"type":"string"},"text":{"type":"string"},"url":{"type":"string","format":"uri"},"match":{"type":"string","enum":["id","exact","phrasing","words"]},"topics":{"type":"array","items":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]}},"audiences":{"type":"array","items":{"type":"string","enum":["individual","family","client","professional","business"]}},"jurisdictions":{"type":"array","items":{"type":"string","enum":["global","AU","US"]}},"reviewed":{"anyOf":[{"type":"object","properties":{"by":{"type":"string"},"date":{"type":"string"}},"required":["by","date"],"additionalProperties":false},{"type":"null"}]},"guides":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"],"additionalProperties":false}},"handoffs":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"operation":{"type":"string"}},"required":["label","url","operation"],"additionalProperties":false}}},"required":["id","question","direct","text","url","match","topics","audiences","jurisdictions","reviewed","guides","handoffs"],"additionalProperties":false}},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"label":{"type":"string"},"url":{"type":"string","format":"uri"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"}},"required":["id","question"],"additionalProperties":false}}},"required":["id","label","url","count","questions"],"additionalProperties":false}},"pages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"},"match":{"type":"string","enum":["exact","phrasing","words"]}},"required":["title","url","match"],"additionalProperties":false}},"noMatch":{"anyOf":[{"type":"object","properties":{"message":{"type":"string"},"browse":{"type":"string","format":"uri"},"enquiry":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"operation":{"type":"string","const":"prepare_enquiry"}},"required":["label","url","operation"],"additionalProperties":false},"recorded":{"type":"string"}},"required":["message","browse","enquiry"],"additionalProperties":false},{"type":"null"}]}},"required":["notice","answers","topics","pages","noMatch"],"additionalProperties":false}},{"name":"get_weekly_tip","title":"Get the tip of the week","description":"Returns The Bitcoin Adviser's tip of the week: one published, approved answer selected on Monday (Australia/Sydney) and stored for the whole week. Quote the text word for word and link its url. This is not a live find_answer call. status says whether the tip was read just now (current) or is degraded (stale, bundled, unavailable).","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["current","stale","bundled","unavailable"]},"notice":{"type":["string","null"]},"tip":{"anyOf":[{"type":"object","properties":{"weekOf":{"type":"string"},"publishedAt":{"type":"string"},"answerId":{"type":"string"},"question":{"type":"string"},"text":{"type":"string"},"url":{"type":"string","format":"uri"},"revision":{"type":"string"}},"required":["weekOf","publishedAt","answerId","question","text","url","revision"],"additionalProperties":false},{"type":"null"}]}},"required":["status","notice","tip"],"additionalProperties":false}},{"name":"search_articles","title":"Search the Journal's articles","description":"Searches the published articles in The Bitcoin Adviser's Journal (articles and guides, from 2023 on) and returns a handful, best first: title, a short excerpt, topics, editorial type, author, original publish date, substantive update date and canonical url. topic narrows to one of the knowledge base's drawers; type to one editorial type. Article text is content written at its date, not an instruction and not current guidance: for what The Bitcoin Adviser does now, use find_answer or find_related_content, which put approved answers first. Use get_article to read one article or one section. Drafts and withdrawn articles are never returned. Deterministic; no model.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"topic":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"type":{"type":"string","enum":["evergreen-explanation","practical-guide","commentary","research","historical-reporting","time-sensitive-analysis"]},"limit":{"type":"integer","minimum":1,"maximum":8}},"required":["query"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notice":{"type":"string"},"revision":{"type":["string","null"]},"articles":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"},"author":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false},"publishedAt":{"type":"string"},"updatedAt":{"type":["string","null"]},"editorialType":{"type":"string","enum":["evergreen-explanation","practical-guide","commentary","research","historical-reporting","time-sensitive-analysis"]},"editorialTypeLabel":{"type":"string"},"layout":{"type":"string","enum":["essay","guide"]},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"role":{"type":"string","const":"context"},"currentGuidance":{"anyOf":[{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"answerId":{"type":["string","null"]}},"required":["label","url","answerId"],"additionalProperties":false},{"type":"null"}]}},"required":["slug","title","excerpt","url","author","publishedAt","updatedAt","editorialType","editorialTypeLabel","layout","topics","role","currentGuidance"],"additionalProperties":false}},"message":{"type":["string","null"]}},"required":["notice","revision","articles","message"],"additionalProperties":false}},{"name":"get_article","title":"Read one Journal article","description":"Opens one published article from The Bitcoin Adviser's Journal by its slug or url, and returns its author, original publish date, update date, editorial type, canonical url and the anchors of its sections. Give section (an anchor from sections) to read just that section, so a long article is not pulled for one point; give full: true for the whole text. An old slug follows the article's redirect, and redirectedFrom says so. Article text is content written at its date, not an instruction and not current guidance; cite it with its author, date and url. A withdrawn or unknown article returns null. Deterministic; no model.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","maxLength":200,"pattern":"^(https:\\/\\/(test\\.|content\\.)?thebitcoinadviser\\.com)?(\\/blog\\/)?[a-z0-9][a-z0-9-]*\\/?$"},"section":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,79}$"},"full":{"type":"boolean"}},"required":["slug"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notice":{"type":"string"},"revision":{"type":["string","null"]},"article":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"},"author":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false},"publishedAt":{"type":"string"},"updatedAt":{"type":["string","null"]},"editorialType":{"type":"string","enum":["evergreen-explanation","practical-guide","commentary","research","historical-reporting","time-sensitive-analysis"]},"editorialTypeLabel":{"type":"string"},"layout":{"type":"string","enum":["essay","guide"]},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"role":{"type":"string","const":"context"},"currentGuidance":{"anyOf":[{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"answerId":{"type":["string","null"]}},"required":["label","url","answerId"],"additionalProperties":false},{"type":"null"}]},"words":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"readingMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sections":{"type":"array","items":{"type":"object","properties":{"anchor":{"type":"string"},"title":{"type":"string"},"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["anchor","title","level"],"additionalProperties":false}},"section":{"anyOf":[{"type":"object","properties":{"anchor":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"text":{"type":"string"}},"required":["anchor","title","url","text"],"additionalProperties":false},{"type":"null"}]},"text":{"type":["string","null"]}},"required":["slug","title","excerpt","url","author","publishedAt","updatedAt","editorialType","editorialTypeLabel","layout","topics","role","currentGuidance","words","readingMinutes","sections","section","text"],"additionalProperties":false},{"type":"null"}]},"redirectedFrom":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"message":{"type":["string","null"]}},"required":["notice","revision","article","redirectedFrom","message"],"additionalProperties":false}},{"name":"find_related_content","title":"Find related answers, articles and pages","description":"For a question (query) or one Journal article (slug or url), returns what The Bitcoin Adviser publishes on the subject: approved answers first, then Journal articles, then the guides, pages and tools they point to. An approved answer is the current guidance; an article is context, labelled with its editorial type and dates, and is not an instruction. For an article, the relations a reviewer accepted come first (basis: reviewed), then matches by its title (basis: search). Every item has its canonical url. Drafts and withdrawn articles are never returned. Deterministic; no model.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"slug":{"type":"string","maxLength":200,"pattern":"^(https:\\/\\/(test\\.|content\\.)?thebitcoinadviser\\.com)?(\\/blog\\/)?[a-z0-9][a-z0-9-]*\\/?$"}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notice":{"type":"string"},"revision":{"type":["string","null"]},"article":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"},"author":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false},"publishedAt":{"type":"string"},"updatedAt":{"type":["string","null"]},"editorialType":{"type":"string","enum":["evergreen-explanation","practical-guide","commentary","research","historical-reporting","time-sensitive-analysis"]},"editorialTypeLabel":{"type":"string"},"layout":{"type":"string","enum":["essay","guide"]},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"role":{"type":"string","const":"context"},"currentGuidance":{"anyOf":[{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"answerId":{"type":["string","null"]}},"required":["label","url","answerId"],"additionalProperties":false},{"type":"null"}]}},"required":["slug","title","excerpt","url","author","publishedAt","updatedAt","editorialType","editorialTypeLabel","layout","topics","role","currentGuidance"],"additionalProperties":false},{"type":"null"}]},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"direct":{"type":"string"},"url":{"type":"string","format":"uri"},"reviewed":{"anyOf":[{"type":"object","properties":{"by":{"type":"string"},"date":{"type":"string"}},"required":["by","date"],"additionalProperties":false},{"type":"null"}]},"role":{"type":"string","const":"current guidance"},"basis":{"type":"string","enum":["reviewed","search"]}},"required":["id","question","direct","url","reviewed","role","basis"],"additionalProperties":false}},"articles":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"},"author":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false},"publishedAt":{"type":"string"},"updatedAt":{"type":["string","null"]},"editorialType":{"type":"string","enum":["evergreen-explanation","practical-guide","commentary","research","historical-reporting","time-sensitive-analysis"]},"editorialTypeLabel":{"type":"string"},"layout":{"type":"string","enum":["essay","guide"]},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["basics","control","continuity","income","retirement","us","fees","operations","onboarding","professionals","referrals"]},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"role":{"type":"string","const":"context"},"currentGuidance":{"anyOf":[{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"answerId":{"type":["string","null"]}},"required":["label","url","answerId"],"additionalProperties":false},{"type":"null"}]},"basis":{"type":"string","enum":["reviewed","search"]}},"required":["slug","title","excerpt","url","author","publishedAt","updatedAt","editorialType","editorialTypeLabel","layout","topics","role","currentGuidance","basis"],"additionalProperties":false}},"pages":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"kind":{"type":"string","enum":["guide","page","tool"]},"basis":{"type":"string","enum":["reviewed","search"]}},"required":["label","url","kind","basis"],"additionalProperties":false}},"message":{"type":["string","null"]}},"required":["notice","revision","article","answers","articles","pages","message"],"additionalProperties":false}},{"name":"choose_path","title":"Choose a path","description":"Routes a visitor to the right starting point from their situation. Deterministic. Returns the path and the next view. Situations: \"protect-for-family\" (I hold Bitcoin and want my family to be able to recover it); \"adviser\" (I advise clients who hold Bitcoin); \"something-wrong\" (Something has gone wrong right now); \"inherited\" (Someone has died or can no longer manage their Bitcoin).","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"situation":{"type":"string","enum":["protect-for-family","adviser","something-wrong","inherited"]}},"required":["situation"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"situation":{"type":"string","enum":["protect-for-family","adviser","something-wrong","inherited"]},"path":{"type":"string","enum":["collaborative-security","inheritance","emergency","professional","general","referral"]},"title":{"type":"string"},"reason":{"type":"string"},"next":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","guide"]},"href":{"type":"string"},"label":{"type":"string"},"playbookId":{"type":"string"}},"required":["kind","href","label"],"additionalProperties":false}},"required":["situation","path","title","reason","next"],"additionalProperties":false}},{"name":"choose_security_path","title":"Choose a Security Centre path","description":"Routes a Security Centre concern to its one next room. Deterministic. Concerns: \"digital-life\" (Tighten my digital life, including if I do not hold bitcoin yet); \"holding-unsure\" (I hold bitcoin and I am not sure it is safe); \"family-recovery\" (I want my family to be able to recover it). Something wrong right now is not a concern: send the person straight to https://thebitcoinadviser.com/bitcoin-emergency-kit, which every result also returns as incident.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"concern":{"type":"string","enum":["digital-life","holding-unsure","family-recovery"]}},"required":["concern"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"concern":{"type":"string","enum":["digital-life","holding-unsure","family-recovery"]},"label":{"type":"string"},"layer":{"anyOf":[{"type":"string","enum":["perimeter","holding","control","continuity"]},{"type":"null"}]},"title":{"type":"string"},"reason":{"type":"string"},"next":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false},"incident":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false}},"required":["concern","label","layer","title","reason","next","incident"],"additionalProperties":false}},{"name":"choose_retirement_path","title":"Choose a retirement path","description":"Routes by the retirement system the visitor is working with, not by where they live. Deterministic. Systems: \"united-states\" (United States); \"australia\" (Australia); \"other\" (Somewhere else, or no structure yet). For Australia, smsfEstablished=false adds Bitcoin Super as separate information; the route is always a page of The Bitcoin Adviser. It does not decide eligibility or whether a structure is suitable.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"system":{"type":"string","enum":["united-states","australia","other"]},"smsfEstablished":{"type":"boolean"}},"required":["system"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"system":{"type":"string","enum":["united-states","australia","other"]},"jurisdiction":{"anyOf":[{"type":"string","enum":["US","AU"]},{"type":"null"}]},"label":{"type":"string"},"summary":{"type":"string"},"reason":{"type":"string"},"next":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false},"information":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"relationship":{"type":"string","const":"separate-business"},"text":{"type":"string"}},"required":["label","href","relationship","text"],"additionalProperties":false}}},"required":["system","jurisdiction","label","summary","reason","next"],"additionalProperties":false}},{"name":"choose_us_path","title":"Choose a U.S. starting point","description":"Routes a U.S. visitor by situation to The Bitcoin Adviser's U.S. guidance first: a primary page, related pages, a reason quoted from the primary page, the tax year where the guidance is dated, and an optional enquiry. Deterministic. Situations: \"family-future\" (I'm planning for my family's future); \"estate-or-incapacity\" (I'm dealing with an estate or incapacity); \"retirement-account\" (I have a U.S. retirement account); \"family-office\" (I'm responsible for family or institutional Bitcoin); \"tax-reporting\" (I need U.S. tax and reporting information). It makes no eligibility, legal or tax determination.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"situation":{"type":"string","enum":["family-future","estate-or-incapacity","retirement-account","family-office","tax-reporting"]}},"required":["situation"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"situation":{"type":"string","enum":["family-future","estate-or-incapacity","retirement-account","family-office","tax-reporting"]},"label":{"type":"string"},"summary":{"type":"string"},"primary":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false},"related":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false}},"reason":{"type":"object","properties":{"text":{"type":"string"},"source":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false}},"required":["text","source"],"additionalProperties":false},"dated":{"type":"object","properties":{"asPublished":{"type":"string"},"taxYear":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["asPublished"],"additionalProperties":false},"enquiry":{"type":"object","properties":{"path":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["path","href","label"],"additionalProperties":false}},"required":["situation","label","summary","primary","related","reason"],"additionalProperties":false}},{"name":"calculate_retirement_scenario","title":"Calculate a retirement scenario","description":"Illustrates how many years Bitcoin holdings plus monthly contributions might take to support a target annual income. Deterministic; the same model as the live retirement explorers. Growth is one of three illustrative scenarios (conservative 12%, base 20%, aggressive 35%), chosen by the caller, never a forecast. Withdrawal 3%, inflation 3% on the target when inflationToggle is on, nominal values, no fees, no tax, 50-year cap. Currency USD or AUD, in either letter case. Omitted values take the live page's starting values (1 BTC; 500 USD or 1,500 AUD a month; 80,000 USD or 120,000 AUD target). btcPrice is a starting reference price supplied by the caller (with USD, btcPriceUsd is accepted as an alias). Without it the server's cached market reference is used, labelled live, or a fixed illustrative price when that reference is unavailable. The illustrative price is not a market quotation. Every result carries its assumptions and limitations. It models no account rules, so jurisdiction is null. It does not assess eligibility or suitability and recommends no amount or allocation.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["USD","AUD","usd","aud"]},"currentBtc":{"type":"number"},"monthlyContribution":{"type":"number"},"targetIncome":{"type":"number"},"btcPrice":{"type":"number"},"btcPriceUsd":{"deprecated":true,"description":"Alias of btcPrice, in USD.","type":"number","exclusiveMinimum":0},"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"inflationToggle":{"type":"boolean"}},"required":["currency"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"jurisdiction":{"type":"null"},"currency":{"type":"string","enum":["USD","AUD"]},"inputs":{"type":"object","properties":{"currentBtc":{"type":"number"},"monthlyContribution":{"type":"number"},"targetIncome":{"type":"number"},"btcPrice":{"type":"number"},"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"inflationToggle":{"type":"boolean"}},"required":["currentBtc","monthlyContribution","targetIncome","btcPrice","scenario","inflationToggle"],"additionalProperties":false},"referencePrice":{"type":"object","properties":{"value":{"type":"number"},"source":{"type":"string","enum":["caller","live","fallback"]},"observedAt":{"type":["string","null"]},"display":{"type":"string"}},"required":["value","source","observedAt","display"],"additionalProperties":false},"active":{"type":"object","properties":{"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"horizonYears":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"horizonIncome":{"type":"number"},"maxYearsReached":{"type":"boolean"},"portfolio":{"type":"object","properties":{"btcHeld":{"type":"number"},"price":{"type":"number"},"value":{"type":"number"},"display":{"type":"string"},"btcDisplay":{"type":"string"},"priceDisplay":{"type":"string"}},"required":["btcHeld","price","value","display","btcDisplay","priceDisplay"],"additionalProperties":false}},"required":["scenario","horizonYears","horizonIncome","maxYearsReached","portfolio"],"additionalProperties":false},"scenarios":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"label":{"type":"string"},"growthPct":{"type":"number"},"active":{"type":"boolean"},"display":{"type":"string"},"horizonYears":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"horizonIncome":{"type":"number"},"maxYearsReached":{"type":"boolean"}},"required":["scenario","label","growthPct","active","display","horizonYears","horizonIncome","maxYearsReached"],"additionalProperties":false}},"chart":{"type":"object","properties":{"years":{"type":"array","items":{"type":"number"}},"target":{"type":"array","items":{"type":"number"}},"income":{"type":"object","propertyNames":{"type":"string","enum":["conservative","base","aggressive"]},"additionalProperties":{"type":"array","items":{"type":"number"}},"required":["conservative","base","aggressive"]}},"required":["years","target","income"],"additionalProperties":false},"text":{"type":"object","properties":{"summary":{"type":"string"},"range":{"type":"string"},"portfolio":{"type":"string"}},"required":["summary","range","portfolio"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}},"limitations":{"type":"string"},"disclaimer":{"type":"string"},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["kind","jurisdiction","currency","inputs","referencePrice","active","scenarios","chart","text","assumptions","limitations","disclaimer","nextStep"],"additionalProperties":false}},{"name":"explain_retirement_scenario","title":"Explain a retirement scenario","description":"Runs calculate_retirement_scenario itself and explains the result in plain English. Every number in the explanation comes from the result; text with any other number, or that reads as advice, is replaced by the written explanation. Returns the full calculation too. It does not determine eligibility, recommend anything or give personal advice. Same input as calculate_retirement_scenario. The explanation is written by a language model when one is available, and from the result's own text otherwise. explanation.source says which: \"model\" or \"rule\". It explains an illustration. It is not a forecast or advice.","status":"live","callers":["page","mcp","model"],"availableOverMcp":true,"modelBacked":true,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["USD","AUD","usd","aud"]},"currentBtc":{"type":"number"},"monthlyContribution":{"type":"number"},"targetIncome":{"type":"number"},"btcPrice":{"type":"number"},"btcPriceUsd":{"deprecated":true,"description":"Alias of btcPrice, in USD.","type":"number","exclusiveMinimum":0},"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"inflationToggle":{"type":"boolean"}},"required":["currency"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"jurisdiction":{"type":"null"},"explanation":{"type":"object","properties":{"text":{"type":"string"},"source":{"type":"string","enum":["model","rule"]}},"required":["text","source"],"additionalProperties":false},"writtenExplanation":{"type":"string"},"calculation":{"type":"object","properties":{"kind":{"type":"string","const":"illustration"},"jurisdiction":{"type":"null"},"currency":{"type":"string","enum":["USD","AUD"]},"inputs":{"type":"object","properties":{"currentBtc":{"type":"number"},"monthlyContribution":{"type":"number"},"targetIncome":{"type":"number"},"btcPrice":{"type":"number"},"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"inflationToggle":{"type":"boolean"}},"required":["currentBtc","monthlyContribution","targetIncome","btcPrice","scenario","inflationToggle"],"additionalProperties":false},"referencePrice":{"type":"object","properties":{"value":{"type":"number"},"source":{"type":"string","enum":["caller","live","fallback"]},"observedAt":{"type":["string","null"]},"display":{"type":"string"}},"required":["value","source","observedAt","display"],"additionalProperties":false},"active":{"type":"object","properties":{"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"horizonYears":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"horizonIncome":{"type":"number"},"maxYearsReached":{"type":"boolean"},"portfolio":{"type":"object","properties":{"btcHeld":{"type":"number"},"price":{"type":"number"},"value":{"type":"number"},"display":{"type":"string"},"btcDisplay":{"type":"string"},"priceDisplay":{"type":"string"}},"required":["btcHeld","price","value","display","btcDisplay","priceDisplay"],"additionalProperties":false}},"required":["scenario","horizonYears","horizonIncome","maxYearsReached","portfolio"],"additionalProperties":false},"scenarios":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string","enum":["conservative","base","aggressive"]},"label":{"type":"string"},"growthPct":{"type":"number"},"active":{"type":"boolean"},"display":{"type":"string"},"horizonYears":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"horizonIncome":{"type":"number"},"maxYearsReached":{"type":"boolean"}},"required":["scenario","label","growthPct","active","display","horizonYears","horizonIncome","maxYearsReached"],"additionalProperties":false}},"chart":{"type":"object","properties":{"years":{"type":"array","items":{"type":"number"}},"target":{"type":"array","items":{"type":"number"}},"income":{"type":"object","propertyNames":{"type":"string","enum":["conservative","base","aggressive"]},"additionalProperties":{"type":"array","items":{"type":"number"}},"required":["conservative","base","aggressive"]}},"required":["years","target","income"],"additionalProperties":false},"text":{"type":"object","properties":{"summary":{"type":"string"},"range":{"type":"string"},"portfolio":{"type":"string"}},"required":["summary","range","portfolio"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}},"limitations":{"type":"string"},"disclaimer":{"type":"string"},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["kind","jurisdiction","currency","inputs","referencePrice","active","scenarios","chart","text","assumptions","limitations","disclaimer","nextStep"],"additionalProperties":false}},"required":["kind","jurisdiction","explanation","writtenExplanation","calculation"],"additionalProperties":false}},{"name":"compare_growth","title":"Compare Bitcoin accumulation with cash savings","description":"Illustrates how a lump sum plus monthly contributions might grow in Bitcoin compared with cash savings, nominal and after inflation. Deterministic; the same model as the live Bitcoin Accumulation Calculator. Bitcoin grows on a smooth path at bitcoinCagrPct (0 to 100), an illustrative assumption chosen by the caller, never a forecast; above 45% the result carries the page's stress-testing advisory. Presets: conservative (Bitcoin 12%, cash 3%, inflation 3%), base (Bitcoin 20%, cash 2%, inflation 3%), aggressive (Bitcoin 45%, cash 2%, inflation 3%), bear (Bitcoin 0%, cash 2%, inflation 5%); explicit rates override the preset. Omitted values take the page's starting values (initialAmount 10000, monthlyContribution 500, years 10); A negative or non-finite years value is rejected. Years above 50 are clamped as the page clamps them, as are other out-of-range values, and the result echoes what was used. Currency USD, EUR, GBP, AUD or JPY, in either letter case. btcPrice is a starting price in that currency supplied by the caller (with USD, btcPriceUsd is accepted as an alias). Without it the server's cached market reference is used, labelled live, or a fixed illustrative price when that reference is unavailable. The illustrative price is not a market quotation. The price sets the BTC amounts only; the value comparison does not depend on it. No fees, no tax. It does not assess suitability and recommends no amount or allocation.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["USD","EUR","GBP","AUD","JPY","usd","eur","gbp","aud","jpy"]},"scenario":{"type":"string","enum":["conservative","base","aggressive","bear"]},"initialAmount":{"type":"number"},"monthlyContribution":{"type":"number"},"years":{"type":"number","minimum":0},"inflationPct":{"type":"number"},"bitcoinCagrPct":{"type":"number"},"savingsPct":{"type":"number"},"btcPrice":{"type":"number","exclusiveMinimum":0},"btcPriceUsd":{"deprecated":true,"description":"Alias of btcPrice, in USD.","type":"number","exclusiveMinimum":0}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"jurisdiction":{"type":"null"},"currency":{"type":"string","enum":["USD","EUR","GBP","AUD","JPY"]},"scenario":{"type":"string","enum":["conservative","base","aggressive","bear","custom"]},"inputs":{"type":"object","properties":{"initialAmount":{"type":"number"},"monthlyContribution":{"type":"number"},"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inflationPct":{"type":"number"},"bitcoinCagrPct":{"type":"number"},"savingsPct":{"type":"number"}},"required":["initialAmount","monthlyContribution","years","inflationPct","bitcoinCagrPct","savingsPct"],"additionalProperties":false},"highCagr":{"type":["string","null"]},"referencePrice":{"type":"object","properties":{"value":{"type":"number"},"source":{"type":"string","enum":["caller","live","fallback"]},"observedAt":{"type":["string","null"]},"display":{"type":"string"}},"required":["value","source","observedAt","display"],"additionalProperties":false},"readout":{"type":"object","properties":{"bitcoinResult":{"type":"string"},"traditionalResult":{"type":"string"},"differenceValue":{"type":"string"},"differencePercentage":{"type":"string"},"bitcoinDetails":{"type":"string"},"traditionalDetails":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"insights":{"type":"array","items":{"type":"string"}},"bitcoinReal":{"type":"number"},"cashReal":{"type":"number"},"advantageReal":{"type":"number"},"bitcoinNominal":{"type":"number"},"cashNominal":{"type":"number"},"contributed":{"type":"number"},"btcHeld":{"type":"number"},"btcFromInitial":{"type":"number"},"btcFromMonthly":{"type":"number"},"priceAtHorizon":{"type":"number"},"crossoverYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["bitcoinResult","traditionalResult","differenceValue","differencePercentage","bitcoinDetails","traditionalDetails","metrics","insights","bitcoinReal","cashReal","advantageReal","bitcoinNominal","cashNominal","contributed","btcHeld","btcFromInitial","btcFromMonthly","priceAtHorizon","crossoverYear"],"additionalProperties":false},"series":{"type":"object","properties":{"years":{"type":"array","items":{"type":"number"}},"contributions":{"type":"array","items":{"type":"number"}},"cashNominal":{"type":"array","items":{"type":"number"}},"cashReal":{"type":"array","items":{"type":"number"}},"bitcoinNominal":{"type":"array","items":{"type":"number"}},"bitcoinReal":{"type":"array","items":{"type":"number"}},"btcHeld":{"type":"array","items":{"type":"number"}}},"required":["years","contributions","cashNominal","cashReal","bitcoinNominal","bitcoinReal","btcHeld"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}},"disclaimer":{"type":"string"},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["kind","jurisdiction","currency","scenario","inputs","highCagr","referencePrice","readout","series","assumptions","disclaimer","nextStep"],"additionalProperties":false}},{"name":"convert_fiat_to_sats","title":"Convert fiat to sats","description":"Converts an amount of USD, AUD, EUR or GBP into sats at The Bitcoin Adviser's cached spot price (or a fixed fallback when the spot is unavailable), and returns the same conversion for a small basket of everyday items. Illustration only: not a live quote, not financial advice, and not a promise of purchasing power.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"amount":{"type":"number"},"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"btcPrice":{"type":"number"},"priceSource":{"type":"string","enum":["live","fallback"]},"sats":{"type":"number"},"satsDisplay":{"type":"string"},"basket":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"amountFiat":{"type":"number"},"sats":{"type":"number"},"satsDisplay":{"type":"string"}},"required":["label","amountFiat","sats","satsDisplay"],"additionalProperties":false}},"note":{"type":"string"}},"required":["kind","amount","currency","btcPrice","priceSource","sats","satsDisplay","basket","note"],"additionalProperties":false}},{"name":"borrow_vs_sell","title":"Compare selling Bitcoin with borrowing against it","description":"Illustrates the liquidity from selling an amount of Bitcoin after tax, against borrowing on it as collateral, and what each leaves at a later price. Deterministic; the same model as the live Borrowing Against Bitcoin explorer, in USD. mode btc_to_btc borrows BTC at ltvPct (default 95%); the lender keeps a 5% fee from the collateral, so the rest is retained; fiat_loan borrows USD at ltvPct (default 50%) with simple interest (default 8% a year for 1 year), and returns a liquidation price where the loan reaches 80% of the collateral's value. Tax is a flat rate on the whole sale value, from taxRatePct or the region's default (us 20%, au 45%, illustrative only). horizon sets the later price as a multiple of spot: flat (x1), up50 (x1.5), up100 (x2), stress30 (x0.7), stress50 (x0.5); never a forecast. Stress rows at 30% and 50% below spot are always included. A negative or non-finite termYears is rejected. Other out-of-range values are clamped as the page clamps them, and the result echoes what was used. btcPrice is a spot price in USD supplied by the caller (btcPriceUsd is accepted as an alias). Without it the server's cached USD market reference is used, labelled live, or a fixed illustrative price of 100000 USD when that reference is unavailable. The illustrative price is not a market quotation. It names no lender, does not assess suitability or eligibility, and recommends neither path.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"btcAmount":{"type":"number"},"horizon":{"type":"string","enum":["flat","up50","up100","stress30","stress50"]},"taxRegion":{"type":"string","enum":["us","au"]},"taxRatePct":{"type":"number"},"mode":{"type":"string","enum":["btc_to_btc","fiat_loan"]},"ltvPct":{"type":"number"},"interestRatePct":{"type":"number"},"termYears":{"type":"number","minimum":0},"btcPrice":{"type":"number","exclusiveMinimum":0},"btcPriceUsd":{"deprecated":true,"description":"Alias of btcPrice, in USD.","type":"number","exclusiveMinimum":0}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"inputs":{"type":"object","properties":{"btcAmount":{"type":"number"},"horizon":{"type":"string","enum":["flat","up50","up100","stress30","stress50"]},"horizonMultiplier":{"type":"number"},"taxRegion":{"type":"string","enum":["us","au"]},"taxRatePct":{"type":"number"},"mode":{"type":"string","enum":["btc_to_btc","fiat_loan"]},"ltvPct":{"type":"number"},"interestRatePct":{"type":"number"},"termYears":{"type":"number"}},"required":["btcAmount","horizon","horizonMultiplier","taxRegion","taxRatePct","mode","ltvPct","interestRatePct","termYears"],"additionalProperties":false},"referencePrice":{"type":"object","properties":{"value":{"type":"number"},"source":{"type":"string","enum":["caller","live","fallback"]},"observedAt":{"type":["string","null"]},"display":{"type":"string"}},"required":["value","source","observedAt","display"],"additionalProperties":false},"horizonPriceUsd":{"type":"number"},"summary":{"type":"string"},"sell":{"type":"object","properties":{"grossUsd":{"type":"number"},"taxPaidUsd":{"type":"number"},"liquidityUsd":{"type":"number"},"btcRetained":{"type":"number"},"horizonValueIfHeldUsd":{"type":"number"},"opportunityCostUsd":{"type":"number"}},"required":["grossUsd","taxPaidUsd","liquidityUsd","btcRetained","horizonValueIfHeldUsd","opportunityCostUsd"],"additionalProperties":false},"borrow":{"type":"object","properties":{"title":{"type":"string"},"liquidityUsd":{"type":"number"},"borrowedBtc":{"type":["number","null"]},"btcRetained":{"type":"number"},"horizonRetainedUsd":{"type":"number"},"feeUsd":{"type":"number"},"interestCostUsd":{"type":"number"},"liquidationPriceUsd":{"type":["number","null"]},"marginDistancePct":{"type":["number","null"]}},"required":["title","liquidityUsd","borrowedBtc","btcRetained","horizonRetainedUsd","feeUsd","interestCostUsd","liquidationPriceUsd","marginDistancePct"],"additionalProperties":false},"stress":{"type":"array","items":{"type":"object","properties":{"dropPct":{"type":"number"},"sellLiquidityUsd":{"type":"number"},"borrowLiquidityUsd":{"type":"number"},"btcRetained":{"type":"number"},"horizonRetainedUsd":{"type":"number"},"marginDistancePct":{"type":["number","null"]}},"required":["dropPct","sellLiquidityUsd","borrowLiquidityUsd","btcRetained","horizonRetainedUsd","marginDistancePct"],"additionalProperties":false}},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}},"disclaimer":{"type":"string"},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["kind","inputs","referencePrice","horizonPriceUsd","summary","sell","borrow","stress","assumptions","disclaimer","nextStep"],"additionalProperties":false}},{"name":"value_bitcoin_on_date","title":"Value Bitcoin on a past date","description":"Milestone. Returns the recorded Bitcoin price on a past calendar day (date as YYYY-MM-DD) in AUD, USD, EUR or GBP (default AUD), and the value of btcAmount (default 1, clamped to 0 to 21,000,000, 8 decimals) at that price, as the SMSF audit guide's valuation check does. Prices come from the daily price file The Bitcoin Adviser publishes; the result names its basis, source, generation time and date coverage. A day without a recorded price returns no-data-for-date. Historical record only: it does not forecast or quote current prices, and it is not a valuation policy. Not callable until the price file is published.","status":"milestone","callers":["page","mcp"],"availableOverMcp":false,"modelBacked":false,"sideEffects":"none","refusals":["allocation"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"btcAmount":{"type":"number"},"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]}},"required":["date"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"historical"},"status":{"type":"string","enum":["found","no-data-for-date","data-unavailable"]},"date":{"type":"string"},"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"btcAmount":{"type":"string"},"priceBtc":{"type":["number","null"]},"value":{"type":["number","null"]},"summary":{"type":"string"},"basis":{"type":["string","null"]},"source":{"type":["string","null"]},"generatedAt":{"type":["string","null"]},"coverage":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},{"type":"null"}]}},"required":["kind","status","date","currency","btcAmount","priceBtc","value","summary","basis","source","generatedAt","coverage"],"additionalProperties":false}},{"name":"read_market_position","title":"Read the Bitcoin market position","description":"The Bitcoin market observatory's reading (/dashboard): the Bitcoin price in AUD, USD, EUR or GBP (default AUD), the Mayer Multiple (price over the mean of the 200 completed UTC daily USD closes, unavailable if any of those days is missing) and the position against the published Power Law model trend (USD, σ 0.2). Without a day it reads now, from the cached spot with its own time; with a past day (YYYY-MM-DD) it reads that day's close. The server supplies every price: callers cannot submit a series. Historical measurement only: not a forecast, a valuation, or a signal to buy or sell.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]},"day":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"day":{"type":"string"},"live":{"type":"boolean"},"price":{"type":"object","properties":{"value":{"type":["number","null"]},"usd":{"type":["number","null"]},"observedAt":{"type":["string","null"]},"source":{"type":["string","null"]}},"required":["value","usd","observedAt","source"],"additionalProperties":false},"mayer":{"anyOf":[{"type":"object","properties":{"multiple":{"type":"number"},"zone":{"type":"string","enum":["deep-value","below-average","above-average","overheated"]},"average":{"type":"number"},"from":{"type":"string"},"to":{"type":"string"}},"required":["multiple","zone","average","from","to"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","enum":["no-history","history-stale","gap-in-window","before-history","no-spot","no-close","no-cross","not-completed"]}},"required":["unavailable"],"additionalProperties":false}]},"trend":{"anyOf":[{"type":"object","properties":{"trendUsd":{"type":"number"},"trend":{"type":["number","null"]},"deviation":{"type":"number"},"distance":{"type":"number"},"zone":{"type":"string","enum":["deep-support","below-trend","near-trend","extended","euphoria"]}},"required":["trendUsd","trend","deviation","distance","zone"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","enum":["no-history","history-stale","gap-in-window","before-history","no-spot","no-close","no-cross","not-completed"]},"trendUsd":{"type":["number","null"]}},"required":["unavailable","trendUsd"],"additionalProperties":false}]},"climate":{"anyOf":[{"type":"string","enum":["constructive","balanced","extended","mixed"]},{"type":"null"}]},"climateHeadline":{"type":["string","null"]},"climateSentence":{"type":["string","null"]},"history":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"generatedAt":{"type":"string"},"source":{"type":"string"},"basis":{"type":"string"},"stale":{"type":"boolean"}},"required":["from","to","generatedAt","source","basis","stale"],"additionalProperties":false},{"type":"null"}]}},"required":["currency","day","live","price","mayer","trend","climate","climateHeadline","climateSentence","history"],"additionalProperties":false}},{"name":"read_market_history","title":"Read Bitcoin market history","description":"The dashboard plotter's series (/dashboard): daily Bitcoin price, Mayer Multiple, or Power Law model trend in AUD, USD, EUR or GBP (default AUD), for 1y, 4y or all history, optionally stepped by day, week or month. Points come from the same ledger the page plots, downsampled to at most 500. Historical measurement only: not a forecast or a signal to buy or sell.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]},"range":{"type":"string","enum":["1y","4y","all"]},"series":{"type":"string","enum":["price","mayer","trend"]},"step":{"type":"string","enum":["day","week","month"]}},"required":["range","series"],"additionalProperties":false},"outputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"plotCurrency":{"type":"string","enum":["usd","aud","eur","gbp"]},"range":{"type":"string","enum":["1y","4y","all"]},"series":{"type":"string","enum":["price","mayer","trend"]},"step":{"type":"string","enum":["day","week","month"]},"points":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"value":{"type":["number","null"]}},"required":["day","value"],"additionalProperties":false}},"source":{"type":"string"},"basis":{"type":"string"},"generatedAt":{"type":"string"}},"required":["currency","plotCurrency","range","series","step","points","source","basis","generatedAt"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-history"}},"required":["unavailable"],"additionalProperties":false}]}},{"name":"read_supply_schedule","title":"Read Bitcoin's supply schedule","description":"Bitcoin's scheduled cumulative block subsidy through a block height (the dashboard's Supply drawer), from the consensus rule alone: 50 BTC halved every 210,000 blocks, zero from the 64th halving, 2,099,999,997,690,000 sats in all. Without a height it reads the latest block the server has seen (mempool.space, Blockstream as fallback), or reports unavailable: no-tip. The dashboard page may still show the last tip labelled \"as of\" when the tip is stale; this tool does not. Returns the amount in sats and BTC, its share of the schedule, the reward era, and the next halving with an estimated date at ten-minute blocks. This is the issuance schedule, not circulating supply: the caveats are listed and never subtracted, and lost coins are not estimated.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"height":{"type":"integer","minimum":0,"maximum":100000000}},"additionalProperties":false},"outputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"measure":{"type":"string","const":"scheduled cumulative block subsidy"},"height":{"type":"number"},"scheduledSats":{"type":"number"},"scheduledBtc":{"type":"number"},"shareOfSchedule":{"type":"number"},"remainingSats":{"type":"number"},"epoch":{"type":"object","properties":{"number":{"type":"number"},"startHeight":{"type":"number"},"endHeight":{"type":"number"},"subsidySats":{"type":"number"}},"required":["number","startHeight","endHeight","subsidySats"],"additionalProperties":false},"subsidySats":{"type":"number"},"nextHalvingHeight":{"type":["number","null"]},"blocksToHalving":{"type":["number","null"]},"estimatedHalvingAt":{"type":["string","null"]},"tip":{"anyOf":[{"type":"object","properties":{"source":{"type":"string"},"observedAt":{"type":"string"}},"required":["source","observedAt"],"additionalProperties":false},{"type":"null"}]},"caveats":{"type":"array","items":{"type":"string"}}},"required":["measure","height","scheduledSats","scheduledBtc","shareOfSchedule","remainingSats","epoch","subsidySats","nextHalvingHeight","blocksToHalving","estimatedHalvingAt","tip","caveats"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-tip"}},"required":["unavailable"],"additionalProperties":false}]}},{"name":"estimate_transaction_fee","title":"Estimate a Bitcoin transaction fee","description":"Estimates a Bitcoin network fee as virtual size × fee rate (the dashboard's fee estimator). The size comes from a named wallet pattern (p2wpkh, p2tr, p2wsh-2of3 or p2sh-p2wsh-2of3, default p2wpkh) with inputs (default 1) and outputs (default 2), using BIP141 weights and stated assumptions, or from a custom vbytes figure. The rate is the caller's sat/vB, or the current recommended rate for a priority (fastest, halfHour, hour, economy; default halfHour) from mempool.space, Blockstream as fallback. The amount being sent does not set the fee and is not accepted. Returns sats, the cost in AUD, USD, EUR or GBP at the cached spot, and all four recommended priority rates when the network cache has them. Out-of-range inputs are refused (the dashboard page clamps them). An estimate: no rate guarantees when a transaction confirms, and the wallet sets the final fee.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pattern":{"type":"string","enum":["p2wpkh","p2tr","p2wsh-2of3","p2sh-p2wsh-2of3"]},"inputs":{"type":"integer","minimum":1,"maximum":50},"outputs":{"type":"integer","minimum":1,"maximum":20},"vbytes":{"type":"integer","minimum":60,"maximum":100000},"priority":{"type":"string","enum":["fastest","halfHour","hour","economy"]},"feeRate":{"type":"number","minimum":0.1,"maximum":2000},"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]}},"additionalProperties":false},"outputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"vsize":{"type":"number"},"feeRate":{"type":"number"},"sats":{"type":"number"},"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"value":{"type":["number","null"]},"pattern":{"type":["string","null"]},"inputs":{"type":["number","null"]},"outputs":{"type":["number","null"]},"assumptions":{"type":["string","null"]},"rate":{"type":"object","properties":{"from":{"type":"string","enum":["caller","fastest","halfHour","hour","economy"]},"source":{"type":["string","null"]},"observedAt":{"type":["string","null"]}},"required":["from","source","observedAt"],"additionalProperties":false},"rates":{"anyOf":[{"type":"object","properties":{"fastest":{"type":"number"},"halfHour":{"type":"number"},"hour":{"type":"number"},"economy":{"type":"number"},"minimum":{"type":"number"},"source":{"type":"string"},"observedAt":{"type":"string"}},"required":["fastest","halfHour","hour","economy","minimum","source","observedAt"],"additionalProperties":false},{"type":"null"}]},"note":{"type":"string"}},"required":["vsize","feeRate","sats","currency","value","pattern","inputs","outputs","assumptions","rate","rates","note"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-fee-rates"}},"required":["unavailable"],"additionalProperties":false}]}},{"name":"read_network_state","title":"Read Bitcoin network state","description":"The dashboard's network and mempool readings (/dashboard Network and Transactions drawers): tip height, difficulty adjustment, hashrate (series capped at 90 points), recommended fee rates, and mempool count, size and projected or recent blocks (capped at 8 each). Optional include selects families. Same server cache as /market/network. A family past its stale age is null. Historical measurement only: not a forecast or a signal to buy or sell.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"include":{"minItems":1,"type":"array","items":{"type":"string","enum":["tip","difficulty","hashrate","fees","mempool"]}}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"number","const":1},"generatedAt":{"type":"string"},"tip":{"anyOf":[{"type":"object","properties":{"height":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["height","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"difficulty":{"anyOf":[{"type":"object","properties":{"progressPercent":{"type":"number"},"estimatedChangePercent":{"type":"number"},"remainingBlocks":{"type":"number"},"nextRetargetHeight":{"type":"number"},"estimatedRetargetAt":{"type":"string"},"previousChangePercent":{"type":"number"},"previousRetargetAt":{"type":"string"},"averageBlockSeconds":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["progressPercent","estimatedChangePercent","remainingBlocks","nextRetargetHeight","estimatedRetargetAt","previousChangePercent","previousRetargetAt","averageBlockSeconds","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"hashrate":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["estimated","theoretical"]},"mean7d":{"type":"number"},"series":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"hashrate":{"type":"number"}},"required":["day","hashrate"],"additionalProperties":false}},"difficulty":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["kind","mean7d","series","difficulty","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"fees":{"anyOf":[{"type":"object","properties":{"fastest":{"type":"number"},"halfHour":{"type":"number"},"hour":{"type":"number"},"economy":{"type":"number"},"minimum":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["fastest","halfHour","hour","economy","minimum","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"mempool":{"anyOf":[{"type":"object","properties":{"count":{"type":"number"},"vsize":{"type":"number"},"totalFeeSats":{"type":"number"},"projected":{"type":"array","items":{"type":"object","properties":{"vsize":{"type":"number"},"txCount":{"type":"number"},"medianFee":{"type":"number"},"minFee":{"type":"number"},"maxFee":{"type":"number"}},"required":["vsize","txCount","medianFee","minFee","maxFee"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"at":{"type":"string"},"txCount":{"type":"number"},"size":{"type":"number"},"medianFee":{"type":["number","null"]},"pool":{"type":["string","null"]}},"required":["height","at","txCount","size","medianFee","pool"],"additionalProperties":false}},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["count","vsize","totalFeeSats","projected","recent","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"ageSeconds":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["number","null"]}}},"required":["version","generatedAt","ageSeconds"],"additionalProperties":false}},{"name":"dashboard_snapshot","title":"Read the Bitcoin market dashboard","description":"One reading of the Bitcoin market dashboard (/dashboard): market position (price, Mayer Multiple, Power Law model trend, climate), spot in all four currencies, network tip, difficulty, hashrate change, four fee rates, mempool summary, and the supply schedule at the tip. Same server caches as the page. A family without a fresh value is null. Historical measurement only: not a forecast or a signal to buy or sell.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp","USD","AUD","EUR","GBP"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generatedAt":{"type":"string"},"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"market":{"type":"object","properties":{"currency":{"type":"string","enum":["usd","aud","eur","gbp"]},"day":{"type":"string"},"live":{"type":"boolean"},"price":{"type":"object","properties":{"value":{"type":["number","null"]},"usd":{"type":["number","null"]},"observedAt":{"type":["string","null"]},"source":{"type":["string","null"]}},"required":["value","usd","observedAt","source"],"additionalProperties":false},"mayer":{"anyOf":[{"type":"object","properties":{"multiple":{"type":"number"},"zone":{"type":"string","enum":["deep-value","below-average","above-average","overheated"]},"average":{"type":"number"},"from":{"type":"string"},"to":{"type":"string"}},"required":["multiple","zone","average","from","to"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","enum":["no-history","history-stale","gap-in-window","before-history","no-spot","no-close","no-cross","not-completed"]}},"required":["unavailable"],"additionalProperties":false}]},"trend":{"anyOf":[{"type":"object","properties":{"trendUsd":{"type":"number"},"trend":{"type":["number","null"]},"deviation":{"type":"number"},"distance":{"type":"number"},"zone":{"type":"string","enum":["deep-support","below-trend","near-trend","extended","euphoria"]}},"required":["trendUsd","trend","deviation","distance","zone"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","enum":["no-history","history-stale","gap-in-window","before-history","no-spot","no-close","no-cross","not-completed"]},"trendUsd":{"type":["number","null"]}},"required":["unavailable","trendUsd"],"additionalProperties":false}]},"climate":{"anyOf":[{"type":"string","enum":["constructive","balanced","extended","mixed"]},{"type":"null"}]},"climateHeadline":{"type":["string","null"]},"climateSentence":{"type":["string","null"]},"history":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"generatedAt":{"type":"string"},"source":{"type":"string"},"basis":{"type":"string"},"stale":{"type":"boolean"}},"required":["from","to","generatedAt","source","basis","stale"],"additionalProperties":false},{"type":"null"}]}},"required":["currency","day","live","price","mayer","trend","climate","climateHeadline","climateSentence","history"],"additionalProperties":false},"spot":{"anyOf":[{"type":"object","properties":{"observedAt":{"type":"string"},"source":{"type":"string"},"prices":{"type":"object","properties":{"aud":{"type":["number","null"]},"usd":{"type":["number","null"]},"eur":{"type":["number","null"]},"gbp":{"type":["number","null"]}},"required":["aud","usd","eur","gbp"],"additionalProperties":false}},"required":["observedAt","source","prices"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-spot"}},"required":["unavailable"],"additionalProperties":false}]},"network":{"type":"object","properties":{"tip":{"anyOf":[{"type":"object","properties":{"height":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["height","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"difficulty":{"anyOf":[{"type":"object","properties":{"progressPercent":{"type":"number"},"estimatedChangePercent":{"type":"number"},"remainingBlocks":{"type":"number"},"nextRetargetHeight":{"type":"number"},"estimatedRetargetAt":{"type":"string"},"previousChangePercent":{"type":"number"},"previousRetargetAt":{"type":"string"},"averageBlockSeconds":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["progressPercent","estimatedChangePercent","remainingBlocks","nextRetargetHeight","estimatedRetargetAt","previousChangePercent","previousRetargetAt","averageBlockSeconds","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"hashrate":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["estimated","theoretical"]},"latest":{"type":"number"},"change7d":{"type":["number","null"]},"change30d":{"type":["number","null"]},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["kind","latest","change7d","change30d","observedAt","source"],"additionalProperties":false},{"type":"null"}]},"fees":{"anyOf":[{"type":"object","properties":{"fastest":{"type":"number"},"halfHour":{"type":"number"},"hour":{"type":"number"},"economy":{"type":"number"},"minimum":{"type":"number"},"source":{"type":"string"},"observedAt":{"type":"string"}},"required":["fastest","halfHour","hour","economy","minimum","source","observedAt"],"additionalProperties":false},{"type":"null"}]},"mempool":{"anyOf":[{"type":"object","properties":{"count":{"type":"number"},"vsize":{"type":"number"},"totalFeeSats":{"type":"number"},"blocksWorth":{"type":"number"},"observedAt":{"type":"string"},"source":{"type":"string"}},"required":["count","vsize","totalFeeSats","blocksWorth","observedAt","source"],"additionalProperties":false},{"type":"null"}]}},"required":["tip","difficulty","hashrate","fees","mempool"],"additionalProperties":false},"supply":{"anyOf":[{"type":"object","properties":{"measure":{"type":"string","const":"scheduled cumulative block subsidy"},"height":{"type":"number"},"scheduledSats":{"type":"number"},"scheduledBtc":{"type":"number"},"shareOfSchedule":{"type":"number"},"remainingSats":{"type":"number"},"epoch":{"type":"object","properties":{"number":{"type":"number"},"startHeight":{"type":"number"},"endHeight":{"type":"number"},"subsidySats":{"type":"number"}},"required":["number","startHeight","endHeight","subsidySats"],"additionalProperties":false},"subsidySats":{"type":"number"},"nextHalvingHeight":{"type":["number","null"]},"blocksToHalving":{"type":["number","null"]},"estimatedHalvingAt":{"type":["string","null"]},"tip":{"anyOf":[{"type":"object","properties":{"source":{"type":"string"},"observedAt":{"type":"string"}},"required":["source","observedAt"],"additionalProperties":false},{"type":"null"}]},"caveats":{"type":"array","items":{"type":"string"}}},"required":["measure","height","scheduledSats","scheduledBtc","shareOfSchedule","remainingSats","epoch","subsidySats","nextHalvingHeight","blocksToHalving","estimatedHalvingAt","tip","caveats"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-tip"}},"required":["unavailable"],"additionalProperties":false}]},"ageSeconds":{"type":"object","properties":{"tip":{"type":["number","null"]},"difficulty":{"type":["number","null"]},"hashrate":{"type":["number","null"]},"fees":{"type":["number","null"]},"mempool":{"type":["number","null"]}},"required":["tip","difficulty","hashrate","fees","mempool"],"additionalProperties":false},"gates":{"type":"object","properties":{"treasury":{"type":"boolean","const":false},"wire":{"type":"boolean","const":false}},"required":["treasury","wire"],"additionalProperties":false},"link":{"type":"string"},"note":{"type":"string"}},"required":["generatedAt","currency","market","spot","network","supply","ageSeconds","gates","link","note"],"additionalProperties":false}},{"name":"read_treasury_reality_check","title":"Read the treasury company Reality Check","description":"Bitcoin treasury company shares (Strategy, Metaplanet, Strive) against holding Bitcoin, from TBA Console's weekly verified closes: the share-price return, the return relative to BTC in the same currency ((1 + share) / (1 + BTC) − 1, the primary measure), and Loan My Coins' Reality Check scenario after its 5% fee (0.95 × (1 + share) / (1 + BTC) − 1 BTC per 1 BTC staked), over 1 week and 1, 3, 6 and 12 months. Split-adjusted Friday closes, BTC at the nearest UTC daily close within 36 hours, Metaplanet in yen. Rows without comparable history are unavailable. Past performance only: not a recommendation to buy or sell any share. Loan My Coins is from The Bitcoin Adviser team.","status":"milestone","callers":["page","mcp"],"availableOverMcp":false,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"period":{"type":"string","enum":["1w","1m","3m","6m","1y"]}},"additionalProperties":false},"outputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"weekEnding":{"type":"string"},"verifiedAt":{"type":"string"},"delayed":{"type":"boolean"},"companies":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"currency":{"type":"string","enum":["USD","JPY"]},"rows":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"period":{"type":"string","enum":["1w","1m","3m","6m","1y"]},"from":{"type":"string"},"to":{"type":"string"},"stockReturn":{"type":"number"},"btcReturn":{"type":"number"},"relative":{"type":"number"},"lmc":{"type":"number"}},"required":["period","from","to","stockReturn","btcReturn","relative","lmc"],"additionalProperties":false},{"type":"object","properties":{"period":{"type":"string","enum":["1w","1m","3m","6m","1y"]},"unavailable":{"type":"string","enum":["no-start-week","before-comparable-history","missing-leg"]}},"required":["period","unavailable"],"additionalProperties":false}]}}},"required":["symbol","name","currency","rows"],"additionalProperties":false}},"lmcPost":{"type":["string","null"]},"disclosure":{"type":"string"}},"required":["weekEnding","verifiedAt","delayed","companies","lmcPost","disclosure"],"additionalProperties":false},{"type":"object","properties":{"unavailable":{"type":"string","const":"no-snapshot"}},"required":["unavailable"],"additionalProperties":false}]}},{"name":"estimate_referral_earnings","title":"Illustrate referral programme earnings","description":"Illustrates potential Referral Fees under The Bitcoin Adviser's standard referral programme terms. Hypothetical inputs only; it never reads or estimates what a real referrer is owed, and a referrer's own agreement governs. Inputs: clientsPerMonth (0 to 100, default 2), btcPerClient (0.1 to 1000, default 3), years (1 to 20, default 4), existingBookBtc (0 to 100000, default 0, counts toward the 200 BTC whole-book threshold only). Out-of-range values are clamped and echoed. Each year's referrals count for that whole year; every client stays, pays and adds nothing; client fees follow the public schedule by each client's year (1% years 1 to 4, 0.75% years 5 to 8, 0.5% from year 9). The Referral Fee is 10% of fees received, and 20% on the whole attributed book once it reaches 200 BTC. Results are in BTC; btcPrice (USD; btcPriceUsd is accepted as an alias) adds a US dollar figure held constant and never changes the BTC figures. Not a forecast or a guarantee. mode is \"recurring\" (default) or \"advance\". terms is one of the versions in the schema; leave it out for the standard terms in force. Draft terms here are a preview, not terms in force. With mode \"advance\", firstDeposit (a date, default today in Sydney) and measuredBtc (0 to 1000, default 3 BTC) set the illustration. Recurring mode ignores them.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice","allocation","price"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"mode":{"type":"string","enum":["recurring","advance"]},"terms":{"type":"string","enum":["current"]},"clientsPerMonth":{"type":"number"},"btcPerClient":{"type":"number"},"years":{"type":"integer","minimum":1,"maximum":20},"existingBookBtc":{"type":"number"},"firstDeposit":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"measuredBtc":{"type":"number"},"btcPrice":{"type":"number","exclusiveMinimum":0},"btcPriceUsd":{"deprecated":true,"description":"Alias of btcPrice, in USD.","type":"number","exclusiveMinimum":0}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"illustration"},"mode":{"type":"string","enum":["recurring","advance"]},"terms":{"type":"object","properties":{"version":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["in-force","draft"]},"payment":{"type":"string"}},"required":["version","label","status","payment"],"additionalProperties":false},"recurring":{"anyOf":[{"type":"object","properties":{"inputs":{"type":"object","properties":{"clientsPerMonth":{"type":"number"},"btcPerClient":{"type":"number"},"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"existingBookBtc":{"type":"number"},"btcPriceUsd":{"type":["number","null"]}},"required":["clientsPerMonth","btcPerClient","years","existingBookBtc","btcPriceUsd"],"additionalProperties":false},"perClientYearOneBtc":{"type":"number"},"monthlyFromNewBtc":{"type":"number"},"yearOneBtc":{"type":"number"},"totalBtc":{"type":"number"},"runRateBtc":{"type":"number"},"tierFromYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rows":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clients":{"type":"number"},"bookBtc":{"type":"number"},"sharePct":{"type":"number"},"tier":{"type":"string","enum":["base","elevated"]},"commissionBtc":{"type":"number"},"fiatUsd":{"type":["number","null"]}},"required":["year","clients","bookBtc","sharePct","tier","commissionBtc","fiatUsd"],"additionalProperties":false}},"display":{"type":"object","properties":{"perClientYearOne":{"type":"string"},"monthlyFromNew":{"type":"string"},"yearOne":{"type":"string"},"total":{"type":"string"},"runRate":{"type":"string"},"totalUsd":{"type":["string","null"]}},"required":["perClientYearOne","monthlyFromNew","yearOne","total","runRate","totalUsd"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}}},"required":["inputs","perClientYearOneBtc","monthlyFromNewBtc","yearOneBtc","totalBtc","runRateBtc","tierFromYear","rows","display","assumptions"],"additionalProperties":false},{"type":"null"}]},"advance":{"anyOf":[{"type":"object","properties":{"inputs":{"type":"object","properties":{"firstDeposit":{"type":"string"},"measuredBtc":{"type":"number"},"existingBookBtc":{"type":"number"},"btcPriceUsd":{"type":["number","null"]}},"required":["firstDeposit","measuredBtc","existingBookBtc","btcPriceUsd"],"additionalProperties":false},"measurementClose":{"type":"string"},"coveredMonths":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"bookAtCloseBtc":{"type":"number"},"sharePct":{"type":"number"},"tier":{"type":"string","enum":["base","elevated"]},"advanceBtc":{"type":["number","null"]},"advanceUsd":{"type":["number","null"]},"recoveryExample":{"anyOf":[{"type":"object","properties":{"monthsServed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"btc":{"type":"number"},"clause":{"type":"string"}},"required":["monthsServed","btc","clause"],"additionalProperties":false},{"type":"null"}]},"display":{"type":"object","properties":{"advance":{"type":["string","null"]},"recovery":{"type":["string","null"]}},"required":["advance","recovery"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"}},"required":["id","label","value","note"],"additionalProperties":false}}},"required":["inputs","measurementClose","coveredMonths","bookAtCloseBtc","sharePct","tier","advanceBtc","advanceUsd","recoveryExample","display","assumptions"],"additionalProperties":false},{"type":"null"}]},"disclaimer":{"type":"string"},"governs":{"type":"string"}},"required":["kind","mode","terms","recurring","advance","disclaimer","governs"],"additionalProperties":false}},{"name":"explain_referral_program","title":"Explain the referral programme","description":"Returns the standard terms The Bitcoin Adviser offers new referral partners, as recorded from the agreement: each rule in plain words with its clause, and the terms version they come from. Covers the Referral Fee and the whole-book tier, the client fees it is a share of, when it is paid, and what happens when a client leaves. A referrer's own agreement governs what they are paid; this never says what a particular referrer is owed. Use estimate_referral_earnings to illustrate figures, and prepare_referral_application for where a person applies.","status":"live","callers":["mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"terms"},"terms":{"type":"object","properties":{"version":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["in-force","draft"]}},"required":["version","label","status"],"additionalProperties":false},"facts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"term":{"type":"string"},"text":{"type":"string"},"clause":{"type":["string","null"]}},"required":["id","term","text","clause"],"additionalProperties":false}},"advance":{"type":"object","properties":{"facts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"term":{"type":"string"},"text":{"type":"string"},"clause":{"type":["string","null"]}},"required":["id","term","text","clause"],"additionalProperties":false}},"recovery":{"type":"array","items":{"type":"string"}},"recoveryClause":{"type":"string"}},"required":["facts","recovery","recoveryClause"],"additionalProperties":false},"specialArrangements":{"type":"string"},"governs":{"type":"string"},"page":{"type":"string","format":"uri"},"apply":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"operation":{"type":"string","const":"prepare_referral_application"},"submission":{"type":"string","const":"person-only"}},"required":["page","operation","submission"],"additionalProperties":false},"illustrate":{"type":"string","const":"estimate_referral_earnings"}},"required":["kind","terms","facts","advance","specialArrangements","governs","page","apply","illustrate"],"additionalProperties":false}},{"name":"find_adviser","title":"Find an adviser","description":"Shortlists advisers of The Bitcoin Adviser whose recorded details confirm what was asked. Deterministic, matching rules version 1. audience is holder (a Bitcoin holder or family), professional (an attorney, CPA, notary or family office advising clients) or media (a host or organiser). need (not for media): smsf, ira, custody, education, inheritance, corporate, family_office; smsf is an Australian SMSF and ira a US IRA. language: en, es, fr, it, de, nl, ja. market (optional, never required): americas, au-nz, europe, japan, africa. Returns outcome \"shortlist\" (up to 3, or every match with all=true, each with fixed-wording reasons), \"insufficient\" (no audience, or neither need nor language) or \"no-match\"; every result carries the team contact route. Matching uses confirmed facts only; a shortlist is not a recommendation or a judgement of competence, and equal matches are ordered by name. It does not book a call or contact anyone. The need \"custody\" means help securing bitcoin the person holds themselves, through collaborative security. It does not mean The Bitcoin Adviser holds anyone's bitcoin.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"audience":{"type":"string","enum":["holder","professional","media"]},"need":{"type":"string","enum":["smsf","ira","custody","education","inheritance","corporate","family_office"]},"language":{"type":"string","enum":["en","es","fr","it","de","nl","ja"]},"market":{"type":"string","enum":["americas","au-nz","europe","japan","africa"]},"all":{"type":"boolean"}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"rulesVersion":{"type":"number"},"query":{"type":"object","properties":{"audience":{"type":"string","enum":["holder","professional","media"]},"need":{"type":"string","enum":["smsf","ira","custody","education","inheritance","corporate","family_office"]},"language":{"type":"string","enum":["en","es","fr","it","de","nl","ja"]},"market":{"type":"string","enum":["americas","au-nz","europe","japan","africa"]}},"additionalProperties":false},"team":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false},"outcome":{"type":"string","enum":["shortlist","insufficient","no-match"]},"shortlist":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}},"profileUrl":{"type":["string","null"]},"booking":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["hubspot","calendly","tba-meetings"]},"url":{"type":"string"},"label":{"type":"string"},"paid":{"type":"boolean"}},"required":["provider","url","label","paid"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","role","reasons","profileUrl","booking"],"additionalProperties":false}},"total":{"type":"number"},"tiedAtCut":{"type":"number"},"showingAll":{"type":"boolean"}},"required":["rulesVersion","query","team","outcome","shortlist"],"additionalProperties":false}},{"name":"open_playbook","title":"Open a playbook","description":"Returns a versioned Security Centre playbook: checklist groups and items with citations, plus the readiness questions explain_gap accepts. Checklist progress is kept by the caller; this operation stores nothing.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","custody","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"playbookId":{"default":"trezor-collaborative-security","type":"string","enum":["trezor-collaborative-security"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","enum":["trezor-collaborative-security"]},"version":{"type":"string"},"reviewed":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"citation":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"},"reviewed":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["id","title","body","citation"],"additionalProperties":false}}},"required":["id","title","summary","items"],"additionalProperties":false}},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prompt":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false}}},"required":["id","prompt","options"],"additionalProperties":false}}},"required":["id","version","reviewed","title","summary","groups","questions"],"additionalProperties":false}},{"name":"check_security_posture","title":"Check security posture","description":"Names the one security layer that needs attention (perimeter, holding, control, or continuity) and one next room, from enumerated answers. The answers are sent to the site to work out the result, and are not stored or logged. If the person asks for an explanation, the answers are also sent to an AI model provider, which is asked not to keep them. On the site's page, saved answers stay in the person's browser. What the calling agent keeps in its own history is outside the site's control. Deterministic and model-free. There is no score and it never certifies an arrangement as safe; other layers that also need attention are listed. It never accepts a seed, a key, a balance, an address, or identifying details. Questions: emailProtected (Is the email account behind your bitcoin accounts protected by a security key or an authenticator app, not text messages? \"yes\"|\"no\"|\"unsure\"); passwordManager (Do you use a password manager, with a different password for every account? \"yes\"|\"no\"|\"unsure\"); holding (Where is most of your bitcoin held? \"exchange\"|\"single-key\"|\"multisig\"|\"unsure\"); singleLoss (If one device or one seed backup were lost or stolen, could the bitcoin still be recovered, and still not be moved by whoever has it? \"yes\"|\"no\"|\"unsure\"); someoneCanRecover (If you could not act tomorrow, would the person taking over know how recovery should begin? \"yes\"|\"no\"|\"unsure\"); rehearsed (Have they walked through those steps with you? \"yes\"|\"no\").","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","allocation","price","custody","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"answers":{"type":"object","properties":{"emailProtected":{"type":"string","enum":["yes","no","unsure"]},"passwordManager":{"type":"string","enum":["yes","no","unsure"]},"holding":{"type":"string","enum":["exchange","single-key","multisig","unsure"]},"singleLoss":{"type":"string","enum":["yes","no","unsure"]},"someoneCanRecover":{"type":"string","enum":["yes","no","unsure"]},"rehearsed":{"type":"string","enum":["yes","no"]}},"required":["emailProtected","passwordManager","holding","singleLoss","someoneCanRecover"],"additionalProperties":false}},"required":["answers"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postureVersion":{"type":"string"},"layer":{"anyOf":[{"type":"string","enum":["perimeter","holding","control","continuity"]},{"type":"null"}]},"layerLabel":{"type":["string","null"]},"finding":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"],"additionalProperties":false},{"type":"null"}]},"reason":{"type":"string"},"citations":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"},"reviewed":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"nextRoom":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false},"alsoNoted":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"layer":{"type":"string","enum":["perimeter","holding","control","continuity"]},"title":{"type":"string"}},"required":["id","layer","title"],"additionalProperties":false}}},"required":["postureVersion","layer","layerLabel","finding","reason","citations","nextRoom","alsoNoted"],"additionalProperties":false}},{"name":"assess_risk","title":"Assess bitcoin security risk","description":"The full Bitcoin risk assessment: from enumerated answers across the four layers (perimeter, holding, control, continuity), returns every finding in priority order (priority exposure, continuity gap, improvement) with what it means, why it matters and one guide, then each layer's status and a summary. Deterministic and model-free. There is no score and it is not a safety rating: a layer with no finding reads \"No issue identified from these answers\", and a skipped question is never read as reassuring. Any question may be skipped. The answers are evaluated and not kept; what the calling agent keeps in its own history is outside the site's control. It never accepts a seed, a key, a balance, an address, or identifying details. Questions: emailProtected (Is the email account behind your bitcoin accounts protected by a security key or an authenticator app, not text messages? \"yes\"|\"no\"|\"unsure\"); passwordManager (Do you use a password manager, with a different password for every account? \"yes\"|\"no\"|\"unsure\"); holding (Where is most of your bitcoin held? \"exchange\"|\"single-key\"|\"multisig\"|\"unsure\"); geographic (If your house burned down tonight, would you lose access to your Bitcoin forever? \"yes\"|\"no\"|\"unsure\"); testedBackup (Have you ever tested your backup recovery process? \"yes\"|\"no\"|\"unsure\"); singleLoss (If one device or one seed backup were lost or stolen, could the bitcoin still be recovered, and still not be moved by whoever has it? \"yes\"|\"no\"|\"unsure\"); othersHaveAccess (Does anyone else have access to your Bitcoin keys or recovery information? \"yes\"|\"no\"|\"unsure\"); othersCanMoveAlone (Could any one of those people access enough keys to move your Bitcoin without your involvement? \"yes\"|\"no\"|\"unsure\"; only when othersHaveAccess is \"yes\"); coercion (Could someone force you to move your Bitcoin with a threat right now? \"yes\"|\"no\"|\"unsure\"); valueGrowth (If your Bitcoin increased 10x in value over the next 5 years, would your current custody setup still be appropriate? \"yes\"|\"no\"|\"unsure\"); someoneCanRecover (If you could not act tomorrow, would the person taking over know how recovery should begin? \"yes\"|\"no\"|\"unsure\"); rehearsed (Have they walked through those steps with you? \"yes\"|\"no\"; only when someoneCanRecover is \"yes\"); writtenInstructions (Do you have written instructions that a non-technical person could follow to recover your Bitcoin? \"yes\"|\"no\"|\"unsure\"); legalStructure (Do you have a clear legal structure for Bitcoin ownership (personal, trust, company, etc.)? \"yes\"|\"no\"|\"unsure\").","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","allocation","price","custody","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"answers":{"type":"object","properties":{"emailProtected":{"type":"string","enum":["yes","no","unsure"]},"passwordManager":{"type":"string","enum":["yes","no","unsure"]},"holding":{"type":"string","enum":["exchange","single-key","multisig","unsure"]},"geographic":{"type":"string","enum":["yes","no","unsure"]},"testedBackup":{"type":"string","enum":["yes","no","unsure"]},"singleLoss":{"type":"string","enum":["yes","no","unsure"]},"othersHaveAccess":{"type":"string","enum":["yes","no","unsure"]},"othersCanMoveAlone":{"type":"string","enum":["yes","no","unsure"]},"coercion":{"type":"string","enum":["yes","no","unsure"]},"valueGrowth":{"type":"string","enum":["yes","no","unsure"]},"someoneCanRecover":{"type":"string","enum":["yes","no","unsure"]},"rehearsed":{"type":"string","enum":["yes","no"]},"writtenInstructions":{"type":"string","enum":["yes","no","unsure"]},"legalStructure":{"type":"string","enum":["yes","no","unsure"]}},"additionalProperties":false}},"required":["answers"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"string"},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"tier":{"type":"string","enum":["priority","continuity","improvement"]},"tierLabel":{"type":"string"},"layer":{"type":"string","enum":["perimeter","holding","control","continuity"]},"layerLabel":{"type":"string"},"title":{"type":"string"},"lines":{"type":"array","items":{"type":"string"}},"guide":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false},"citations":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"},"reviewed":{"type":"string"}},"required":["label","href"],"additionalProperties":false}}},"required":["rank","id","tier","tierLabel","layer","layerLabel","title","lines","guide","citations"],"additionalProperties":false}},"layers":{"type":"array","items":{"type":"object","properties":{"layer":{"type":"string","enum":["perimeter","holding","control","continuity"]},"label":{"type":"string"},"status":{"type":"string","enum":["attention","clear","unknown"]},"statusLabel":{"type":"string"}},"required":["layer","label","status","statusLabel"],"additionalProperties":false}},"unanswered":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prompt":{"type":"string"}},"required":["id","prompt"],"additionalProperties":false}},"answered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"asked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false},"rating":{"type":"string","const":"There is no score and this is not a safety rating. Skipped questions are not counted as fine."},"disclaimer":{"type":"string"}},"required":["version","summary","findings","layers","unanswered","answered","asked","nextStep","rating","disclaimer"],"additionalProperties":false}},{"name":"explain_gap","title":"Explain a readiness or posture gap","description":"Reads validated answers, either readiness answers for a playbook (answers) or security posture answers (posture, the same shape check_security_posture takes). Deterministic rules name the gap and, for posture, the layer. The explanation is written from the cited record, by the model when available and from the record's own text otherwise. Returns citations and one next step. It never rates an arrangement as safe. First case: the family know where the devices are but not how recovery works if the keyholder is incapacitated ({\"answers\":{\"devicesLocation\":\"yes\",\"recoveryKnown\":\"no\"}}).","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":true,"sideEffects":"none","refusals":["seed","private-key","allocation","price","custody","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"playbookId":{"default":"trezor-collaborative-security","type":"string","enum":["trezor-collaborative-security"]},"answers":{"type":"object","properties":{"devicesLocation":{"type":"string","enum":["yes","no","unsure"]},"recoveryKnown":{"type":"string","enum":["yes","no","unsure"]},"recoveryTested":{"type":"string","enum":["yes","no"]}},"required":["devicesLocation","recoveryKnown"]},"posture":{"type":"object","properties":{"emailProtected":{"type":"string","enum":["yes","no","unsure"]},"passwordManager":{"type":"string","enum":["yes","no","unsure"]},"holding":{"type":"string","enum":["exchange","single-key","multisig","unsure"]},"singleLoss":{"type":"string","enum":["yes","no","unsure"]},"someoneCanRecover":{"type":"string","enum":["yes","no","unsure"]},"rehearsed":{"type":"string","enum":["yes","no"]}},"required":["emailProtected","passwordManager","holding","singleLoss","someoneCanRecover"],"additionalProperties":false}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"check":{"type":"string","enum":["playbook-readiness","security-posture"]},"playbookId":{"type":"string","enum":["trezor-collaborative-security"]},"playbookVersion":{"type":"string"},"postureVersion":{"type":"string"},"layer":{"anyOf":[{"type":"string","enum":["perimeter","holding","control","continuity"]},{"type":"null"}]},"gap":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"],"additionalProperties":false},{"type":"null"}]},"explanation":{"type":"object","properties":{"heading":{"type":"string"},"text":{"type":"string"},"source":{"type":"string","enum":["model","rule"]}},"required":["heading","text","source"],"additionalProperties":false},"writtenExplanation":{"type":"string"},"citations":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"},"reviewed":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["check","gap","explanation","writtenExplanation","citations","nextStep"],"additionalProperties":false}},{"name":"read_warning","title":"Read the security warnings desk","description":"Returns the published warnings register: four evergreen threat types (what multisig limits and what it does not stop), then each published incident with its reviewed state (active or historical), its review freshness (current, or overdue once its review-by date passes), who it applies to, statuses, facts, the recommended action, evidence, dates, review owner and source link. An overdue active incident is 'previously assessed as active; review overdue', not resolved. status says whether the register was read just now (current) or is degraded (stale, bundled, unavailable); a degraded desk may be incomplete and never means nothing is wrong. Omit warningId to list every published incident; filter by state or threatType.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"warningId":{"type":"string","maxLength":80,"pattern":"^[a-z0-9-]+$"},"state":{"type":"string","enum":["active","historical"]},"threatType":{"type":"string","enum":["supply-chain","seed-generation","firmware","impersonation"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["current","stale","bundled","unavailable"]},"notice":{"type":["string","null"]},"revision":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"publishedAt":{"type":["string","null"]},"threatTypes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["supply-chain","seed-generation","firmware","impersonation"]},"label":{"type":"string"},"description":{"type":"string"},"multisigLimits":{"type":"string"},"multisigDoesNotStop":{"type":"string"},"whatToDo":{"type":"string"}},"required":["id","label","description","multisigLimits","multisigDoesNotStop","whatToDo"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"threatType":{"type":"string","enum":["supply-chain","seed-generation","firmware","impersonation"]},"state":{"type":"string","enum":["active","historical"]},"freshness":{"type":"string","enum":["current","overdue"]},"standing":{"type":"string"},"badges":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"appliesTo":{"type":"string"},"statuses":{"type":"array","items":{"type":"string"}},"severity":{"type":["string","null"]},"summary":{"type":"string"},"facts":{"type":"array","items":{"type":"string"}},"action":{"type":"string"},"evidence":{"type":"string"},"firstPublishedAt":{"type":"string"},"firstPublished":{"type":"string"},"reviewedAt":{"type":"string"},"reviewed":{"type":"string"},"reviewBy":{"type":"string"},"reviewOwner":{"type":["string","null"]},"citation":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"}},"required":["label","href"],"additionalProperties":false}},"required":["id","threatType","state","freshness","standing","badges","title","appliesTo","statuses","severity","summary","facts","action","evidence","firstPublishedAt","firstPublished","reviewedAt","reviewed","reviewBy","reviewOwner","citation"],"additionalProperties":false}},"desk":{"type":"object","properties":{"scope":{"type":"string"},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"historical":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overdue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"statement":{"type":["string","null"]},"evergreen":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string","format":"uri"},"description":{"type":"string"}},"required":["label","href","description"],"additionalProperties":false}},"required":["scope","active","historical","overdue","statement","evergreen"],"additionalProperties":false}},"required":["status","notice","revision","publishedAt","threatTypes","warnings","desk"],"additionalProperties":false}},{"name":"draft_will_starter","title":"Draft a Bitcoin Will Starter","description":"Builds the Bitcoin Will Starter's structured draft: a Bitcoin-aware starting point to take to a lawyer where the person lives. It is not a will, not legal advice, and not valid for execution without legal review. Same clause library and wording as the page at /free-bitcoin-will. Jurisdictions: us (United States (most states, generic)), au (Australia), uk (United Kingdom), ca (Canada), de (Germany), eu (Other EU country), sg (Singapore), other (Other jurisdiction). Every other field is optional: an empty field stays as a bracketed blank in the draft and is listed in unfilled, so names can be added later rather than sent. Anything passed is used once to build the draft and is not stored. date (YYYY-MM-DD) dates the draft; without it the server's current date is used. Seed phrases, private keys, wallet locations and recovery steps never belong in a will and are refused.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jurisdiction":{"type":"string","enum":["us","au","uk","ca","de","eu","sg","other"]},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"address":{"type":"string","maxLength":200},"usState":{"type":"string","maxLength":200},"governingLaw":{"type":"string","maxLength":200},"fullName":{"type":"string","maxLength":200},"spouse":{"type":"string","maxLength":200},"childrenCount":{"type":"string","maxLength":200},"children":{"type":"string","maxLength":1000},"digitalShare":{"type":"string","maxLength":200},"digitalPrimary":{"type":"string","maxLength":200},"digitalContingent":{"type":"string","maxLength":200},"residuaryPrimary":{"type":"string","maxLength":200},"residuaryContingent":{"type":"string","maxLength":200},"executor":{"type":"string","maxLength":200},"executorLocation":{"type":"string","maxLength":200},"alternateExecutor":{"type":"string","maxLength":200},"guardian":{"type":"string","maxLength":200},"alternateGuardian":{"type":"string","maxLength":200},"signatureDay":{"type":"string","maxLength":200},"signatureMonth":{"type":"string","maxLength":200},"signatureYear":{"type":"string","maxLength":200}},"required":["jurisdiction"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","const":"starter-draft"},"jurisdiction":{"type":"object","properties":{"id":{"type":"string","enum":["us","au","uk","ca","de","eu","sg","other"]},"label":{"type":"string"},"refinement":{"type":"string","enum":["Medium","High"]},"guidance":{"type":"object","properties":{"title":{"type":"string"},"points":{"type":"array","items":{"type":"string"}},"note":{"type":"string"},"link":{"type":"string","format":"uri"}},"required":["title","points"],"additionalProperties":false}},"required":["id","label","refinement","guidance"],"additionalProperties":false},"draft":{"type":"string"},"articles":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heading":{"type":"string"},"text":{"type":"string"}},"required":["number","heading","text"],"additionalProperties":false}},"unfilled":{"type":"array","items":{"type":"string","enum":["address","usState","governingLaw","fullName","spouse","childrenCount","children","digitalShare","digitalPrimary","digitalContingent","residuaryPrimary","residuaryContingent","executor","executorLocation","alternateExecutor","guardian","alternateGuardian","signatureDay","signatureMonth","signatureYear"]}},"notes":{"type":"array","items":{"type":"string"}},"version":{"type":"object","properties":{"tool":{"type":"string"},"clauses":{"type":"string"}},"required":["tool","clauses"],"additionalProperties":false},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["kind","jurisdiction","draft","articles","unfilled","notes","version","nextStep"],"additionalProperties":false}},{"name":"prepare_enquiry","title":"Prepare an enquiry","description":"Returns the validated path and source context for the client enquiry form, and where a person can complete it. It does not fill personal fields and does not submit anything. Only a person submits the form.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"path":{"default":"general","type":"string","enum":["collaborative-security","inheritance","emergency","professional","general","referral"]},"enquiryType":{"type":"string","enum":["corporate_treasury"]},"acquisitionSource":{"type":"string","enum":["cbo","tba"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"path":{"type":"string","enum":["collaborative-security","inheritance","emergency","professional","general","referral"]},"source":{"type":"string","enum":["test","website","development"]},"enquiryType":{"anyOf":[{"type":"string","enum":["corporate_treasury"]},{"type":"null"}]},"acquisitionSource":{"anyOf":[{"type":"string","enum":["cbo","tba"]},{"type":"null"}]},"form":{"type":"object","properties":{"portalId":{"type":"string"},"formId":{"type":"string"},"region":{"type":"string"}},"required":["portalId","formId","region"],"additionalProperties":false},"hiddenFields":{"type":"object","properties":{"tba_path":{"type":"string"},"tba_source":{"type":"string"},"referrer":{"type":"string","const":""}},"required":["tba_path","tba_source","referrer"],"additionalProperties":false},"pageQuery":{"type":"string"},"completeAt":{"type":"string"},"submission":{"type":"string","const":"person-only"}},"required":["path","source","enquiryType","acquisitionSource","form","hiddenFields","pageQuery","completeAt","submission"],"additionalProperties":false}},{"name":"prepare_referral_application","title":"Prepare a referral partner application","description":"Returns the client enquiry form for a referral programme enquiry (tba_path=referral) and where a person can complete it, with a validated audience (professional-adviser, community-partner, bitcoiner, or unspecified). It does not fill personal fields and does not submit anything. Only a person submits. Submitting is an enquiry, not an approved partnership. It says nothing about what a referrer is paid.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"audience":{"default":"unspecified","type":"string","enum":["professional-adviser","community-partner","bitcoiner","unspecified"]}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"audience":{"type":"string","enum":["professional-adviser","community-partner","bitcoiner","unspecified"]},"source":{"type":"string","enum":["test","website","development"]},"form":{"type":"object","properties":{"portalId":{"type":"string"},"formId":{"type":"string"},"region":{"type":"string"}},"required":["portalId","formId","region"],"additionalProperties":false},"hiddenFields":{"type":"object","properties":{"tba_path":{"type":"string","const":"referral"},"tba_source":{"type":"string"},"referrer":{"type":"string","const":""}},"required":["tba_path","tba_source","referrer"],"additionalProperties":false},"pageQuery":{"type":"string"},"completeAt":{"type":"string"},"submission":{"type":"string","const":"person-only"}},"required":["audience","source","form","hiddenFields","pageQuery","completeAt","submission"],"additionalProperties":false}},{"name":"prepare_terms_request","title":"Prepare a terms request","description":"Assembles a request for a person to review: who, which agreement, and an idempotency key. It does not send anything. Sending is a separate, authenticated, human-confirmed step owned by Console, and it is disabled on this site. Use it only when the person asks for terms. Pass personAsked: true to confirm they asked. The call is refused without it. Do not offer terms unprompted. Name and email are accepted only after the person agrees to share them. Pass consent: true only once they have agreed. The call is refused without it. The only personal details it collects are the person's name and email. Collected: name, email. Privacy policy: https://thebitcoinadviser.com/privacy-policy. While sending is disabled, the person takes the request to the team themselves, through the Contact page in nextStep. They can read the terms first at readableTermsUrl.","status":"live","callers":["page","mcp"],"availableOverMcp":true,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key","advice"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"agreement":{"type":"string","enum":["client-terms"]},"personAsked":{"type":"boolean","const":true},"consent":{"type":"boolean","const":true},"person":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["name","email"]}},"required":["agreement","personAsked","consent","person"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"request":{"type":"object","properties":{"agreement":{"type":"string","enum":["client-terms"]},"person":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"additionalProperties":false},"idempotencyKey":{"type":"string"}},"required":["agreement","person","idempotencyKey"],"additionalProperties":false},"execution":{"type":"object","properties":{"enabled":{"type":"boolean"},"reason":{"type":"string"}},"required":["enabled","reason"],"additionalProperties":false},"readableTermsUrl":{"type":"string","format":"uri"},"collected":{"type":"array","items":{"type":"string","enum":["name","email"]}},"privacyPolicyUrl":{"type":"string","format":"uri"},"nextStep":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"},"description":{"type":"string"}},"required":["label","href"],"additionalProperties":false}},"required":["request","execution","readableTermsUrl","collected","privacyPolicyUrl","nextStep"],"additionalProperties":false}},{"name":"resolve_public_profile","title":"Resolve a public profile","description":"Catalogue milestone. Returns the public name and canonical URL for an adviser or referrer slug. A retired row is not found. Never returns an attribution stamp. Not callable until the catalogue snapshot is published.","status":"milestone","callers":["page","mcp"],"availableOverMcp":false,"modelBacked":false,"sideEffects":"none","refusals":["seed","private-key"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,62}$"}},"required":["slug"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"found":{"type":"boolean"},"kind":{"anyOf":[{"type":"string","enum":["adviser","referrer"]},{"type":"null"}]},"name":{"type":["string","null"]},"canonicalUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["found","kind","name","canonicalUrl"],"additionalProperties":false}}]}