Issue, deduct, refund and sell credits: checkout, subscriptions, saved cards, escrow and wallets.
Connect Remote server
claude mcp add --transport http cred https://eutdgemlrpvnxfkkpvlu.supabase.co/functions/v1/cred-mcp --header "x-api-key: <X_API_KEY>" --header "x-app-origin: <X_APP_ORIGIN>" --header "x-project-id: <X_PROJECT_ID>"
{
"mcpServers": {
"cred": {
"url": "https://eutdgemlrpvnxfkkpvlu.supabase.co/functions/v1/cred-mcp",
"headers": {
"x-api-key": "<X_API_KEY>",
"x-app-origin": "<X_APP_ORIGIN>",
"x-project-id": "<X_PROJECT_ID>"
}
}
}
}
{
"servers": {
"cred": {
"type": "http",
"url": "https://eutdgemlrpvnxfkkpvlu.supabase.co/functions/v1/cred-mcp",
"headers": {
"x-api-key": "<X_API_KEY>",
"x-app-origin": "<X_APP_ORIGIN>",
"x-project-id": "<X_PROJECT_ID>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://eutdgemlrpvnxfkkpvlu.supabase.co/functions/v1/cred-mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 49 found in our last check
list_credit_typesList the project's active credit types: id, name, symbol, description, exchange_rate (USD per credit), is_redeemable, and on-chain fields (is_on_chain, blockchain, contract_address, chain_id, token_decimals, mint_on_issue, deployment_type). Use the id as credit_type_id in other…
get_balanceGet a user's credit balance(s). Identify the user by email (checked first) or user_id (your external user ID). An unknown user returns an empty balances array, not an error. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED c…
issue_creditsIssue (add) credits to a user; creates the user if they don't exist (email-first lookup). Pass idempotency_key on anything an agent might retry: a replay returns the original transaction with idempotent_replay: true and issues nothing more (no second webhook or mint). Without a…
deduct_creditsDeduct (spend) credits from an existing user, identified by user_email (checked first) or user_id. Fails with 400 INSUFFICIENT_CREDITS (nothing deducted) or 404 USER_NOT_FOUND. Pass idempotency_key on anything an agent might retry: a replay returns the original transaction with…
get_transactionsList ledger transactions, newest first (types include issue, deduct, refund). Filter by user (email or user_id) and credit_type_id; paginate with limit/offset. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing).…
refund_creditsRefund or reverse credits. MOVES MONEY for purchases: with purchase_id or stripe_payment_intent_id it refunds the Stripe charge (prorated when partial; refund_payment: false skips the money) and claws the purchased credits back. With transaction_id (or reference_id = latest matc…
create_userCreate an end user, or return/update the existing one (email-first lookup, then external_id, so no duplicates). Returns created: true for a new user. Signup attribution is first-touch and optional: signup_url (else the connection's x-app-origin header) is recorded on a new user,…
get_usersLook up one end user by email or external_id (404 USER_NOT_FOUND if absent), or list users newest first with total, filterable by signup_host / signup_credit_type_id. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs no…
update_userUpdate an existing end user (identify by user_email, checked first, or external_id). Only fields you pass change (none at all is 400 NO_FIELDS_TO_UPDATE); metadata replaces the whole object, except referral_code (kept unless you send it) and stripe_account_id (Cred-only: the sto…
delete_userDelete an end user, identified by user_email (checked first) or external_id. Irreversible: balances, ledger and auto top-up rules go with them. A user with swap history is kept as a financial record — 409 USER_HAS_HISTORY (swap_transactions count). 404 USER_NOT_FOUND. Costs 1 CR…
bulk_create_usersCreate or update up to 1000 users in one call (one CRD for the batch). Returns counts of created/updated and per-row errors; a bad row does not fail the batch. A row's own signup_url/signup_host overrides the request-level signup_url. Costs 1 CRD (platform credit) per call, char…
get_signup_analyticsSignup attribution breakdown per signup_host (which of your apps users came from): users, purchases and revenue per host over the last `days` (default 30; 0 = all time). Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs…
list_pricing_tiersList active pricing tiers (credit packs), cheapest first; price is a dollar string. credit_type_ids lists the credit types a tier can be bought for; [] means every active credit type. The credit_type_id filter returns every tier purchasable for that type: tiers scoped to it plus…
create_pricing_tierCreate a pricing tier. credits must be a positive integer; price (USD) must be 0 or at least 0.50, and at most $1.00 per credit. credit_type_ids lists the credit types a tier can be bought for; [] means every active credit type. Omit credit_type_ids for all types; malformed or f…
update_pricing_tierUpdate a pricing tier by id; only fields you pass change (same price rules as create). Pass credit_type_ids to re-scope it ([] = all credit types), is_active: false to stop selling it without deleting. Costs 1 CRD (platform credit) per call, charged even when the call is then re…
delete_pricing_tierPermanently delete a pricing tier by id (404 if not in this project). While auto top-up rules buy the tier it refuses with 409 TIER_IN_USE and the rule count; pass force: true (after the user confirms) to delete those rules and the tier together. Deactivating a tier (update_pric…
create_checkout_sessionCreate a Stripe Checkout link for an end user to buy credits; returns checkout_url and session_id. Nothing is charged until the buyer pays on that page; credits are issued when payment completes. Price either a pricing tier (pricing_tier_id, optionally × quantity) or a custom am…
list_subscriptionsList recurring credit subscriptions (newest 100): status, credits_per_period, quantity, price, interval, current_period_end, cancel_at_period_end. status: "active" matches active, trialing and past_due. Costs 1 CRD (platform credit) per call, charged even when the call is then r…
cancel_subscriptionCancel a subscription. By default it cancels at period end (credits already issued stay; no further renewals). at_period_end: false cancels immediately with no refund. With user_id/email instead of subscription_id, every live subscription of that customer is canceled. Costs 1 CR…
update_subscription_quantityChange a live subscription's quantity (seats/packs, 1–10000). CHANGES FUTURE BILLING: from the next renewal the customer pays unit price × quantity and receives unit credits × quantity; no proration now. With user_id/email the customer must have exactly one live subscription (el…
create_subscription_portal_linkCreate a short-lived Stripe customer portal URL for a subscriber to update their card (flow payment_method_update, default) or see invoices and card (overview). Mint it when the customer asks; don't store it. With user_id/email, uses their most recent subscription. Costs 1 CRD (…
get_saved_payment_methodGet the card saved for a user (brand, last4, expiry), or payment_method: null if none. Cards are saved by a one-time create_checkout_session with save_payment_method: true. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED co…
delete_saved_payment_methodRemove a user's saved card (detached in Stripe). charge_saved_card and auto top-up stop working for them until a new card is saved. Returns deleted: false if there was none. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED c…
charge_saved_cardMOVES MONEY: charge a user's saved card off-session for one pack of a one-time pricing tier and credit it. idempotency_key is required; a retry with the same key never charges twice and returns the first outcome (replayed: true). Outcomes: 200 status succeeded (credits, new_bala…
get_auto_topupGet a user's auto top-up rule for credit_type_id (auto_topup, or null), or all their rules (auto_topups) when credit_type_id is omitted, plus their saved card. Rules show threshold, enabled, max_per_day, charges_last_24h, last_status/last_error and disabled_reason (set when cred…
save_auto_topupCreate or replace the auto top-up rule for (user, credit type): whenever a deduct leaves the balance below threshold, cred buys one pack of pricing_tier_id on the user's saved card (at most max_per_day charges per 24h). If enabled and the balance is already below threshold, a ch…
delete_auto_topupDelete a user's auto top-up rule for credit_type_id, or ALL their rules when credit_type_id is omitted. Returns the number deleted. To pause instead, save_auto_topup with enabled: false. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 R…
create_escrow_holdReserve credits: deducts amount from an existing user and parks it in a hold (status held), returning hold_id. Finish with capture_escrow_hold or release_escrow_hold; a hold past expires_at can be released back at any time. Pass idempotency_key on anything an agent might retry:…
release_escrow_holdRelease a held hold in full back to its holder (status released). 404 HOLD_NOT_FOUND, 409 HOLD_NOT_ACTIVE if it was already released, captured or expired — so a retry after success is rejected, not repeated. Costs 1 CRD (platform credit) per call, charged even when the call is t…
capture_escrow_holdSettle a hold (status captured). amount captures part (default: all); the uncaptured remainder returns to the holder. With to_user_id/to_user_email the captured credits go to that user (created if new) — marketplace/P2P settlement; otherwise they stay deducted (settled to the pl…
list_escrow_holdsList escrow holds, newest first, with total. Filter by status, holder or reference_id. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing). Error results include request_id; quote it to support.
list_swap_pairsList credit swap pairs (exchange_rate, fee_percent, min/max_swap_amount, is_bidirectional). Optionally filter by source or target credit type. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing). Error results in…
execute_swapSwap a user's credits along a swap pair: deducts source_amount of the source type and credits the converted amount (after fee) in the target type. Errors: 400 INSUFFICIENT_CREDITS, 404 USER_NOT_FOUND, 400 outside min/max. On a bidirectional pair, direction "reverse" spends the t…
get_referral_settingsGet a referral program's settings (is_active, referrer/referee credits, credit type). A project can run one program per credit type: pass credit_type_id for that credit type's program (settings null when it has none); omit it for the project's default program. Costs 1 CRD (platf…
save_referral_settingsCreate or update a referral program: credits awarded to the referrer and to the referred user. With credit_type_id this writes THAT credit type's program (creating it if needed); without it, the project's default program. Only fields you pass change. Costs 1 CRD (platform credit…
generate_referral_codeGet a user's referral code, generating one if they have none (creates the user if needed). Safe to repeat. Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing). Error results include request_id; quote it to suppor…
apply_referralApply a referral code for a referred user, issuing the configured credits to the referee and the referrer. credit_type_id picks the credit type's program (default: the project's default program). defer_referrer_credits pays only the referee now; the referral stays pending until…
complete_referralPay the referrer of a referral applied with defer_referrer_credits. user_id is the REFERRED user. Safe to repeat: the payout is keyed per referral; an already completed referral answers already_completed true. 404 NO_REFERRAL. Costs 1 CRD (platform credit) per call, charged even…
list_referralsList the project's referrals, filterable by status, referrer or credit type (program). Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing). Error results include request_id; quote it to support.
redeem_creditsMOVES MONEY: cash out a user's credits as a Stripe transfer to a connected account. Deducts `amount` credits and pays amount × the credit type's exchange_rate (USD per credit; the rate cannot be overridden). The credit type must be redeemable (else 400 NOT_REDEEMABLE). destinati…
onboard_payout_accountCreate (or reuse) a Stripe Express connected account for an end user and return an onboarding URL for them to complete. The resulting stripe_account_id (acct_…) is stored on the user; pass it as destination to redeem_credits. return_url and refresh_url must be https on a Cred ho…
x402_supportedDiscover how to pay Cred with x402 (HTTP 402 stablecoin payments): the accepted scheme, network, asset and prices. Pass project_id to also get that project's credit price list. Requires no credentials and costs no CRD.
buy_credits_x402MOVES MONEY: buy a project's credits by paying in stablecoin over x402. Call once without x402_payment to receive the payment requirements (returned as an error result containing the x402 PaymentRequired object), sign them with your wallet, then call again passing the base64 pay…
list_x402_receiptsList this project's x402 stablecoin payments, newest first: kind, status, payer, amount_usd, transaction_hash, credits_granted, error. Authenticated (API key). Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing).…
set_user_walletAttach an EVM address to an end user so on-chain credits mint to them. No signature required — the address is recorded as asserted by the operator, not proved (changing it clears any earlier verification). Only later deposits match it: a deposit already recorded as unattributed…
get_user_walletRead the EVM address on file for an end user, and whether the holder proved it by signature (verified, verified_at). Costs 1 CRD (platform credit) per call, charged even when the call is then rejected (a 429 RATE_LIMITED costs nothing). Error results include request_id; quote it…
request_wallet_challengeStep 1 of proving an end user controls an address: get a single-use message for them to sign. The message names the operator's project and must be shown to the user unmodified. Expires in ten minutes. Then call verify_wallet_signature with the nonce and the signature their walle…
verify_wallet_signatureStep 2: submit the personal_sign signature over the challenge message. On success the address is stored and marked verified. A challenge is single-use and a rejected signature consumes it too — a retry needs a fresh challenge. Costs 1 CRD (platform credit) per call, charged even…
list_depositsList on-chain token deposits observed for the project, newest first (read-only; the chain ingest writes them). status: credited (credits granted), unattributed (sent from an address no user had; held, not credited, and attaching the address with set_user_wallet only matches late…
Headers
| Name | Description |
|---|---|
x-api-keyRequired, secret | Your cred.diy API key |
x-app-originOptional | Optional URL of your app, recorded as signup attribution |
x-project-idOptional | Optional; the API key already identifies the project |
Details
| Endpoint | https://eutdgemlrpvnxfkkpvlu.supabase.co/functions/v1/cred-mcp (Streamable HTTP) |
| First published | 6 Nov 2026 |
| Last updated | 6 Nov 2026 |
| Registry name | io.github.aw3-technology/cred |
More finance and crypto servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
