MCP tools reference

Systeme.io MCP tools

13 tools for Systeme.io on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own Systeme.io account
Integration page
Systeme.io
Systeme.io Endpoints
Endpoint Access Description
systeme-io_list_transactions read Sales from the Transactions page, with customer, offer, amount and transaction type.
systeme-io_get_transaction read One sale with customer, offer, amount, payment processor charge ID and refund status.
systeme-io_export_transactions read Starts a CSV export of transactions; Systeme.io emails the download link to your account address.
systeme-io_list_funnel_steps read Your sales funnels with their steps: name, type, URL path and page ID.
systeme-io_get_page_content read Text elements of a funnel page (headlines, paragraphs, buttons) with an ID per element.
systeme-io_list_blog_posts read Posts of a blog with title, URL path, categories and whether each is active.
systeme-io_update_page_text write Change the text of chosen elements on a funnel page and save it; the rest of the page stays as it is.
systeme-io_duplicate_funnel_step write Copy a step below the original, with "(copy)" in its name; set a new URL path for the copy.
systeme-io_remove_funnel_step write Permanently delete a step and its page from a funnel.
systeme-io_refund_transaction write Refund a sale in full through its payment gateway; an invoice with a negative amount is created.
systeme-io_send_invoice write Email the invoice of a transaction to its customer.
systeme-io_create_blog_post write New blog post from Markdown, saved inactive so nobody sees it until you activate it.
systeme-io_activate_blog_post write Show a post on your blog.

MCP tool systeme-io_list_transactions

Lists transactions with the same filters as the Transactions page: customer email, offer, transaction type, date range, customer country and customer type (company or individual). Results are newest first. Pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_transactions
NameTypeDescription
customer_email string Only this customer.
offer string Only sales of this offer (name or ID).
type string Transaction type, as in the Transactions filter.
from date Start of the date range.
to date End of the date range.
customer_country string Two-letter country code.
customer_type enum company or individual.
limit integer 1 to 100. Default: 50.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_list_transactions",
    "arguments": {
      "from": "2026-09-01",
      "to": "2026-09-30",
      "customer_type": "company",
      "limit": 100
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "transactions": [
      {
        "transaction_id": "tr_20931",
        "customer_email": "hans@example.com",
        "offer": "Starter course",
        "amount": 97,
        "currency": "EUR",
        "type": "sale",
        "customer_country": "DE",
        "customer_type": "individual",
        "occurred_at": "2026-10-08T09:12:00Z"
      },
      {
        "transaction_id": "tr_20944",
        "customer_email": "office@example.de",
        "offer": "Pro membership",
        "amount": 49,
        "currency": "EUR",
        "type": "sale",
        "customer_country": "DE",
        "customer_type": "company",
        "occurred_at": "2026-10-09T15:40:00Z"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool systeme-io_get_transaction

Returns one transaction as listed on the Transactions page, with the payment processor charge ID and whether it was refunded. Use it before refund_transaction to check the amount and the customer.

Parameters

Parameters: get_transaction
NameTypeDescription
transaction_id required string Transaction ID from list_transactions.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_get_transaction",
    "arguments": {
      "transaction_id": "transaction_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "transaction_id": "tr_20931",
    "customer_email": "hans@example.com",
    "offer": "Starter course",
    "amount": 97,
    "currency": "EUR",
    "type": "sale",
    "processor_charge_id": "ch_3Q9xExample",
    "refunded": false,
    "occurred_at": "2026-10-08T09:12:00Z"
  },
  "isError": false
}

MCP tool systeme-io_export_transactions

Starts the same CSV export as the Transactions page, for transactions in an optional date range. Systeme.io emails the download link to the address of your account, so the call returns only a confirmation. The export reaches only you.

Parameters

Parameters: export_transactions
NameTypeDescription
from date Start of the date range.
to date End of the date range.
delimiter string Column separator for the CSV file, as offered in the export popup.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_export_transactions",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "status": "started",
    "delivery": "email to your account address"
  },
  "isError": false
}

MCP tool systeme-io_list_funnel_steps

Lists funnels with their steps in funnel order. Each step has the ID that the page tools take as step_id. Leave funnel_id out to list every funnel.

Parameters

Parameters: list_funnel_steps
NameTypeDescription
funnel_id string Only this funnel. Default: all funnels.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_list_funnel_steps",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "funnels": [
      {
        "funnel_id": "f_1204",
        "name": "Webinar funnel",
        "steps": [
          {
            "step_id": "8841207",
            "name": "Webinar sales page",
            "type": "sales page",
            "path": "webinar"
          },
          {
            "step_id": "8841219",
            "name": "Thank you",
            "type": "thank you page",
            "path": "webinar-thanks"
          }
        ]
      }
    ]
  },
  "isError": false
}

MCP tool systeme-io_get_page_content

Returns the text elements of one funnel page in page order, each with an element ID. Pass those IDs to update_page_text. Images and layout settings are not included.

Parameters

Parameters: get_page_content
NameTypeDescription
step_id required string Funnel step ID from list_funnel_steps.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_get_page_content",
    "arguments": {
      "step_id": "step_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "step_id": "8841207",
    "elements": [
      {
        "element_id": "headline-1a2b",
        "kind": "headline",
        "text": "Free webinar: launch your first course"
      },
      {
        "element_id": "button-9f3c",
        "kind": "button",
        "text": "Register now"
      }
    ]
  },
  "isError": false
}

MCP tool systeme-io_list_blog_posts

Lists the posts of one blog, with the ID that activate_blog_post takes as post_id. The blog_id of your blog is also returned, for create_blog_post. Active posts are visible on the blog; inactive ones are not.

Parameters

Parameters: list_blog_posts
NameTypeDescription
blog_id string Blog to read. Default: your first blog.
limit integer 1 to 100. Default: 50.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_list_blog_posts",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "blog_id": "blog_3302",
    "posts": [
      {
        "post_id": "bp_5498",
        "title": "Five launch mistakes",
        "path": "five-launch-mistakes",
        "categories": [
          "Marketing"
        ],
        "active": true
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

Update page text

write Confirm

MCP tool systeme-io_update_page_text

Changes the text of the elements you name and saves the page. Other elements, images and settings are not touched. On a live funnel visitors see the change at once. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_page_text
NameTypeDescription
step_id required string Funnel step ID from list_funnel_steps.
changes required object Map of element_id from get_page_content to new text.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_update_page_text",
    "arguments": {
      "step_id": "8841207",
      "changes": {
        "headline-1a2b": "Live training: Thursday 7 PM",
        "button-9f3c": "Save my seat"
      }
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "step_id": "8841207",
    "updated_elements": 2,
    "saved_at": "2026-10-11T14:05:12+02:00"
  },
  "isError": false
}

MCP tool systeme-io_duplicate_funnel_step

Duplicates a funnel page and places the copy below the original, named with "(copy)". Pass path to give the copy its own URL. The copy reaches no one until you link to it, and remove_funnel_step undoes it, so this call runs without asking.

Parameters

Parameters: duplicate_funnel_step
NameTypeDescription
step_id required string Funnel step ID from list_funnel_steps.
path string URL path for the copy.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_duplicate_funnel_step",
    "arguments": {
      "step_id": "step_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "step_id": "8841260",
    "name": "Webinar sales page (copy)",
    "path": "webinar-b",
    "copied_from": "8841207"
  },
  "isError": false
}

Remove funnel step

write Confirm

MCP tool systeme-io_remove_funnel_step

Deletes one step and its page from a funnel. This cannot be undone, and visitors lose the page. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: remove_funnel_step
NameTypeDescription
step_id required string Funnel step ID from list_funnel_steps.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_remove_funnel_step",
    "arguments": {
      "step_id": "step_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "step_id": "8841219",
    "status": "removed"
  },
  "isError": false
}

Refund transaction

write Confirm

MCP tool systeme-io_refund_transaction

Refunds the whole sale; Systeme.io does not support partial refunds. It depends on your payment gateway: the balance must cover the refund. Afterwards the transaction shows an invoice with a negative amount, which send_invoice can email to the customer. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: refund_transaction
NameTypeDescription
transaction_id required string Transaction ID from list_transactions.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_refund_transaction",
    "arguments": {
      "transaction_id": "tr_20931"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "transaction_id": "tr_20931",
    "status": "refunded",
    "refunded_amount": 97,
    "currency": "EUR"
  },
  "isError": false
}

Send invoice

write Confirm

MCP tool systeme-io_send_invoice

Sends the invoice of one transaction to the customer, as the Send invoice to customer action does. After a refund it sends the invoice with the negative amount. Invoices go out one at a time. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_invoice
NameTypeDescription
transaction_id required string Transaction ID from list_transactions.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_send_invoice",
    "arguments": {
      "transaction_id": "transaction_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "transaction_id": "tr_20931",
    "status": "sent",
    "sent_to": "hans@example.com"
  },
  "isError": false
}

MCP tool systeme-io_create_blog_post

Creates a post with a title, short description, URL path, main image and categories, and fills it with your Markdown. Categories must already exist in the blog. The post is saved inactive, so it reaches no one until activate_blog_post runs; this call runs without asking.

Parameters

Parameters: create_blog_post
NameTypeDescription
blog_id required string Blog ID from list_blog_posts.
title required string Post title.
body_markdown required string Post content. Images by URL.
description string Short description shown on listing pages.
path string URL path. Default: made from the title.
categories string[] Names of categories that already exist in the blog.
image_url string Main image.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_create_blog_post",
    "arguments": {
      "blog_id": "blog_3302",
      "title": "Five email mistakes before a launch",
      "body_markdown": "Most launches lose sales in the emails, not the page...",
      "description": "Five fixes to make before your next launch email goes out.",
      "categories": [
        "Marketing"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "post_id": "bp_5521",
    "blog_id": "blog_3302",
    "title": "How we cut onboarding time in half",
    "categories": [
      "Marketing"
    ],
    "active": false
  },
  "isError": false
}

Activate blog post

write Confirm

MCP tool systeme-io_activate_blog_post

Activates one post so visitors can read it on your blog. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: activate_blog_post
NameTypeDescription
post_id required string Blog post ID from list_blog_posts.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "systeme-io_activate_blog_post",
    "arguments": {
      "post_id": "post_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "post_id": "bp_5521",
    "active": true
  },
  "isError": false
}