io.github.lonniev/excalibur-mcp
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
* 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.
excalibur_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.Args: npub: The patron's Nostr public key (npub1...). dpop_token: A kind-27235 Nostr event signed by npub for this tool. days: Number o…
Adoption
Not applicable — this server has no package distribution, so registry adoption signals (downloads, maintainers) don't exist for it.
Connect
https://excalibur-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.
excalibur_account_statement_infographicGenerate 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.Args: npub: The Nostr public key (npub1...) whose statement to render. dpop_token: A kind-27235 Nostr event signed by npub for this tool. days: Number of days of daily usage histo…
excalibur_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).
excalibur_begin_oauthStart the OAuth2 authorization flow.Returns an authorization URL. Open it in a browser to log inand authorize. Then call ``check_oauth_status`` with thesame npub to complete. Free. Proof of npub ownership isrequired so an observer cannot DOS your account byinitiating OAuth flows in your name.Do NOT call this pre-emptively. If a session may still be valid,attempt the live tool call first and only begin OAuth when itfails with ``upstream_auth_refresh_needed``. A 'pending'``check_oauth_status`` is …
excalibur_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.
excalibur_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.Args: npub: The Nostr public key (npub1...) whose balance to check. dpop_token: A kind-27235 Nostr eve…
excalibur_check_oauth_statusCheck whether the OAuth2 authorization flow has completed.Call after opening the authorization URL from ``begin_oauth``and completing the login in your browser. Free. Proof of npubownership is required: OAuth status exposes which upstreamservices a patron has connected.A 'pending' result here does NOT prove an existing session haslapsed — it only reports this authorization attempt. To find outwhether a session still works, attempt the live call; fall backto ``begin_oauth`` only on an explicit``u…
excalibur_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.Args: invoice_id: The invoice ID returned by purchase_credits. npub: The Nostr public key (npub1...) that purchased the invoice. dpop_token: A kind-27235 Nostr event signed by npub for this tool.
excalibur_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.Args: tool_id: Either the tool's UUID (from the pricing model) or a bare capability string (e.g. ``"deal_scenario"``). FE callers usually have the capability name; this resolves both so the FE doesn't need to derive UUIDs locally. tool_kwargs: Optional JSON object with tool call parameters for ad valorem / categorical-multiplier pricing previ…
excalibur_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.Args: patron_npub: Required. The patron's npub (npub1...). dpop_token: Required. The dpop_token phrase returned by ``request_npub_proof`` / ``receive_npub_proof``.
excalibur_create_postStore a new post (draft or scheduled). Returns its ``post_id``.Args: doc: The editable Doc (blocks + flags + voice + bans + schedule). text_cache: Composed text (blocks joined) for scheduler + list excerpts. publish_at: ISO-8601 first/next publish time; required when status='scheduled'. recurrence: ``{"freq": "daily|weekly|monthly", "interval": n}`` or null. cease_at: ISO-8601 stop time for recurrence; null = open-ended. status: ``draft`` or ``scheduled``. client_req_id: Idempotency key — re-sen…
excalibur_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.
excalibur_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.Args: npub: The patron's Nostr public key (npub1...). dpop_token: A kind-27235 Nostr event signed by npub for this tool. field: The credential field name to remove.
excalibur_delete_postDelete a stored post. Default is a soft delete (``status='archived'``);pass ``hard=True`` to remove the row permanently.
excalibur_delete_snippetDelete one of your saved snippets by id. Free and owner-scoped.
excalibur_fetch_dynamic_blockRedeem a ``resolve_dynamic_block`` claim check (free, proof-gated).Poll this with the ``claim_check`` from ``resolve_dynamic_block`` until``status == "done"`` (the resolved fragment is ``result.text``). While thejob runs it returns ``{"status": "running", "poll_after_seconds": N}``; onfailure ``{"status": "error", ...}`` (the start fare is refunded); an unknownor aged-out claim returns ``{"status": "expired", ...}``. Owner-scoped — onlythe npub that started the job can redeem it. Also acts as th…
excalibur_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``.
excalibur_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.Args: service: The credential service to forget. npub: The Nostr public key (npub1...) whose credentials to forget. dpop_token: A kind-27235 Nostr event signed by npub for this tool.Free.
excalibur_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.
excalibur_get_notarization_proofGenerate a Merkle inclusion proof that a patron's balance wasincluded in a Bitcoin-notarized snapshot.Args: notarization_id: The notarization record ID. npub: The patron's Nostr public key (npub1...).
excalibur_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.
excalibur_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).Args: npub: The patron's Nostr public key (npub1...). dpop_token: A kind-27235 Nostr event signed by npub for this tool.
excalibur_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.Args: patron_npub: The patron's Nostr public key (npub1...). dpop_token: A kind-27235 Nostr event signed by patron_npub for this too…
excalibur_get_postRead one stored post by id (owner-scoped).
excalibur_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.
excalibur_get_scheduler_logRead recent scheduler-tick outcomes.Each ``process_scheduled_posts`` run — fired by the Cloudflare cron Worker ora manual trigger — records its summary. This surfaces them so the FE debuglog can show what the Worker is doing: the per-tick heartbeat (proof it ran)and per-post outcomes (posted / skip+error reasons like``insufficient_balance`` or ``oauth_token_expired``).Owner-scoped: the operator sees every tick in full; any other proven patronsees the global heartbeat (``processed`` count + ``run…
excalibur_get_snippetRead one of your saved snippets by id (full row incl. ``doc`` blockdocument). Free and owner-scoped. Returns ``{"success": true, "snippet": …}``or ``snippet_not_found``.
excalibur_get_voiceRead your saved writing Voice — a profile blurb plus a list of "bannedconstruction" chips (``{text, on}``) the editor passes to``refine_post_region``. Owner-scoped; priced by the operator's pricing model(use ``check_price``). When you have not saved a Voice yet this returns anempty one (``{"voice": {"profile": "", "bans": []}}``) so the editor can seedits own defaults, not an error.
excalibur_get_x_profileFetch the connected X account's handle and name for this patron (free).Uses the patron's vaulted X OAuth token to call X's ``/users/me``. Returns``{connected: true, username, name, profile_image_url}`` when connected, orthe OAuth situation (``connected`` absent) when X isn't linked yet. Used toshow the real @handle on the editor's tweet-card preview.
excalibur_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.
excalibur_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.
excalibur_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.
excalibur_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``.
excalibur_list_notarizationsList recent Bitcoin notarization records.Args: limit: Maximum records to return (default 20). status: Optional filter (e.g., 'submitted', 'confirmed').
excalibur_list_postsList your stored posts, server-side sorted, filtered, and offset-paginated.Optional ``status`` filter — a single status or a comma-separated set(e.g. ``draft,scheduled``), matched as set membership. ``sort_col`` is one of``created|updated|status|scheduled`` (default ``created``); ``sort_dir`` is``asc|desc``. ``search`` is a case-insensitive regular expression matchedagainst the post text. ``date_from``/``date_to`` (``YYYY-MM-DD``, end-inclusive)bound the ``date_field`` column, one of ``created|u…
excalibur_list_snippetsList your saved post snippets, server-side sorted, filtered, andoffset-paginated. ``sort_col`` is one of ``favorite|created|updated|name``(default ``favorite``); ``sort_dir`` is ``asc|desc``. ``search`` is acase-insensitive regular expression matched against the snippet name or body.``date_from``/``date_to`` (``YYYY-MM-DD``, end-inclusive) bound the``date_field`` column, one of ``created|updated`` (default ``created``).``page`` is 0-indexed; ``page_size`` is 1..200. Free, owner-scoped. Returns``…
excalibur_mint_couponCreate a new operator-owned discount coupon.Args: name: The catchy code patrons type to redeem (operator-scoped uniqueness). discount_percent: Percentage off the base price (0-100). valid_from: ISO-8601 datetime when the coupon becomes active. valid_until: ISO-8601 datetime when the coupon expires. uses_per_patron: How many tool calls one patron can claim the discount on (default 1; pass null/None for unlimited within the window). total_uses: Aggregate cap across all patrons (default None = unli…
excalibur_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.
excalibur_oracle_aboutDescribe the DPYC ecosystem via the Oracle. Free.
excalibur_oracle_get_tax_rateGet the current DPYC certification tax rate. Free.
excalibur_oracle_how_to_joinGet DPYC onboarding instructions from the Oracle. Free.
excalibur_oracle_lookup_memberLook up a DPYC community member by npub. Free.
excalibur_oracle_network_advisoryGet active network advisories from the Oracle. Free.
excalibur_post_tweetPost a text tweet with markdown formatting converted to Unicode rich text.Accepts standard markdown inline formatting and converts it to UnicodeMathematical Alphanumeric Symbols that render as styled text on X: **bold** -> bold *italic* -> italic ***bold italic*** -> bold italic `monospace` -> monospaceArgs: text: Tweet content with optional markdown formatting. npub: Your DPYC patron Nostr public key (npub1...) for credit attribution.
excalibur_post_tweet_imagePost a tweet with a hero banner image to X/Twitter.Provide either an image_url (fetched and attached) or banner_svg(rendered to PNG and attached). Text supports the same markdownformatting as post_tweet.Args: text: Tweet content with optional markdown formatting. image_url: URL of an image to attach to the tweet. banner_svg: Self-contained SVG markup string, converted to PNG. npub: Your DPYC patron Nostr public key (npub1...) for credit attribution.
excalibur_process_scheduled_postsPublish every due scheduled post (operator-only).Selects ``scheduled`` posts whose ``publish_at`` has arrived, posts each onbehalf of its owner (billing the owner for ``post_tweet``), stamps``last_sent_at``, and reschedules from ``recurrence`` or retires the postpast ``cease_at``. Requires the operator's npub proof; the trigger itself isfree. Returns ``{processed, posted, skipped, errors}``.
excalibur_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.Args: npub: The patron's Nostr public key the event must be signed by. signed_event: A JSON-encoded, client-si…
excalibur_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.Args: npub: The Nostr public key (npub1...) the credits will fund. dpop_token: A kind-27235 Nostr event signed by npub for this tool. amount_sats: Satoshis to purchase (default 1000).
excalibur_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 …
excalibur_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…
excalibur_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.
excalibur_refine_post_regionRefine a flagged region of a post with Claude — server-side.The operator's Anthropic key stays in the vault and never leaves theserver. Send the flagged ``region``, the surrounding ``full_text``, anoptional ``instruction`` (what to change), and the editor's ``voice``profile + ``bans`` (JSON array or comma list of banned constructions).Returns ``{"success": true, "suggestions": [...3 strings...]}``.Paid: the AI cost is metered as a tollbooth fare. The fare is refunded ifno Anthropic key is config…
excalibur_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.Args: autho…
excalibur_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…
excalibur_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…
excalibur_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).
excalibur_resolve_dynamic_blockStart resolving a dynamic post block with Claude — returns a CLAIM CHECK.A dynamic block's ``prompt`` is run by Claude (with web search + web fetch forlive data) and woven into the surrounding post ``context`` in the author's``voice``. The author's instruction governs length — there is no character cap(X supports long-form posts). The operator's Anthropic key stays in the vaultand never leaves the server.Because that work (paginated fetches + generation) can outlast a clienttimeout, this returns…
excalibur_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…
excalibur_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…
excalibur_save_snippetSave a reusable post snippet (opening/footer/CTA). Omit ``snippet_id`` tocreate a new one; pass it to update an existing snippet in place (name/text/favorite/doc). On update only the fields you pass change — omit ``favorite``(leave it null) to keep it as-is, so a doc-only patch (e.g. toggling a snippetdynamic) doesn't reset it. ``doc`` is the same block/flag document a postcarries, so the editor is identical for both. Free and owner-scoped. Returns``{"success": true, "snippet": …}``.
excalibur_save_voiceSave your writing Voice (replaces the previous one — it is a per-npubsingleton). ``profile`` is free text. ``bans`` is a list of ``{text, on}``objects: ``text`` is the construction to avoid, ``on`` whether it is an activeconstraint. Blank/duplicate entries are dropped server-side. Owner-scoped;priced by the operator's pricing model (use ``check_price``). Returns``{"success": true, "voice": {...}}``.
excalibur_service_statusCheck the health and configuration of this service. Free.
excalibur_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…
excalibur_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.
excalibur_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.
excalibur_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.Args: npub: The patron's Nostr public key (npub1...). dpop_token: A kind-27235 Nostr event signed by npub for this tool. field: The credential field name to set. value: The value to store.
excalibur_update_postPatch a stored post. ``patch`` may set ``doc, publish_at, recurrence,cease_at, status`` (omit a field to leave it unchanged). ``text_cache`` iswritten when supplied (alongside a doc change). ``client_req_id`` dedupesdebounced autosave retries — a repeat is a no-op with no second charge.
Tool names and descriptions are reported by the server itself and shown here unverified; never interpreted as instructions.