# MCP server: tool reference

> All 47 leadli.me MCP tools: descriptions, required and optional parameters, authentication and a call example.

Updated November 11, 2026

Work with channels, bots, attribution and landing pages through an AI assistant. Find each tool's exact name, purpose and input parameter types below.

> Start with `leadli_get_context`. A key belongs to one organization. Effective access depends on the key's permissions, its creator's role and the plan; `tools/list` returns the current contract.

## Connection and authentication

Transport: Streamable HTTP. Header: `Authorization: Bearer YOUR_LEADLI_ME_ACCESS_KEY`. Create a key in Organization settings → Access keys and store it in your MCP client's configuration. It does not belong in landing-page HTML.

**MCP server URL:** `https://api.leadli.me/api/v1/mcp`

- [Connect Codex and Claude Code](https://leadli.me/en/guides/connect-mcp)
- [server.json](https://leadli.me/server.json)

## Example prompts

These examples read data. If there are no channels or events, the assistant should say so rather than invent results.

1. **Check the connection** — Prompt: "Show my leadli.me channels and explain my available permissions. Do not change anything." Tools: `leadli_get_context`, `leadli_list_channels`. Expected: the key organization, permissions and accessible channels.
2. **Read attribution analytics** — Prompt: "For the selected channel, show clicks, confirmed joins and delivered conversions for the last 7 days in UTC." Tools: `leadli_get_context`, `leadli_list_channels`, `leadli_get_analytics`. Expected: aggregates for the agreed interval, explaining click-time cohorts.
3. **Check setup readiness** — Prompt: "Check whether the selected channel is ready to activate and list missing steps. Do not change anything." Tools: `leadli_get_context`, `leadli_list_channels`, `leadli_get_setup_status`. Expected: current ready checks and unfinished configuration.

## Using this reference

Expand a tool to see every input parameter and its type. Required fields are marked. Names and types were checked against the current MCP server on November 11, 2026.

- `targetId` is the internal channel or bot ID from `leadli_list_channels`; `leadId` is an observed subscriber ID. Do not substitute a Telegram username for an ID.
- `from` and `to` are UTC timestamps. Join lists include `from` and exclude `to`. Page pagination starts at 1; `page`/`limit` default to 1/20, with a maximum `limit` of 100.
- Before configuration or moderation, confirm the channel, person and consequence with the user. Never show integration tokens or `botKey` in answers. Secrets passed to an assistant for setup enter its provider's context.

## Context, channels and analytics

### leadli_get_context

Get this key’s organization, effective permissions, available tools and plan access.

No parameters. Pass `{}`.

### leadli_list_channels

List a bounded page of channels accessible to the key creator.

- `limit` (optional): `number`
- `page` (optional): `number`

### leadli_get_channel

Get channel details and safe Telegram setup metadata.

- `targetId` (required): `string`

### leadli_get_analytics

Get attribution aggregates. Clicks, confirmed joins and delivered conversions use click-time cohorts; membershipFlow uses observed event times. Hour/day/week ranges are capped at 31/90/365 days, with breakdowns available for 7/31/90 days.

- `from` (required): `string`
- `granularity` (optional): `"hour" | "day" | "week"`
- `targetId` (required): `string`
- `to` (required): `string`

### leadli_list_joins

List observed join/rejoin events in the half-open UTC interval [from,to), up to 365 days. Filter before pagination. Missing ad attribution is unknown, not proof of organic traffic. Membership is the current observed state. landingId is the exact analytics landingPageUrl key.

- `adId` (optional): `string`
- `adSetId` (optional): `string`
- `campaignId` (optional): `string`
- `cursor` (optional): `string`
- `from` (required): `string`
- `landingId` (optional): `string`
- `limit` (optional): `number`
- `source` (optional): `"all" | "ad" | "invite_link" | "none"`
- `targetId` (required): `string`
- `to` (required): `string`

### leadli_list_subscribers

List observed subscribers only; this is not a complete Telegram member roster. Membership is the current observed state.

- `limit` (optional): `number`
- `page` (optional): `number`
- `status` (optional): `"active" | "former" | "all"`
- `targetId` (required): `string`

## Reports and moderation

### leadli_get_report_status

Get own report and the anonymous multiple-reports signal for up to 100 observed subscriber IDs.

- `leadIds` (required): `Array<string>`
- `targetId` (required): `string`

### leadli_save_report

Save or replace the organization report for one observed subscriber. Reports do not ban subscribers.

- `category` (required): `"spam" | "fake" | "scam"`
- `description` (optional): `string`
- `leadId` (required): `string`
- `targetId` (required): `string`

### leadli_withdraw_report

Withdraw the organization report for one observed subscriber.

- `leadId` (required): `string`
- `targetId` (required): `string`

### leadli_list_organization_reports

List a bounded page of reports belonging to the current organization.

- `limit` (optional): `number`
- `page` (optional): `number`
- `status` (optional): `"active" | "withdrawn"`

### leadli_withdraw_organization_report

Withdraw one report belonging to the current organization.

- `reportId` (required): `string`

### leadli_ban_subscriber

Ban one observed person from the current Telegram channel; bots cannot be banned.

- `leadId` (required): `string`
- `targetId` (required): `string`

### leadli_unban_subscriber

Remove the ban for one observed person in the current Telegram channel. This does not automatically rejoin the person.

- `leadId` (required): `string`
- `targetId` (required): `string`

## Telegram channels and bots

### leadli_create_channel

Create a draft Telegram channel. Plan capacity is checked on activation. For a Telegram bot use leadli_create_bot.

- `chatReference` (required): `string`

### leadli_create_bot

Create a draft Telegram bot from its @username or t.me link. Then connect an ad platform and a landing, install the code from leadli_get_bot_code, and activate it with leadli_activate_channel.

- `botReference` (required): `string`

### leadli_get_bot_code

Read what the bot's own server needs: forward private /start and my_chat_member updates unchanged to updatesPath, report successful payments to eventsPath, then have the user open verifyStartUrl. Both paths are relative to this MCP server's origin. botKey is private: keep it in the bot's server configuration and never show it in answers. Telegram bots only; channels answer BOT_ONLY_OPERATION.

- `targetId` (required): `string`

### leadli_connect_bot_token

Optional: store the BotFather token of the same bot to show its exact name and photo. The token is a secret input and is never returned; the bot's webhook and updates are not touched. Telegram bots only; channels answer BOT_ONLY_OPERATION.

- `targetId` (required): `string`
- `token` (required): `string`

### leadli_update_channel

Update the channel name.

- `name` (required): `string`
- `targetId` (required): `string`

### leadli_connect_telegram_bot

Connect and verify a Telegram bot. The token is a secret input and is never returned. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `targetId` (required): `string`
- `token` (required): `string`

### leadli_set_telegram_destination

Set the Telegram channel reference and reset its verification. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `chatReference` (required): `string`
- `targetId` (required): `string`

### leadli_verify_telegram_destination

Verify the bot permissions for the configured Telegram channel. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `targetId` (required): `string`

### leadli_get_setup_status

Read current channel readiness checks. `ready` is the answer: metaVerified or tiktokVerified is enough, so one of them may stay false on a ready channel.

- `targetId` (required): `string`

### leadli_activate_channel

Activate the channel only when current setup and plan capacity allow it.

- `targetId` (required): `string`

### leadli_disable_channel

Disable channel attribution and release its active plan slot.

- `targetId` (required): `string`

## Meta and TikTok connections

### leadli_set_meta_connection

Verify and save a Meta dataset connection using its required test event code. The access token is never returned.

- `accessToken` (required): `string`
- `datasetId` (required): `string`
- `targetId` (required): `string`
- `testEventCode` (required): `string`

### leadli_remove_meta_connection

Disconnect the channel from Meta.

- `targetId` (required): `string`

### leadli_set_tiktok_connection

Verify and save a TikTok pixel connection for the Events API using its required test event code. The access token is never returned.

- `accessToken` (required): `string`
- `pixelCode` (required): `string`
- `targetId` (required): `string`
- `testEventCode` (required): `string`

### leadli_remove_tiktok_connection

Disconnect the channel from TikTok.

- `targetId` (required): `string`

## Landing pages and browser SDK

### leadli_set_landing_url

Set an HTTP(S) landing URL without credentials, query parameters or fragments.

- `landingUrl` (required): `string`
- `targetId` (required): `string`

### leadli_create_ready_made_landing

Create and publish the existing ready-made Telegram landing with current setup safeguards.

- `targetId` (required): `string`

### leadli_refresh_ready_made_landing

Refresh and publish ready-made landing content from the current Telegram channel.

- `targetId` (required): `string`

### leadli_get_ready_made_landing

Read the published ready-made landing metadata.

- `targetId` (required): `string`

### leadli_ensure_landing_installation

Ensure landing SDK setup and return its public installation instructions and expiring installation token.

- `targetId` (required): `string`

### leadli_get_landing_installation_status

Read the landing SDK installation status.

- `targetId` (required): `string`

### leadli_restart_landing_installation

Restart pending landing SDK installation, replacing the previous attempt and expiring token.

- `targetId` (required): `string`

### leadli_confirm_landing_installation

Confirm an observed, ready landing installation for its exact HTTP(S) origin.

- `installationId` (required): `string`
- `landingUrl` (optional): `string`
- `origin` (required): `string`
- `targetId` (required): `string`

### leadli_list_landings

List the channel pages (own and ready-made), their state and plan usage.

- `targetId` (required): `string`

### leadli_add_landing

Add another HTTP(S) page to a channel that already has a confirmed page; query and fragment are ignored. Returns the page and its expiring installation token.

- `targetId` (required): `string`
- `url` (required): `string`

### leadli_get_landing_installation

Read the SDK installation state of one channel page.

- `landingId` (required): `string`
- `targetId` (required): `string`

### leadli_restart_landing

Issue a new installation token for a pending or disconnected own page, replacing the previous one.

- `landingId` (required): `string`
- `targetId` (required): `string`

### leadli_confirm_landing

Confirm a page once its SDK and CTA were observed on the page origin; allows that origin.

- `landingId` (required): `string`
- `targetId` (required): `string`

### leadli_disconnect_landing

Disconnect an own channel page; its history is kept and its slot is freed. The last confirmed page cannot be disconnected.

- `landingId` (required): `string`
- `targetId` (required): `string`

### leadli_get_sdk_instructions

Read the public SDK script URL, subscription attribute and route key.

- `targetId` (required): `string`

## Telegram notifications

### leadli_list_notification_receivers

Read the channel notification receivers. Requires configuration permission. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `targetId` (required): `string`

### leadli_create_notification_start_link

Create a one-time, expiring Telegram notification subscription link. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `targetId` (required): `string`

### leadli_update_notification_receiver

Enable or disable an existing notification receiver. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `enabled` (required): `boolean`
- `targetId` (required): `string`
- `telegramUserId` (required): `string`

### leadli_remove_notification_receiver

Remove an existing channel notification receiver. Telegram channels only; bot channels answer CHANNEL_ONLY_OPERATION.

- `targetId` (required): `string`
- `telegramUserId` (required): `string`

## Calling a tool and handling results

After your MCP client initializes the connection, call `leadli_get_context` with empty arguments. Then use the tools available to that key. This example shows the JSON-RPC message sent by the client.

### tools/call

```
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "leadli_get_context",
    "arguments": {}
  }
}
```

- MCP returns tool results in `content`; when `isError: true` is present, surface the failure and do not treat the action as completed.
- For authentication failures, check the Bearer header and whether the key was revoked. For access failures, check context, permissions and plan access.
- `CHANNEL_ONLY_OPERATION` identifies a Telegram-channel-only tool; `BOT_ONLY_OPERATION` identifies a Telegram-bot-only tool.

## Data, limitations and support

The connected assistant receives results from tools called with your key's permissions. These can include channel, attribution and observed-subscriber data. Choose your MCP client and key permissions with those data in mind.

The current connection uses a static Bearer key. Your client must support a custom Authorization header. OAuth connections through the Claude or OpenAI directories are not currently supported.

- [support@mail.leadli.me](mailto:support@mail.leadli.me)
- [Support](https://leadli.me/en/contact)
- [Privacy](https://leadli.me/en/privacy)
- [Terms](https://leadli.me/en/terms)

## Direct answers

### Does every key have access to all tools?

No. Check effective permissions and available tools in leadli_get_context. Domain actions require an active trial or paid plan. Context remains available to explain plan access.

### Does a report ban a subscriber?

A report records the organization's signal. Banning uses a separate tool and affects only the selected Telegram channel.

## Primary sources

- [MCP: tools/list, tools/call and results](https://modelcontextprotocol.io/specification/2025-11-25/server/tools)
- [MCP: Streamable HTTP](https://modelcontextprotocol.io/specification/2025-11-25/basic/transports)

[Canonical HTML page](https://leadli.me/en/guides/mcp-server)
