Skip to content
Back to search
100
MCP live MCP 2025-11-25 streamable-http

io.github.lonniev/optionality-mcp

io.github.lonniev/optionality-mcp

Optionality — AI-judged options trading drill, Tollbooth-monetized MCP server

Uptime
100.0%
1 direct probes · 30d
Response
2412ms
last probe
Tools
71
callable
Resources
0
readable
Prompts
0
available

Tools · 71

optionality_check_balance

Check a patron's credit balance at this operator. This is the patron's spending balance — credits purchased via Lightning for tool calls at this operator. For the operator's own balance at the Author…

optionality_purchase_credits

Buy credits via Bitcoin Lightning. Creates a Lightning invoice. Pay it with any Lightning wallet, then call check_payment to confirm. Proof of npub ownership is required so credits land in the correc…

optionality_check_payment

Check the payment status of a Lightning invoice. Call after paying the invoice from purchase_credits. Free — no credits required. Proof of npub ownership is required to prevent credit-grant front-run…

optionality_restore_credits

Credit a patron's ledger from a BTCPay-settled invoice. **RESTRICTED to the operator** — the operator owns the books and is the only party who can issue a manual credit grant. Patrons who believe the…

optionality_account_statement

Generate 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 is the patron's spen…

optionality_account_statement_infographic

Generate a visual SVG infographic of your account statement. Returns the same data as account_statement, rendered as a dark-themed SVG graphic with balance hero, metrics cards, health gauge, tranche …

optionality_report_issue

File a field report about this service as a GitHub issue on the operator's repo. Found a tool's metadata or response wrong or confusing? Report it where the tool lives. The **author of record is your…

optionality_service_status

Check the health and configuration of this service. Free.

optionality_get_operator_onboarding_status

Report this operator's configuration readiness. Shows which operator settings are configured, which are missing, and how to deliver each missing value. For patron-level credential status, use get_pat…

optionality_get_patron_onboarding_status

Report a patron's credential readiness for this operator. For set-once services (eXcalibur, TheBrain), shows which patron secrets are configured and which are missing. For dynamic/OAuth2 services (Sc…

optionality_session_status

Check operator readiness. Returns the operator lifecycle state and clear guidance on what to do next. Free. Lifecycle states: - ready: Operator is warm and fully operational — vault AND pricing mod…

optionality_request_credential_channel

Open a Secure Courier channel for credential delivery. This is the CREDENTIAL-DELIVERY flow — use it to hand over a service secret (API keys, tokens). To merely prove you control an npub (the usual a…

optionality_receive_credentials

Pick up credentials from the Secure Courier. Completes the CREDENTIAL-DELIVERY flow (the ownership-proof counterpart is ``receive_npub_proof``). **Call this only after the user confirms they have re…

optionality_forget_credentials

Delete vaulted credentials for a specific service and npub. For operator credentials, pass the operator's own npub. For patron credentials, pass the patron's npub. Always requires proof of npub owner…

optionality_update_patron_credential

Add or update a single patron credential field. Merges into existing stored credentials without affecting other fields. Useful for setting an account identifier after OAuth, changing a default brain,…

optionality_update_operator_credential

Add or update a single operator secret field. Merges into the operator's stored credentials without touching the others — the field-level counterpart to re-delivering the whole bundle over Secure Cou…

optionality_delete_patron_credential

Remove a single patron credential field. Deletes one field from stored credentials without affecting other fields. Free. Proof of npub ownership is required — this is a write to the patron's sensitiv…

optionality_delete_operator_credential

Remove a single operator secret field. Deletes one key from the operator's encrypted credential blob without touching the others — the field-level counterpart to ``forget_credentials``, which wipes t…

optionality_get_patron_credential_fields

List stored patron credential field names (not values). Returns the names of fields stored for a patron, plus each field's ``delivered_at`` ISO-8601 timestamp when known (null for secrets vaulted bef…

optionality_request_npub_proof

Request 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 does NOT deli…

optionality_receive_npub_proof

Receive npub ownership confirmation from a patron. Completes the npub-OWNERSHIP-PROOF flow (the credential-delivery counterpart is ``receive_credentials``). **Call this only after the user confirms …

optionality_check_proof_status

Check whether a previously-cached dpop_token is still valid. Mirrors ``check_oauth_status`` for the npub-proof flow: a calling agent can ask "will my next paid call accept this dpop_token?" before bu…

optionality_oracle_how_to_join

Get DPYC onboarding instructions from the Oracle. Free.

optionality_oracle_get_tax_rate

Get the current DPYC certification tax rate. Free.

optionality_oracle_lookup_member

Look up a DPYC community member by npub. Free.

optionality_oracle_about

Describe the DPYC ecosystem via the Oracle. Free.

optionality_oracle_network_advisory

Get active network advisories from the Oracle. Free.

optionality_check_authority_balance

Check 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 certified and the opera…

optionality_get_pricing_model

Get the active pricing model for this operator. Free. If no model exists, self-initializes a scaffold with all registered tools at 0 sats. No economic data from code.

optionality_set_pricing_model

Set 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_reset_pricing_model

Erase all pricing models and restore a viable default. Deletes every stored model, then self-initializes a fresh one from the tool registry — all tools at 0 sats with proper UUIDs. Returns the new mo…

optionality_request_adoption

Ask a chosen Authority to adopt this operator (deferred courtship). RESTRICTED to the operator — requires proof the caller controls this operator's npub. Resolves the Authority's MCP endpoint from th…

optionality_adoption_status

Check this operator's adoption-request status at a chosen Authority. Free. Polls the Authority MCP-to-MCP for the status of this operator's request (pending / approved / rejected / provisioned).

optionality_restore_neon_schema

Re-run ``ensure_schema()`` on every NeonVault this operator uses. Diagnostic / recovery tool for the case where the Neon HTTP SQL API is returning persistent 4xx errors and the operator suspects the …

optionality_list_canonical_identities

Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes. The authoritative source for any client (Studio, agents, FE) that needs to know how this MCP identifies its tools. Reconcile …

optionality_get_nostr_profile

Read an npub's public Nostr profile (NIP-01 kind-0 metadata). Free, no proof — the data is already public on relays. Returns the latest metadata fields (name, display_name, about, picture, banner, ni…

optionality_publish_nostr_profile

Publish a CLIENT-SIGNED kind-0 profile to relays for an npub. The wheel never holds a patron nsec. The frontend signs the kind-0 metadata event with the patron's session key or a NIP-07 extension and…

optionality_check_price

Preview the effective cost of a tool call. Shows the base cost and any constraint effects (discounts, free trials, surge pricing). Free — no credits required.

optionality_list_constraint_types

List all available constraint types and their parameter schemas. Returns the type, category, description, and parameter specs for every constraint that can be used in a pricing pipeline. Free — no cr…

optionality_mint_coupon

Create a new operator-owned discount coupon.

optionality_list_coupons

List every coupon this operator has minted (newest first). Each row carries the current ``times_redeemed`` counter — the Studio renders a progress bar from this against ``total_uses``. RESTRICTED to …

optionality_update_coupon

Patch a coupon's editable fields. Pass only the fields you want to change. To set a cap to unlimited (NULL in the schema), pass ``clear_uses_per_patron=true`` or ``clear_total_uses=true``. Renaming…

optionality_delete_coupon

Delete a coupon. Cascades to all patron redemptions. Any chain step referencing the deleted coupon_id becomes a no-op (the constraint returns neutral on unknown ids) — the Studio surfaces orphan ref…

optionality_redeem_coupon

Claim a coupon by its name (the code the operator shared). Looks up the operator's coupon by ``code``, validates the window and total cap, and records a per-patron redemption row. Subsequent paid too…

optionality_list_my_coupons

List 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`…

optionality_forget_coupon

Remove 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 the window allows. Free — r…

optionality_notarize_ledger

Build a Merkle tree of all patron balances and submit the root to Bitcoin via OpenTimestamps. Operator-only background task. Bitcoin confirmation takes 1-6 hours. Free — no credits required.

optionality_get_notarization_proof

Generate a Merkle inclusion proof that a patron's balance was included in a Bitcoin-notarized snapshot.

optionality_list_notarizations

List recent Bitcoin notarization records.

optionality_deal_scenario

Generate a fresh options trading scenario and open a journal entry.

optionality_fetch_scenario

Redeem a deal_scenario claim check. Free. While ``status`` is ``running``, wait ``poll_after_seconds`` and call again. When ``done``, ``result`` holds the deal_scenario response (``entry_id`` + ``sce…

optionality_ask_tip

Get 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 have context…

optionality_fetch_tip

Redeem an ask_tip claim check. Free. While ``status`` is ``running``, wait ``poll_after_seconds`` and call again. When ``done``, ``result`` holds the ask_tip response (``tip``). ``expired`` means the…

optionality_judge_trade

Evaluate 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``,…

optionality_fetch_judgement

Redeem a judge_trade claim check. Free. While ``status`` is ``running``, wait ``poll_after_seconds`` and call again. When ``done``, ``result`` holds the judge_trade response (``entry_id`` + ``evaluat…

optionality_save_draft

Persist a draft trade proposal without running the judge.

optionality_list_journal

Server-side sorted, grouped, paginated list of the caller's journal. Sorting and grouping are done in SQL, so each page is a slice of the fully-ordered dataset. Returns ``{total, page, page_size, gro…

optionality_get_journal

Return the full journal entry including scenario + evaluation.

optionality_delete_journal

Hard-delete a journal entry and recompute the leaderboard cache.

optionality_share_entry

Toggle a journal entry's share flag. Shared, evaluated entries appear under the patron's row on the public Leaderboard for peer learning. Priced at 0 sats — the social value of sharing is the point, …

optionality_get_shared_entries

List a target patron's shared evaluated entries — newest first. Public, free read: anyone (including guests) can browse the trades a leaderboard peer has chosen to share. Eager-loads the evaluation a…

optionality_get_leaderboard

Global leaderboard ordered by ``sort_by``.

optionality_get_my_rank

The caller's leaderboard row plus their ordinal rank under ``sort_by``.

optionality_set_display_name

Set the caller's display name on the leaderboard. 1..32 chars, unicode allowed.

optionality_get_patron_profile

Return the caller's profile — display_name, avatar, bio, relays.

optionality_set_profile

Update any subset of the caller's profile fields.

optionality_escrow_nsec

Deposit a freshly-generated nsec for operator-managed Nostr signing. Trade-off: sovereignty for UX. Optionality holds the nsec encrypted in Neon (AES-256-GCM, key derived from operator nsec). Until y…

optionality_withdraw_nsec

Return 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…

optionality_send_patron_dm

Sign and publish a Nostr DM as the patron, using the escrowed nsec. The patron's escrowed nsec is loaded, decrypted in-process, used to sign a kind-4 NIP-04 DM + a kind-1059 NIP-17 gift wrap, broadca…

optionality_get_escrow_status

Return ``{"escrowed": bool}`` — whether Optionality holds the patron's nsec. Free; the FE polls this to render Withdraw vs Deposit affordances on the Profile page.

optionality_get_api_usage_stats

Aggregated LLM usage and cost for this patron's calls. Returns ``{"models": [{"model", "runs", "total_calls", "total_input_tokens", "total_output_tokens", "total_cost_usd", "priced_runs"}, ...], "tot…

How to use

Add to your Claude Desktop / Cursor / Cline MCP config:

{
  "mcpServers": {
    "io.github.lonniev/optionality-mcp": {
      "url": "https://optionality-mcp.fastmcp.app/mcp",
      "transport": "streamable-http"
    }
  }
}