io.github.lonniev/optionality-mcp
Optionality — AI-judged options trading drill, Tollbooth-monetized MCP server
* hosting country is best-effort behind CDNs · Unknown facts are omitted here and listed as pending in the profile.
Trust verdict
No blockers found across the assessed dimensions.
Profile
What this server is — descriptive, not a rating. The verdict above judges it; this describes it.
Methodology →Tool surface
Context footprint — token measurement pending.
optionality_account_statementGenerate a patron's account statement at this operator.Returns the patron's purchase history, active credit tranches,per-tool usage breakdown, and recent daily usage logs. This isthe patron's spending account — not the operator's Authoritytax balance.Free — no credits consumed. Proof of npub ownership is requiredto prevent statement-scraping of arbitrary patrons.
optionality_account_statement_infographicAdoption
Not applicable — this server has no package distribution, so registry adoption signals (downloads, maintainers) don't exist for it.
Connect
https://optionality-mcp.fastmcp.app/mcpSources
Every verdict and label is attributable to its source and recomputed from our own landed copy, never read live on this page.
Generate a visual SVG infographic of your account statement.Returns the same data as account_statement, rendered as a dark-themedSVG graphic with balance hero, metrics cards, health gauge, tranchetable, and tool usage breakdown. Costs 1 api_sat per call. Proof isverified by ``debit_or_deny`` before any cost is incurred.
optionality_adoption_statusCheck this operator's adoption-request status at a chosen Authority.Free. Polls the Authority MCP-to-MCP for the status of this operator'srequest (pending / approved / rejected / provisioned).
optionality_ask_tipGet a non-spoiler Socratic hint for an open journal entry.history is an optional JSON-encoded array of prior {question, answer}turns from this clue conversation, so follow-on questions havecontext. The wheel caps it hard, so oversupplying gains nothing.Returns a **claim check**, not the hint. Redeem the ``claim_check``with ``optionality_fetch_tip``, polling until ``status`` is ``done``.A degenerate question (empty or oversized) needs no LLM, so it returns asettled ``{status: "done"}`` nudge dire…
optionality_check_authority_balanceCheck this operator's tax balance at the Authority.Returns the sats available for certifying patron credit purchases.When this balance reaches zero, patron top-ups cannot be certifiedand the operator must call purchase_credits on the Authority.This is the operator's own funding — not a patron balance. Free.
optionality_check_balanceCheck a patron's credit balance at this operator.This is the patron's spending balance — credits purchased viaLightning for tool calls at this operator. For the operator'sown balance at the Authority (needed to certify patron purchases),use authority_check_balance instead.Free — no credits required. Proof of npub ownership is requiredto prevent anyone-with-the-registry from enumerating balances.
optionality_check_paymentCheck the payment status of a Lightning invoice.Call after paying the invoice from purchase_credits.Free — no credits required. Proof of npub ownership is requiredto prevent credit-grant front-running by an observer of theinvoice ID.
optionality_check_pricePreview the effective cost of a tool call.Shows the base cost and any constraint effects (discounts, freetrials, surge pricing). Free — no credits required.
optionality_check_proof_statusCheck whether a previously-cached dpop_token is still valid.Mirrors ``check_oauth_status`` for the npub-proof flow: a callingagent can ask "will my next paid call accept this dpop_token?"before burning credits on a guaranteed failure.Free, no side effects — does not evict the cache or touch relays.
optionality_deal_scenarioGenerate a fresh options trading scenario and open a journal entry.
optionality_delete_couponDelete a coupon. Cascades to all patron redemptions.Any chain step referencing the deleted coupon_id becomes ano-op (the constraint returns neutral on unknown ids) — theStudio surfaces orphan references as warnings.RESTRICTED to operator — requires proof.
optionality_delete_journalHard-delete a journal entry and recompute the leaderboard cache.
optionality_delete_patron_credentialRemove a single patron credential field.Deletes one field from stored credentials without affectingother fields. Free. Proof of npub ownership is required —this is a write to the patron's sensitive credential vault.
optionality_escrow_nsecDeposit a freshly-generated nsec for operator-managed Nostr signing.Trade-off: sovereignty for UX. Optionality holds the nsec encryptedin Neon (AES-256-GCM, key derived from operator nsec). Until youwithdraw it, the operator can sign Nostr DMs on your behalf. Usethis only for fresh game-persona keypairs — never for an existingNostr identity that lives elsewhere.The nsec MUST derive to the same npub that authenticated this call,or the deposit is rejected.
optionality_fetch_judgementRedeem a judge_trade claim check.Free. While ``status`` is ``running``, wait ``poll_after_seconds`` andcall again. When ``done``, ``result`` holds the judge_trade response(``entry_id`` + ``evaluation``). ``expired`` means the claim isunknown or its result aged out — submit the trade again.
optionality_fetch_scenarioRedeem a deal_scenario claim check.Free. While ``status`` is ``running``, wait ``poll_after_seconds`` andcall again. When ``done``, ``result`` holds the deal_scenario response(``entry_id`` + ``scenario``). ``expired`` means the claim is unknownor its result aged out — start a new deal_scenario request.
optionality_fetch_tipRedeem an ask_tip claim check.Free. While ``status`` is ``running``, wait ``poll_after_seconds`` andcall again. When ``done``, ``result`` holds the ask_tip response(``tip``). ``expired`` means the claim is unknown or its result agedout — ask again.
optionality_forget_couponRemove a coupon from this patron's redemption list.Cosmetic only — the coupon itself still exists at the operator,and the patron can re-redeem the same code later while thewindow allows. Free — requires proof of ``npub``.
optionality_forget_credentialsDelete vaulted credentials for a specific service and npub.For operator credentials, pass the operator's own npub. For patroncredentials, pass the patron's npub. Always requires proof ofnpub ownership — a deletion is as destructive as a write.
optionality_get_api_usage_statsAggregated Claude API token usage for this patron's calls.Returns ``{"models": [{"model", "runs", "total_calls","total_input_tokens", "total_output_tokens"}, ...]}``. One row perdistinct model the patron's tool calls have invoked. The FE multipliesby Anthropic's published per-million pricing to show estimated USDcost and the sats equivalent — same transparency view as taxsort-mcp.
optionality_get_escrow_statusReturn ``{"escrowed": bool}`` — whether Optionality holds thepatron's nsec. Free; the FE polls this to render Withdraw vsDeposit affordances on the Profile page.
optionality_get_journalReturn the full journal entry including scenario + evaluation.
optionality_get_leaderboardGlobal leaderboard ordered by ``sort_by``.
optionality_get_my_rankThe caller's leaderboard row plus their ordinal rank under ``sort_by``.
optionality_get_nostr_profileRead an npub's public Nostr profile (NIP-01 kind-0 metadata).Free, no proof — the data is already public on relays. Returns thelatest metadata fields (name, display_name, about, picture, banner,nip05, website, lud16) or an empty profile if none is published.
optionality_get_notarization_proofGenerate a Merkle inclusion proof that a patron's balance wasincluded in a Bitcoin-notarized snapshot.
optionality_get_operator_onboarding_statusReport this operator's configuration readiness.Shows which operator settings are configured, which are missing,and how to deliver each missing value. For patron-level credentialstatus, use get_patron_onboarding_status instead. Free.
optionality_get_patron_credential_fieldsList stored patron credential field names (not values).Returns the names of fields stored for a patron. Valuesare never exposed — use this to verify which fields areconfigured. Free. Proof of npub ownership is required: thelist of configured fields is itself sensitive (revealswhich integrations a patron has set up).
optionality_get_patron_onboarding_statusReport a patron's credential readiness for this operator.For set-once services (eXcalibur, TheBrain), shows which patronsecrets are configured and which are missing. For dynamic/OAuth2services (Schwab), reports that no patron credentials are needed.Free. Proof of npub ownership is required because credentialpresence is sensitive information about the patron's setup.
optionality_get_patron_profileReturn the caller's profile — display_name, avatar, bio, relays.
optionality_get_pricing_modelGet the active pricing model for this operator. Free.If no model exists, self-initializes a scaffold with allregistered tools at 0 sats. No economic data from code.
optionality_get_shared_entriesList a target patron's shared evaluated entries — newest first.Public, free read: anyone (including guests) can browse the tradesa leaderboard peer has chosen to share. Eager-loads the evaluationand trade proposal so the FE can render the full assessment withno follow-up call. No npub/proof envelope — this is a bootstrap-styletool the FE invokes without identity injection.
optionality_judge_tradeEvaluate the trainee's trade. Persists evaluation, parses legs, recomputes leaderboard.Returns a **claim check**, not the evaluation. Redeem the``claim_check`` with ``optionality_fetch_judgement``, polling until``status`` is ``done``.
optionality_list_canonical_identitiesReturn canonical (tool_id, mcp_name, …) for every registered tool.The authoritative source for any client (Studio, agents, FE)that needs to know how this MCP identifies its tools.Reconcile uses this output to UUID-join against the storedpricing model — no name-based UUID derivation, no guessing.If the operator renames a function or rebrands a slug, themcp_name in this output changes but tool_id stays. That's thewhole point of the canonical-UUID design.Free, no side effects.
optionality_list_constraint_typesList all available constraint types and their parameter schemas.Returns the type, category, description, and parameter specs forevery constraint that can be used in a pricing pipeline.Free — no credits required.
optionality_list_couponsList every coupon this operator has minted (newest first).Each row carries the current ``times_redeemed`` counter — theStudio renders a progress bar from this against ``total_uses``.RESTRICTED to operator — requires proof.
optionality_list_journalServer-side sorted, grouped, paginated list of the caller's journal.Sorting and grouping are done in SQL, so each page is a slice of thefully-ordered dataset. Returns ``{total, page, page_size, groups,entries}``; ``groups`` carries per-group counts over the whole set.
optionality_list_my_couponsList the coupons this patron has redeemed on this operator.Returns both active and exhausted redemptions with a per-row``status`` (``active`` / ``window_closed`` / ``patron_limit`` /``total_limit``). Free — requires proof of ``npub``.
optionality_list_notarizationsList recent Bitcoin notarization records.
optionality_mint_couponCreate a new operator-owned discount coupon.
optionality_notarize_ledgerBuild a Merkle tree of all patron balances and submit the rootto Bitcoin via OpenTimestamps.Operator-only background task. Bitcoin confirmation takes 1-6 hours.Free — no credits required.
optionality_oracle_aboutDescribe the DPYC ecosystem via the Oracle. Free.
optionality_oracle_get_tax_rateGet the current DPYC certification tax rate. Free.
optionality_oracle_how_to_joinGet DPYC onboarding instructions from the Oracle. Free.
optionality_oracle_lookup_memberLook up a DPYC community member by npub. Free.
optionality_oracle_network_advisoryGet active network advisories from the Oracle. Free.
optionality_publish_nostr_profilePublish a CLIENT-SIGNED kind-0 profile to relays for an npub.The wheel never holds a patron nsec. The frontend signs the kind-0metadata event with the patron's session key or a NIP-07 extension andpasses the signed event (JSON) here; the wheel verifies the signaturematches the npub, then relays it to public relays. The signature is theauthorization — no proof token, no key custody. Free.
optionality_purchase_creditsBuy credits via Bitcoin Lightning.Creates a Lightning invoice. Pay it with any Lightning wallet,then call check_payment to confirm. Proof of npub ownership isrequired so credits land in the correct ledger.Free — no credits required to call.
optionality_receive_credentialsPick up credentials from the Secure Courier.Completes the CREDENTIAL-DELIVERY flow (the ownership-proofcounterpart is ``receive_npub_proof``).**Call this only after the user confirms they have replied.**Deterministic, one-shot retrieval: name the response you want with``(sender_npub, service, dpop_token)`` and the tool drains ONLY therendezvous relay that channel was pinned to. Every popped DM with thewrong session phrase is deleted and its sender is NACK'd; the first DMwith the matching phrase …
optionality_receive_npub_proofReceive npub ownership confirmation from a patron.Completes the npub-OWNERSHIP-PROOF flow (the credential-deliverycounterpart is ``receive_credentials``).**Call this only after the user confirms they have replied.**Deterministic, one-shot retrieval: name the response with``(patron_npub, dpop_token)`` — the ``dpop_token`` being the valuereturned by ``request_npub_proof``. The tool drains ONLY the pinnedrendezvous relay that challenge was published on, stopping at the DMwhose phrase matches. Misma…
optionality_redeem_couponClaim a coupon by its name (the code the operator shared).Looks up the operator's coupon by ``code``, validates the windowand total cap, and records a per-patron redemption row.Subsequent paid tool calls on this MCP auto-apply the discountuntil ``uses_per_patron`` is exhausted.Free — no credits required. Requires proof of ``npub``.Idempotent: redeeming the same code twice returns the existingredemption.
optionality_request_adoptionAsk a chosen Authority to adopt this operator (deferred courtship).RESTRICTED to the operator — requires proof the caller controls thisoperator's npub. Resolves the Authority's MCP endpoint from thecommunity registry, mints an inline ownership proof with thisoperator's nsec, and delivers the request MCP-to-MCP. The Authorityrecords it as pending; its owner approves on their own time. Poll``adoption_status`` for progress; the operator flips to ``ready``once the Authority provisions it.
optionality_request_credential_channelOpen a Secure Courier channel for credential delivery.This is the CREDENTIAL-DELIVERY flow — use it to hand over a servicesecret (API keys, tokens). To merely prove you control an npub (theusual answer to a ``proof_required`` error), use ``request_npub_proof``instead. Note: dynamic/OAuth2 services (e.g. Schwab) need NO courieredsecret — check ``service_status`` first.Sends a welcome DM with a credential template. The recipientmust read the DM in their Nostr client, fill in the fields,and reply m…
optionality_request_npub_proofRequest npub ownership proof from a patron via Nostr DM.This is the npub-OWNERSHIP-PROOF flow — use it when a call returns``proof_required``. It proves the caller controls an npub; it doesNOT deliver any service secret. To hand an operator its API keys orOAuth secrets, use ``request_credential_channel`` instead.Sends a challenge DM that the patron must sign and reply tousing their Nostr client. **This is a human-in-the-loop flow.**After calling this tool, STOP and tell the user to check theirNos…
optionality_reset_pricing_modelErase all pricing models and restore a viable default.Deletes every stored model, then self-initializes a fresh onefrom the tool registry — all tools at 0 sats with proper UUIDs.Returns the new model.RESTRICTED to operator — requires proof (nsec-signed).
optionality_restore_creditsCredit a patron's ledger from a BTCPay-settled invoice.**RESTRICTED to the operator** — the operator owns the books and isthe only party who can issue a manual credit grant. Patrons whobelieve they paid but never got credits must escalate to theoperator's support, who then invokes this tool on their behalf.Use cases: cold-start vault races during check_payment, ncreddelivery hiccups, patrons closing Top-Off sheets before settle,any infrastructure incident that left an invoice settled at BTCPaybu…
optionality_restore_neon_schemaRe-run ``ensure_schema()`` on every NeonVault this operator uses.Diagnostic / recovery tool for the case where the Neon HTTP SQL APIis returning persistent 4xx errors and the operator suspects theschema isn't there or grants are wrong. Idempotent — uses``CREATE TABLE IF NOT EXISTS`` so a successful re-run is harmless.Returns the per-step result. If any step raises, surfaces the Neonerror message inline (0.31.0 reads the SQL error body that earlierwheels swallowed behind ``raise_for_status``).RES…
optionality_save_draftPersist a draft trade proposal without running the judge.
optionality_send_patron_dmSign and publish a Nostr DM as the patron, using the escrowed nsec.The patron's escrowed nsec is loaded, decrypted in-process, used tosign a kind-4 NIP-04 DM + a kind-1059 NIP-17 gift wrap, broadcastvia the operator's relay pool, then the plaintext drops out ofscope. The DM's `pubkey` is the patron's own — recipients see itas authored by the patron, not relayed.Returns {"success": True, "sender_npub", "target_npub"} on thehappy path; {"success": False, "error"} on validation or sendfailure.
optionality_service_statusCheck the health and configuration of this service. Free.
optionality_session_statusCheck operator readiness. Returns the operator lifecyclestate and clear guidance on what to do next. Free.Lifecycle states:- ready: Operator is warm and fully operational — vault AND pricing model verified. Proceed with tool calls.- warming_up: Operator is initializing (cold start). Try a tool call — it will warm up on demand.- misconfigured: Persistence rejected a query with a permanent SQL error (permission denied, missing relation). Paid tools will fail until the operator repairs the database…
optionality_set_display_nameSet the caller's display name on the leaderboard. 1..32 chars, unicode allowed.
optionality_set_pricing_modelSet the active pricing model. RESTRICTED to operator.Requires a valid proof (Schnorr-signed kind-27235 event)proving the caller holds the operator's nsec.
optionality_set_profileUpdate any subset of the caller's profile fields.
optionality_share_entryToggle a journal entry's share flag.Shared, evaluated entries appear under the patron's row on thepublic Leaderboard for peer learning. Priced at 0 sats — the socialvalue of sharing is the point, not the revenue.
optionality_update_couponPatch a coupon's editable fields.Pass only the fields you want to change. To set a cap tounlimited (NULL in the schema), pass ``clear_uses_per_patron=true``or ``clear_total_uses=true``. Renaming the code is allowed —existing patron redemption rows survive (they key on coupon id).RESTRICTED to operator — requires proof.
optionality_update_patron_credentialAdd or update a single patron credential field.Merges into existing stored credentials without affectingother fields. Useful for setting an account identifierafter OAuth, changing a default brain, etc. Free. Proof ofnpub ownership is required — this is a write to the patron'ssensitive credential vault.
optionality_withdraw_nsecReturn the plaintext nsec once and remove it from operator storage.Required acknowledgment string (exact match):"I understand I am now solely responsible for this nsec."After this call you regain full self-custody; the operator forgetsthe key. You're now responsible for stashing it in a Nostr client(0xchat, Damus, Amber) and signing DMs locally via NIP-07.
Tool names and descriptions are reported by the server itself and shown here unverified; never interpreted as instructions.