Trickl MCP
An official MCP server provided by Trickl that enables AI coding assistants to integrate with the Trickl platform. It provides developers with step-by-step setup plans, full documentation, and sandbox tools to execute test purchases end-to-end, allowing agents to verify their integration work automatically.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.trickl.app/mcp/devWhat you can do with it
- Connect AI coding assistants like Claude or Cursor to Trickl
- Run test purchases end-to-end using sandbox tools
- Access full documentation and setup plans for integration
- Verify integration work automatically via agent checks
Source and maintenance
Protocol and capabilities
- Server
- trickl-dev 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 10 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
get_started — Get a Trickl setup plan
Start here. Without an integration, explains the ways to add Trickl (own business such as a SaaS, or a multi-seller platform) and how to choose. With one, returns a step-by-step plan for the coding agent: keys, exact API calls, webhook handling, what to store, and how to prove it works with this server's sandbox tools.
{
"type": "object",
"properties": {
"integration": {
"enum": [
"embed_widget",
"own_embedded_checkout",
"own_hosted_checkout",
"platform_embedded_checkout",
"platform_hosted_checkout"
],
"type": "string",
"description": "own_*: the user's own business gets paid (SaaS, app, course, membership); own_embedded_checkout puts checkout inside their app. platform_*: many sellers on the user's platform get paid. embedded = in-page iframe, hosted = redirect to Trickl. embed_widget: paste-in pricing widget, no backend. Omit to see the choices."
}
},
"additionalProperties": false
}{
"readOnlyHint": true
}search_docs — Search the Trickl docs
Keyword search over the Trickl partner docs (platform API, webhooks, embed widget). Returns section ids with snippets; read one with read_doc. Leave query empty for the full table of contents.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "e.g. \"deadline goal\", \"verify signature\", \"REDIRECT_URL_NOT_ALLOWED\""
}
},
"additionalProperties": false
}{
"readOnlyHint": true
}read_doc — Read a docs section
Returns one section of the Trickl docs in full (Markdown), by id from search_docs.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Section id, e.g. \"platform-api/sandbox-test-mode\""
}
},
"additionalProperties": false
}{
"readOnlyHint": true
}check_api_key — Check the API key
Confirms this connector's test key works and shows its platform, scopes and mode. Run it before the other sandbox tools; if it fails, the message says what the user needs to fix.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true
}register_test_provider — Register a sandbox seller
Registers a seller (provider) under the test key via POST /providers/register and returns providerLinkCode (needed to create goals) and webhookSecret (to verify webhooks). Idempotent on externalCreatorId. webhookUrl must be a public https URL that reaches the user's receiver, e.g. an ngrok or cloudflared tunnel to localhost. Sandbox webhooks are real signed HTTP requests.
{
"type": "object",
"required": [
"webhookUrl"
],
"properties": {
"email": {
"type": "string",
"description": "Must not belong to an existing Trickl provider. Default: a per-seller @example.com address"
},
"webhookUrl": {
"type": "string",
"description": "https URL of the user's webhook receiver"
},
"websiteUrl": {
"type": "string",
"description": "Seller site; its host is allowed for redirects and embedded checkout"
},
"businessName": {
"type": "string",
"description": "Default: Sandbox Seller"
},
"externalCreatorId": {
"type": "string",
"description": "The seller's id in the user's app. Default: sandbox-seller-1"
},
"stripeConnectAccountId": {
"type": "string",
"description": "Leave empty in sandbox: a placeholder is used, since sandbox goals never reach Stripe"
}
},
"additionalProperties": false
}{
"readOnlyHint": false
}create_test_goal — Create a sandbox goal
Creates a goal with POST /goals/create using the test key. No money moves. Returns goalId, paymentUrl (hosted checkout) and clientSecret (embedded checkout). Amounts are integer cents, USD.
{
"type": "object",
"required": [
"providerLinkCode",
"targetAmount",
"description"
],
"properties": {
"deadline": {
"type": "string",
"description": "ISO 8601 due date, 24h to 2 years out (one-time goals only)"
},
"imageUrl": {
"type": "string"
},
"metadata": {
"type": "object",
"description": "Echoed verbatim in every webhook, e.g. { orderId }",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"cancelUrl": {
"type": "string"
},
"frequency": {
"enum": [
"WEEKLY",
"BIWEEKLY",
"MONTHLY",
"QUARTERLY",
"YEARLY"
],
"type": "string",
"description": "Makes it a recurring subscription; omit for a one-time purchase"
},
"callbackUrl": {
"type": "string",
"description": "Where the buyer returns after confirming; localhost is allowed in test mode"
},
"description": {
"type": "string",
"description": "What the buyer is saving for, max 500 characters"
},
"targetAmount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 50,
"description": "Price in cents, e.g. 2999 = $29.99"
},
"depositAmount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Upfront card charge in cents. One-time: ≥ 50 and < targetAmount. Subscription: = targetAmount or omit"
},
"providerLinkCode": {
"type": "string",
"description": "From register_test_provider"
},
"depositRefundable": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false
}get_goal — Get a sandbox goal
Returns a sandbox goal's current state via GET /goals/:goalId: status, amounts saved, buyer, deadline.
{
"type": "object",
"required": [
"goalId"
],
"properties": {
"goalId": {
"type": "string",
"description": "goalId from create_test_goal"
}
},
"additionalProperties": false
}{
"readOnlyHint": true
}simulate_goal_event — Simulate a goal event
Moves a sandbox goal through its lifecycle instantly; each event sends the real signed webhook to the seller's webhookUrl, exactly as live would. confirm: the buyer signs up and links a bank (goal.deposit_paid if there is a deposit; for subscriptions also goal.subscription_created, plus goal.cycle_paid at once if the deposit paid the first period in full). collect: one round-up chunk, $3 by default (goal.round_up_collected); fails with ALREADY_FUNDED when the current period is already paid. complete: one-time goals finish (goal.completed); subscriptions pay the current period and start the next (goal.cycle_paid; the goal stays SAVING). payment_failed: a failed chunk (goal.payment_failed), with reversal=true for the clawback path. expire: a deadline goal fell short (goal.deadline_charge_failed). Confirm first.
{
"type": "object",
"required": [
"goalId",
"event"
],
"properties": {
"event": {
"enum": [
"confirm",
"collect",
"complete",
"payment_failed",
"expire"
],
"type": "string"
},
"amount": {
"type": "integer",
"maximum": 9007199254740991,
"description": "collect / payment_failed only: cents, default 300",
"exclusiveMinimum": 0
},
"goalId": {
"type": "string",
"description": "goalId from create_test_goal"
},
"reason": {
"enum": [
"ach_return",
"dispute"
],
"type": "string",
"description": "payment_failed with reversal only"
},
"reversal": {
"type": "boolean",
"description": "payment_failed only: true = a chunk already counted is reversed (clawback); false = a collection failed"
}
},
"additionalProperties": false
}{
"readOnlyHint": false
}cancel_test_goal — Cancel a sandbox goal
Cancels a sandbox goal via POST /goals/:goalId/cancel, as the user's server would when a customer cancels: collected chunks (and a refundable deposit) are refunded less Trickl's fee, in the ledger only, and goal.cancelled is sent.
{
"type": "object",
"required": [
"goalId"
],
"properties": {
"goalId": {
"type": "string",
"description": "goalId from create_test_goal"
}
},
"additionalProperties": false
}{
"readOnlyHint": false
}list_webhook_deliveries — List webhook deliveries
Shows every webhook Trickl sent for a sandbox goal, newest first, with its payload and the receiver's result. DELIVERED = got a 2xx. FAILED = rejected, retry scheduled at nextRetryAt. EXHAUSTED = gave up. PENDING / DELIVERING = in flight; check again in a few seconds. Use lastStatusCode and lastError to debug the receiver.
{
"type": "object",
"required": [
"goalId"
],
"properties": {
"goalId": {
"type": "string",
"description": "goalId from create_test_goal"
}
},
"additionalProperties": false
}{
"readOnlyHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 905 ms
- 95th percentile latency
- 905 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 905 ms · metadata changed · 10 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http trickl-mcp https://api.trickl.app/mcp/devCodex
codex mcp add trickl-mcp --url https://api.trickl.app/mcp/devCursor
{
"mcpServers": {
"trickl-mcp": {
"url": "https://api.trickl.app/mcp/dev"
}
}
}Cline
{
"mcpServers": {
"trickl-mcp": {
"type": "streamableHttp",
"url": "https://api.trickl.app/mcp/dev",
"disabled": false
}
}
}VS Code
{
"servers": {
"trickl-mcp": {
"type": "http",
"url": "https://api.trickl.app/mcp/dev"
}
}
}Gemini CLI
gemini mcp add --transport http trickl-mcp https://api.trickl.app/mcp/devClaude Desktop
{
"mcpServers": {
"trickl-mcp": {
"url": "https://api.trickl.app/mcp/dev"
}
}
}Windsurf
{
"mcpServers": {
"trickl-mcp": {
"serverUrl": "https://api.trickl.app/mcp/dev"
}
}
}Let your agent find its tools
Find servers like Trickl MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other payments servers
Do you run Trickl MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.