Skip to main content

MCP tools and resources reference

This page lists every tool, resource, and prompt exposed by the Keyban MCP server.

The authoritative source is the live OpenAPI document at https://api.prod.keyban.io/openapi.json — the bridge auto-registers every operation that carries an x-mcp-type annotation. This page mirrors that surface for offline reading. To configure a client, see Connect your AI assistant to the Keyban MCP server.

How to read this page

  • TypeTool for actions (POST / PATCH / DELETE), Resource for read-only data (GET). Resources whose path contains a parameter (e.g. {provider}) are exposed as MCP resource templates.
  • Method + Route — the underlying REST endpoint that the bridge proxies to. The bridge itself listens on POST /mcp (port 3334 locally, https://mcp.prod.keyban.io/mcp in production).
  • Authorg-user for endpoints that require an authenticated organization caller (API key or session); public for endpoints that accept anonymous access. The MCP bridge forwards Authorization, X-Api-Key, Cookie, and Mcp-Session-Id headers transparently — it never authenticates the caller itself.

For request and response schemas, follow the route to the Backend OpenAPI reference.

Where to start

The catalogue below is exhaustive. If you only want a sense of what the bridge can already do, here are the most useful entry points — each one is a real capability already wired up:

  • list_applications + lookup_application_id — navigate your Keyban applications by name. The second tool uses MCP elicitation when several apps match.
  • create_dpp_passport + publish_dpp_passports — create a Digital Product Passport from natural language and anchor it on Starknet, end to end.
  • mint_loyalty_points — mint on-chain loyalty points for a given account in one tool call.
  • get_quota_usage — read the org's monthly consumption so an assistant can self-monitor.
  • create_billing_portal_session — generate a Chargebee self-service URL on demand.

Applications

NameTypeMethod + RouteAuthDescription
list_applicationsResourceGET /v1/applicationsorg-userList the applications owned by the current organization.
get_applicationResource templateGET /v1/applications/{appId}publicFetch a specific application by ID.
create_applicationToolPOST /v1/applicationsorg-userCreate a new application under the current organization.
update_applicationToolPATCH /v1/applications/{appId}org-userUpdate mutable application settings.
delete_applicationToolDELETE /v1/applications/{appId}org-userRemove an application and clean up associated resources.

Agent wallets

NameTypeMethod + RouteAuthDescription
list_agent_walletsResourceGET /v1/agent-walletsorg-userList agent wallets for the current organization.
get_agent_walletResource templateGET /v1/agent-wallets/{id}org-userFetch a specific agent wallet by ID.
create_agent_walletToolPOST /v1/agent-walletsorg-userCreate a new agent wallet for an application.
update_agent_walletToolPATCH /v1/agent-wallets/{id}org-userUpdate the label of an agent wallet.
delete_agent_walletToolDELETE /v1/agent-wallets/{id}org-userDelete an agent wallet.

Organization

NameTypeMethod + RouteAuthDescription
get_organizationResource templateGET /v1/organizations/{id}org-userReturn the organization identified by ID.
update_organizationToolPATCH /v1/organizations/{id}org-userUpdate mutable fields and settings of the active organization.

Accounts

NameTypeMethod + RouteAuthDescription
list_application_accountsResourceGET /v1/accountsorg-userList accounts for the organization's selected application.
get_account_detailsResource templateGET /v1/accounts/{id}org-userFetch a specific account (blockchain address, loyalty config).
update_account_detailsToolPATCH /v1/accounts/{id}org-userUpdate mutable account properties (primarily loyalty settings).
delete_accountToolDELETE /v1/accounts/{id}org-userDelete an account and clean up its signer keys and cached shares.
list_application_account_assignmentsResourceGET /v1/account-assignmentsorg-userList pending account assignments for the selected application.
get_account_assignmentResource templateGET /v1/account-assignments/{id}org-userFetch a specific account assignment.
create_account_assignmentToolPOST /v1/account-assignmentsorg-userRegister a pending loyalty benefit for an identity.
update_account_assignmentToolPATCH /v1/account-assignments/{id}org-userAdjust a pending account assignment (points, reward tier).
delete_account_assignmentToolDELETE /v1/account-assignments/{id}org-userRemove a pending account assignment.

Loyalty

NameTypeMethod + RouteAuthDescription
mint_loyalty_pointsToolPOST /v1/loyalty/account/{id}/mintorg-userMint on-chain loyalty points and update the optimistic balance.
list_loyalty_ordersResourceGET /v1/loyalty/ordersorg-userRetrieve order history for a loyalty account wallet.
list_loyalty_reward_tiersResourceGET /v1/loyalty/reward-tiersorg-userList loyalty reward tiers configured for the application.
get_loyalty_reward_tierResource templateGET /v1/loyalty/reward-tiers/{id}org-userFetch details of a specific loyalty reward tier.
create_loyalty_reward_tierToolPOST /v1/loyalty/reward-tiersorg-userCreate a loyalty reward tier (unique visit threshold).
update_loyalty_reward_tierToolPATCH /v1/loyalty/reward-tiers/{id}org-userUpdate reward tier properties.
delete_loyalty_reward_tierToolDELETE /v1/loyalty/reward-tiers/{id}org-userDelete a loyalty reward tier.

Loyalty / Zelty integration

NameTypeMethod + RouteAuthDescription
get_zelty_settingsResourceGET /v1/loyalty/zelty/settingsorg-userRetrieve the Zelty integration settings for the organization.
update_zelty_settingsToolPATCH /v1/loyalty/zelty/settingsorg-userCreate or update Zelty integration settings and refresh webhooks.

Digital Product Passport (DPP)

NameTypeMethod + RouteAuthDescription
list_dpp_passportsResourceGET /v1/dpp/passportsorg-userPaginated list of DPP passports for the organization.
get_dpp_passportResource templateGET /v1/dpp/passports/{id}publicRetrieve a single DPP passport by ID.
get_dpp_passport_magic_tokenResource templateGET /v1/dpp/passports/{id}/magic-tokenorg-userGenerate a magic token for claiming a DPP passport.
create_dpp_passportToolPOST /v1/dpp/passportsorg-userCreate a new DPP passport.
update_dpp_passportToolPATCH /v1/dpp/passports/{id}org-userUpdate an existing DPP passport.
publish_dpp_passportsToolPOST /v1/dpp/passports/publishorg-userPublish DPP passports matching the filter.
delete_dpp_passportToolDELETE /v1/dpp/passports/{id}org-userDelete a DPP passport by ID.

DPP / Shopify integration

NameTypeMethod + RouteAuthDescription
list_shopify_shopsResourceGET /v1/dpp/shopify/shopsorg-userList Shopify shops linked to the organization.
get_shopify_shopResource templateGET /v1/dpp/shopify/shops/{id}org-userRetrieve a specific Shopify shop by UUID.
create_shopify_shopToolPOST /v1/dpp/shopify/shopsorg-userRegister a Shopify shop for an application.
delete_shopify_shopToolDELETE /v1/dpp/shopify/shops/{id}org-userRemove a Shopify shop integration.

Points of Sale

NameTypeMethod + RouteAuthDescription
list_points_of_saleResourceGET /v1/points-of-saleorg-userPaginated list of points of sale for the organization.
get_point_of_saleResource templateGET /v1/points-of-sale/{id}org-userFetch details for a specific point of sale.
create_point_of_saleToolPOST /v1/points-of-saleorg-userCreate a new point of sale.
update_point_of_saleToolPATCH /v1/points-of-sale/{id}org-userUpdate mutable properties of a point of sale.
delete_point_of_saleToolDELETE /v1/points-of-sale/{id}org-userDelete a point of sale.

Quota

NameTypeMethod + RouteAuthDescription
get_quota_usageResourceGET /v1/quotas/usageorg-userRetrieve monthly quota usage data for the current organization.

Imports

NameTypeMethod + RouteAuthDescription
list_import_jobsResourceGET /v1/importspublicList all import jobs for the organization.
get_import_jobResource templateGET /v1/imports/{jobId}publicGet details of a specific import job by ID.
stream_import_job_progressResource templateGET /v1/imports/{jobId}/progress (SSE)publicSubscribe to real-time progress updates over Server-Sent Events.
get_import_job_reportResource templateGET /v1/imports/{jobId}/reportpublicGet the detailed report for an import job.
start_bulk_importToolPOST /v1/importspublicUpload a JSON array of entities for bulk import.

Events

NameTypeMethod + RouteAuthDescription
list_eventsResourceGET /v1/eventsorg-userPaginated audit and quota events scoped to the caller organization.

Metrics

NameTypeMethod + RouteAuthDescription
get_loyalty_metricsResourceGET /v1/admin/metrics/loyaltyorg-userLoyalty program metrics (points minted, accounts, visits, tier distribution).
get_dpp_metricsResourceGET /v1/admin/metrics/dpporg-userDPP metrics (products, minted passports, retrieval rates).

Billing (public)

NameTypeMethod + RouteAuthDescription
list_billing_plansResourceGET /v1/billing/planspublicList the active subscription plans available for onboarding.
create_billing_portal_sessionToolPOST /v1/billing/portal-sessionorg-userCreate a Chargebee self-service portal session.

Invest

NameTypeMethod + RouteAuthDescription
list_invest_fundsResourceGET /v1/invest/fundsorg-userList investment funds for the current organization.
get_invest_fundResource templateGET /v1/invest/funds/{id}org-userFetch a specific investment fund by ID.
create_invest_fundToolPOST /v1/invest/fundsorg-userCreate a new investment fund.
update_invest_fundToolPATCH /v1/invest/funds/{id}org-userUpdate fund properties (name, NAV, status).
delete_invest_fundToolDELETE /v1/invest/funds/{id}org-userDelete an investment fund by ID.
list_invest_funds_investorResourceGET /v1/invest/investor/fundsorg-userList active investment funds for the current application.
list_invest_holdingsResource templateGET /v1/invest/funds/{fundId}/holdingsorg-userList all holdings for a specific fund.
get_invest_holdingResource templateGET /v1/invest/funds/{fundId}/holdings/{id}org-userFetch a specific holding record by ID.
distribute_sharesToolPOST /v1/invest/funds/{fundId}/holdings/distributeorg-userDistribute shares from the fund to an investor.
redeem_sharesToolPOST /v1/invest/funds/{fundId}/holdings/redeemorg-userBuy back shares from an investor.
list_invest_identitiesResourceGET /v1/invest/identitiesorg-userList invest identities for the current organization.
get_invest_identityResource templateGET /v1/invest/identities/{id}org-userFetch a specific invest identity by ID.
get_my_invest_identityResourceGET /v1/invest/identities/mepublicRetrieve the invest identity associated with the current SDK account.
create_invest_identityToolPOST /v1/invest/identitiespublicCreate a new invest identity for the current SDK account.
update_invest_identityToolPATCH /v1/invest/identities/{id}org-userUpdate an invest identity.
list_invest_lockupsResource templateGET /v1/invest/funds/{fundId}/lockupsorg-userList custom lockup periods for a specific fund.
get_invest_lockupResource templateGET /v1/invest/funds/{fundId}/lockups/{id}org-userFetch a specific lockup record by ID.
create_invest_lockupToolPOST /v1/invest/funds/{fundId}/lockupsorg-userCreate a custom lockup period for an investor.
update_invest_lockupToolPATCH /v1/invest/funds/{fundId}/lockups/{id}org-userUpdate the end date of a custom lockup period.
delete_invest_lockupToolDELETE /v1/invest/funds/{fundId}/lockups/{id}org-userDelete a custom lockup period.
list_invest_navResource templateGET /v1/invest/funds/{fundId}/navorg-userList NAV records for a specific fund.
get_invest_navResource templateGET /v1/invest/funds/{fundId}/nav/{id}org-userFetch a specific NAV record by ID.
create_invest_navToolPOST /v1/invest/funds/{fundId}/navorg-userCreate a new NAV record for the fund.
delete_invest_navToolDELETE /v1/invest/funds/{fundId}/nav/{id}org-userDelete a NAV record by ID.
list_invest_offersResourceGET /v1/invest/offersorg-userList secondary market offers.
get_invest_offerResource templateGET /v1/invest/offers/{id}org-userFetch a specific secondary market offer by ID.
create_invest_offerToolPOST /v1/invest/offersorg-userCreate a buy or sell offer on the secondary market.
update_invest_offerToolPATCH /v1/invest/offers/{id}org-userUpdate the share count or unit price of an open offer.
delete_invest_offerToolDELETE /v1/invest/offers/{id}org-userSoft-delete a secondary market offer.

Bridge-only features

These capabilities are implemented inside the MCP bridge itself, not as REST proxies.

NameKindSourceDescription
lookup_application_idToolbackend/mcp/src/lib/registrar/application-lookup-service.tsResolve an application's UUID from its human-readable name. Supports exact and partial matching, with MCP elicitation when several applications match.
prepare_demo_environmentPromptbackend/mcp/src/lib/registrar/prompt-registry.tsRunbook prompt that walks the assistant through seeding a sandbox with sample applications, loyalty tiers, and DPP data.

Argument completion

The bridge auto-completes applicationId and appId arguments by querying /v1/applications (max 20 suggestions, ranked by ID exact-match first, then name substring). Source: backend/mcp/src/lib/registrar/server-introspection.ts.

Capabilities advertised to clients

The bridge advertises these MCP capabilities at handshake time (source: backend/mcp/src/index.ts):

CapabilitySupportedNotes
toolsYesListed above.
resourcesYessubscribe: false, listChanged: false — no live updates.
promptsYeslistChanged: false.
completionsYesApplication ID lookup only.
elicitationYesUsed by lookup_application_id for ambiguous matches.
loggingNoThe bridge does not stream server-side logs to the client.

HTTP endpoints recap

EndpointPurpose
POST https://mcp.prod.keyban.io/mcpProduction MCP entry point (StreamableHTTP transport).
GET https://api.prod.keyban.io/openapi.jsonAuthoritative OpenAPI document the bridge consumes at boot.

Out of scope

The bridge intentionally does not expose two families of endpoints — for two distinct reasons.

Super-admin endpoints

Endpoints decorated with @SuperAdminController() / @SuperAdminEndpoint() (backend/nestjs/src/auth/super-admin.decorator.ts) are excluded from the public OpenAPI document and therefore from the MCP surface. The exclusion is enforced by backend/nestjs/src/auth/super-admin-contract.spec.ts.

Out-of-scope super-admin domains include LLM usage analytics and pricing administration, Chargebee customer creation, plan synchronisation, overage synchronisation, pending-onboarding management, and platform-wide metrics. For platform administration, use the admin dashboard rather than the MCP bridge.

LLM endpoints (/v1/llm/*)

Chat completion and provider catalogue endpoints (POST /v1/llm/chat/completions, GET /v1/llm/providers, GET /v1/llm/providers/{provider}/models) are deliberately not exposed via MCP. An MCP client is already an LLM — proxying a chat completion through the bridge would be redundant and would double-bill the same call (once on the client side, once on the Keyban LLM quota).

LLM remains a Keyban-internal capability consumed by other controllers (e.g. content generation flows). The exclusion is enforced by backend/nestjs/src/auth/mcp-exposure-contract.spec.ts, which fails the build if any controller under backend/nestjs/src/llm/controllers/ regrows an x-mcp-* annotation.