Skip to main content

Tool reference

The server lists only the tools your connection may use (see Permissions), so tools/list can show fewer tools than this page. AI apps call tools for you; this page is for checking what a tool does, and for calling the server yourself.

Conventions​

  • Tool names are kebab-case (get-dataset-items). Arguments and result fields are snake_case (run_id, wait_secs). Protocol keys such as inputSchema and isError keep their MCP names.
  • Each tool has annotations: readOnlyHint: true on tools that only read, destructiveHint: true on tools that stop or delete, openWorldHint: true on tools that start billed runs. Clients use them to decide when to ask you first.
  • A result comes back twice: as JSON text in content, and as an object in structuredContent.
  • A refusal (bad argument, missing permission, not found, out of credit) is a normal result with isError: true and the reason as text. An unknown tool name is a JSON-RPC error -32602.
  • Results that list items are trimmed to about 100 KB, with truncated: true when items were left out. Ask for fewer items, fewer fields, or the next offset.

Calling a tool​

tools/call over HTTP
curl https://lantfly.com/mcp \
-H "Authorization: Bearer $LANTFLY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "list-runs", "arguments": { "limit": 2, "status": ["SUCCEEDED"] } }
}'
Answer
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{ "type": "text", "text": "{\n \"total\": 41,\n \"offset\": 0,\n \"items\": [ … ]\n}" }],
"structuredContent": { "total": 41, "offset": 0, "items": [ { "id": "6f1c…", "status": "SUCCEEDED" } ] },
"isError": false
}
}
A refusal
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{ "type": "text", "text": "This API token does not have the runs.read permission." }],
"isError": true
}
}

The run object​

Run tools return a run with these fields:

FieldDescription
idRun ID.
actor_id, actor_slugThe actor.
statusREADY, RUNNING, SUCCEEDED, FAILED, TIMED-OUT or ABORTED.
status_messageThe actor's latest status message.
started_at, finished_atISO 8601 timestamps.
statsRun time, compute units, result count.
default_dataset_idDataset with the run's results.
default_key_value_store_idKey-value store with INPUT, OUTPUT and other records.
usage_total_usdCost of the run so far.

Actors and runs​

ToolWhat it doesToken permissionOrganization role
search-actorsFind actors you can runactors.read
get-actor-detailsREADME, input schema, example inputactors.read
call-actorRun an actor and wait for resultsactors.run, not read-onlyStart runs
get-runA run's status, optionally waitingruns.read
list-runsRecent runsruns.read
get-run-logA run's logruns.read
abort-runStop a runruns.write, not read-onlyManage runs
get-dataset-itemsRead a datasetstorages.read (and runs.read with run_id)
get-key-value-recordRead a key-value recordstorages.read

Token permissions matter only for permission-limited tokens; full-access tokens and OAuth connections have them all. Organization role permissions apply when you act for an organization.

search-actors​

Finds actors you can run: your own, shared with you, and public ones. Deprecated actors are left out. Results are ordered by number of runs.

ArgumentTypeDefaultDescription
querystringWords to find in the slug, title or description. Empty lists everything.
limitinteger, 1–5010
offsetinteger ≥ 00
mybooleanfalseOnly actors owned by the account.

Result: total, offset, items[] with id, slug, title, description, is_public, total_runs.

Arguments
{ "query": "tiktok", "limit": 5 }

get-actor-details​

An actor's description, README (first 8,000 characters), input schema and example input. Call it before call-actor so the AI builds a valid input.

ArgumentTypeRequiredDescription
actorstringYesActor ID, slug (user~name or user/name) or alias.

Result: id, slug, title, description, readme, version, inputSchema (JSON Schema of the input object), example_input, default_run_options (memory_mb, timeout_secs).

Arguments
{ "actor": "lantfly~tiktok-scraper" }

call-actor​

Starts a run with the given input and waits for it, up to wait_secs. Returns the run and its first dataset items. A run still going when the wait ends keeps running: follow it with get-run and read results with get-dataset-items. Runs are billed to the account. Not available to read-only connections.

ArgumentTypeDefaultDescription
actorstringRequiredActor ID, slug or alias.
inputobject{}The actor input, as its input schema describes.
wait_secsinteger, 0–120120How long to wait for the run to finish. 0 returns at once.
preview_itemsinteger, 0–10010How many dataset items to return.
memory_mbinteger ≥ 128Actor defaultMemory of the run.
timeout_secsinteger ≥ 10Actor defaultRun timeout.
max_itemsinteger ≥ 1Most results a pay-per-result actor may charge for.
buildstringLatestVersion or tag to run.

Result:

FieldDescription
runThe run object.
finishedWhether the run had finished when the tool returned.
item_countItems in the run's dataset so far.
itemsUp to preview_items items.
truncatedtrue when the dataset holds more than items.
nextA hint for the AI: how to read the rest, or how to follow a run still going.
Arguments
{
"actor": "lantfly~tiktok-scraper",
"input": { "hashtags": ["skincare"], "resultsPerPage": 20 },
"wait_secs": 90,
"preview_items": 5
}

Refusals: invalid input (with the field errors), out of usage or credit, too many runs at once, a read-only connection, a role without Start runs, an actor you can't run, or more than 3 runs in one request.

get-run​

Status and details of a run, optionally waiting for it to finish.

ArgumentTypeDefaultDescription
run_idstringRequired
wait_secsinteger, 0–1200Wait up to this long for the run to finish. Ignored when it has finished.

Result: run, finished, item_count, next.

list-runs​

The account's runs, newest first.

ArgumentTypeDefaultDescription
actorstringOnly runs of this actor (ID, slug or alias).
statusarray of stringsOnly these statuses: READY, RUNNING, SUCCEEDED, FAILED, TIMED-OUT, ABORTED.
limitinteger, 1–5010
offsetinteger ≥ 00

Result: total, offset, items[] of run objects.

get-run-log​

A run's log with secrets masked: by default its last tail_kb kilobytes, or from a byte offset to follow a run that's still going.

ArgumentTypeDefaultDescription
run_idstringRequired
tail_kbinteger, 1–10020How much log to return, in KB.
frominteger ≥ 0Read forward from this byte offset instead of the tail.

Result: run_id, status, finished, log (text), from (where the text starts), next_offset (pass as from next time), total_bytes.

abort-run​

Stops a run that's still going. Results it already saved stay. Not available to read-only connections.

ArgumentTypeRequired
run_idstringYes

Result: run, already_finished (true when the run had already ended).

get-dataset-items​

Reads items of a dataset, a page at a time. Pass dataset_id, or run_id to read that run's default dataset.

ArgumentTypeDefaultDescription
dataset_idstringDataset ID, for example a run's default_dataset_id.
run_idstringOr the run whose default dataset to read.
offsetinteger ≥ 00
limitinteger, 1–20020
fieldsarray of stringsOnly these top-level fields.
omitarray of stringsLeave these top-level fields out.
descbooleanfalseNewest items first.

Result: dataset_id, total, offset, count, truncated, items.

Arguments
{ "run_id": "6f1c…", "limit": 50, "fields": ["url", "text", "likes"] }

get-key-value-record​

A record of a key-value store: a run's OUTPUT, INPUT, screenshots and so on. Pass store_id, or run_id for that run's default store.

ArgumentTypeDefaultDescription
store_idstringKey-value store ID.
run_idstringOr the run whose default store to read.
keystringOUTPUTRecord key.

Result: store_id, key, content_type, size_bytes, then one of:

  • value: the parsed JSON, for JSON records;
  • text and truncated: for text, XML and large JSON;
  • note: for binary content, which isn't returned. Open it from the Console or the API.

Per-actor tools​

Add ?actors= to the server address with up to 20 actor slugs or IDs, comma separated:

Address
https://lantfly.com/mcp?actors=lantfly~tiktok-scraper,lantfly~web-scraper

Each actor you can see becomes a tool:

  • Name: the slug with ~ replaced by -- (and other characters outside A-Za-z0-9_- by -), for example lantfly--tiktok-scraper.
  • Arguments: the actor's input schema, turned into JSON Schema.
  • Behavior: like call-actor with those arguments as the input: it waits up to 120 seconds and returns the run and its first results.
  • Needs: the same as call-actor. Read-only connections don't get these tools.

Social listening​

These tools appear when your connection can read social listening: the token has listening.read (or full access), your organization role has View social listening, and the token isn't limited to actors. Tools that change something also need listening.write and a connection that isn't read-only.

Inside a project, your project role decides what you may do, as in the Console:

Project roleMay
viewerRead everything in the project.
analystAlso label and verify mentions, update leads, save audience estimates.
managerAlso change settings, sources, attributes, campaigns, alerts and reports, and collect now.

The role is checked on each call. Call get-my-project-access first to know it.

Agent tools​

Built for an AI working through a project: read compact mentions and authors, analyse them, and write the results back.

list-listening-projects​

The account's projects (up to 100), newest first.

ArgumentTypeDescription
statusstringactive, paused, completed or stopped.

Result: items[] with id, name, status, sources, mentions (counts).

search-mentions​

Posts, comments and reviews a project collected, newest or most engaging first. Hidden mentions are left out.

ArgumentTypeDefaultDescription
project_idstringRequiredFrom list-listening-projects.
querystringWords that must all appear in the text.
platformstringtiktok, instagram, facebook, youtube, threads, x, pinterest, lemon8, reddit, telegram, shopee, tiki, lazada, tiktok_shop, google_maps, app_store, google_play, news, forum.
kindstringpost, comment or review.
sentimentstringpositive, neutral, negative or unknown (no label).
intentstringprovider, seeker, general or unknown.
authorstringAuthor handle, exact (a leading @ is ignored).
from, tostringPublished on or after / on or before, YYYY-MM-DD or ISO 8601.
sortstringpublished_atpublished_at or engagement.
limitinteger, 1–5020
offsetinteger ≥ 00

Result: project (id, name), total, offset, items[] with id, platform, kind, url, author, author_name, text (up to 1,000 characters), hashtags, published_at, views, likes, comments, shares, engagement, sentiment, intent, intent_source (ai, rule or manual), attributes (names), is_irrelevant.

Arguments
{ "project_id": "0b6e…", "sentiment": "negative", "from": "2026-10-01", "sort": "engagement", "limit": 20 }

list-attributes​

A project's attributes (topics, product lines, topic clusters, tracking terms) with how many mentions carry each.

ArgumentTypeRequired
project_idstringYes

Result: items[] with id, name, type, mentions. Use id with label-mentions tag and untag.

list-authors​

Distinct authors of a project in a period, most mentions first. Public data only, with no label about the person.

ArgumentTypeDefaultDescription
project_idstringRequired
fromstring30 days before toFirst day, YYYY-MM-DD, project timezone.
tostringTodayLast day, YYYY-MM-DD.
platformstringOne platform (values as in search-mentions).
limitinteger, 1–10050
offsetinteger ≥ 00

Result: project, from, to, total, offset, items[] with platform, handle, name (public display name), location (public profile location), is_person (false for pages, news sites, the brand's own accounts and Facebook page posts), mentions, sample_text (up to 300 characters).

get-audience​

The aggregate audience of a project and period: Lantfly's own estimate (gender from display names, province from public profile locations) and the latest estimates saved with save-audience-estimate that overlap the period. Groups under 10 authors are null.

ArgumentTypeDefault
project_idstringRequired
fromstring30 days before to
tostringToday

Result: project, from, to, lantfly (the built-in estimate), agent_estimates[] (up to 5, newest first).

label-mentions​

Corrects up to 200 mentions of a project in one call, as a person would in the Console. One action per call. Needs listening.write and the analyst role; irrelevant and relevant need the verify right on the project and are recorded in the review trail.

ArgumentTypeRequiredDescription
project_idstringYes
actionstringYesset_sentiment, set_intent, tag, untag, irrelevant, relevant, hide, show.
idsarray of integers, 1–200YesMention IDs from search-mentions.
sentimentstring or nullWith set_sentimentpositive, neutral, negative, or null to clear.
intentstring or nullWith set_intentprovider, seeker, general, or null to clear. Saved as a manual label the built-in AI never replaces.
attribute_idintegerWith tag, untagFrom list-attributes.

Result: project, action, affected.

Arguments
{ "project_id": "0b6e…", "action": "set_sentiment", "ids": [918273, 918280], "sentiment": "negative" }

irrelevant takes mentions out of analytics and reports; relevant puts them back.

save-audience-estimate​

Saves an aggregate audience estimate the AI made for a project and period: how many distinct authors it looked at, and how many of them it judges female or male and in each age band. Counts only: the tool takes no label per person. Needs listening.write and the analyst role.

ArgumentTypeRequiredDescription
project_idstringYes
from, tostringYesThe period analysed, YYYY-MM-DD.
authorsinteger ≥ 10YesDistinct authors looked at; at most the project's authors in the period (total of list-authors).
genderobjectYesfemale and male, integers ≥ 0. Their sum can't exceed authors.
ageobjectYesAuthors per band: under_18, 18_24, 25_34, 35_44, 45_plus. Bands left out count as 0. The sum can't exceed authors.
methodstring, 10–500 charactersYesHow the estimate was made (signals, model). Shown to the team.

Authors the AI can't judge stay out of the counts. Leave pages, shops and news sites out. On the project dashboard, groups under 10 authors are hidden.

Result: project, estimate.

Arguments
{
"project_id": "0b6e…",
"from": "2026-10-01",
"to": "2026-10-31",
"authors": 240,
"gender": { "female": 151, "male": 62 },
"age": { "18_24": 96, "25_34": 88, "35_44": 21 },
"method": "Display names, profile bios and writing style of each author; Claude, no external data."
}

API tools​

Each of these tools calls one /api/v3/listening endpoint as you, with the same checks and validation as the API. Path values become arguments (project_id, mention_id…); other arguments go to the query string (reads) or the JSON body (writes). The result is the endpoint's JSON (data, and meta for lists), or { "ok": true } when the endpoint answers with no body. Endpoint details are in the API reference and Listening API.

  • Reads need listening.read; writes need listening.write and a connection that isn't read-only.
  • An API error (403, 404, 422 with field errors) comes back as isError with the API's message.
  • An answer over 200 KB is refused with a hint to lower per_page or narrow the filter.
  • Endpoints that return files (exports, downloads) aren't tools.

Common arguments:

ArgumentTypeDescription
page, per_pageinteger; per_page 1–100, default 25Paging, on list tools that take it.
from, tostringYYYY-MM-DD, project timezone. With from/to, days is ignored.
daysinteger, 1–366, default 30The last N days, when from/to are left out.
platformarray of stringsPlatforms, values as in search-mentions.
sentimentstringpositive, neutral, negative, unknown.
kindstringpost, comment, review.
qstringWords in the text.
authorstringAuthor handle.
attributearray of integersAttribute IDs.

"Analytics filters" below means from, to, days, platform, sentiment, kind, q, author, attribute.

Projects​

ToolRoleArgumentsDoes
get-listening-projectviewerproject_idA project's settings: keywords, brands, languages, timezone, schedule, status, counts.
get-my-project-accessviewerproject_idYour role (viewer, analyst, manager) and can (view, analyze, verify, manage).
create-listening-projectManage social listening in an organizationname (required), description, include_keywords, exclude_keywords, contextual_keywords, context_keywords, brands (up to 10 name + keywords), languages, category, track_from, track_until, interval_minutes (15–10080), timezone, collect_comments, backfill_daysCreates a project. Counts against the plan's project limit. Add sources, then collect.
update-listening-projectmanagerproject_id plus any field of create-listening-project except backfill_daysChanges settings. Send only what changes.
set-project-statusmanagerproject_id, move (pause, resume, stop)Pauses or resumes scheduled collection, or ends the project.
collect-project-nowmanagerproject_id, add_keyword_sources (boolean, default true)Collects every active source now. Billed.

Sources​

ToolRoleArgumentsDoes
list-sourcesviewerproject_id, q, platform, state (on, off, problem), page, per_pageWhat the project collects from, with state and last collection.
list-collectionsviewerproject_id, page, per_pageRecent collection runs: when, which sources, how many mentions, errors.
suggest-sourcesviewerproject_idHashtags, profiles and keywords the mentions point to that the project doesn't follow yet.
add-sourcemanagerproject_id, platform, kind (keyword, hashtag, profile, url…, depending on the platform), value (up to 500 characters), results_limit, plus other source settings the API takesFollows a new source.
update-sourcemanagerproject_id, source_id, value, results_limit, is_active, plus other source settingsChanges a source or turns it on or off.
bulk-sourcesmanagerproject_id, ids (up to 200), action (enable, disable, collect, delete, results_limit, review_stars), results_limit, review_stars (1–5)Acts on many sources. collect is billed.
delete-sourcemanagerproject_id, source_idStops following a source. Collected mentions stay.
import-postsmanagerproject_id, urls (up to 100)Collects specific posts by URL. Billed.

Mentions​

ToolRoleArgumentsDoes
get-mentionviewerproject_id, mention_idOne mention in full: text, author, metrics, media, sentiment, intent, attributes, comments, review history.
update-mentionanalystproject_id, mention_id, is_hidden, sentiment (or null), intent (or null)Corrects one mention. A manual intent is never overwritten by the built-in AI. For many, use label-mentions.

Analytics​

ToolRoleArgumentsDoes
get-project-dashboardviewerproject_id, analytics filters, compare_from, compare_toTotals, sentiment, share of voice, platforms, timeline and top posts, optionally against a comparison period.
get-hashtag-trendsviewerproject_id, analytics filters, limit (1–100, default 20)Hashtags with counts and growth.
get-topicsviewerproject_id, analytics filters, limit (1–150, default 80), buzz (only words that grew)Most used words and phrases, with sentiment.
get-peaksviewerproject_id, analytics filtersDays with unusually many mentions, and what drove them.
list-influencersviewerproject_id, analytics filters, sort (mentions, interactions, posts, shares, views, followers, negative, positive), direction (asc, desc), page, per_pageAuthors ranked.
compare-listening-projectsviewer of eachprojects (2–5 project IDs, required), from, to, daysSide-by-side totals, sentiment and timeline.
list-audience-estimatesviewerproject_idAggregate estimates saved for the project, newest first.
delete-audience-estimateanalystproject_id, estimate_idRemoves an estimate.

Attributes​

ToolRoleArgumentsDoes
create-attributemanagerproject_id, name (required, up to 60), type (attribute, product_line, topic_cluster, tracking_term), color (#RRGGBB), rules (auto-tagging: match any or all, conditions of field and values)A new attribute to tag mentions with.
update-attributemanagerproject_id, attribute_id, same fieldsRenames or changes an attribute.
delete-attributemanagerproject_id, attribute_idDeletes an attribute and its tags on mentions.

Creators and leads​

ToolRoleArgumentsDoes
list-creatorsviewerproject_id, q, platform, sort, page, per_page, plus other filters the API takesCreators (KOL, KOC) who posted about the project, with followers, posts, views and engagement.
get-creatorviewerproject_id, creator_id, sort (published_at, views, engagement)A creator's profile and posts in the project.
track-creatormanagerproject_id, creator_idFollows the creator's profile as a source.
untrack-creatormanagerproject_id, creator_idStops following it.
list-leadsviewerproject_id, status (new, contacted, qualified, ignored), platform, kind (post, comment), assignee_id, q, from, to, page, per_pageMentions from people who want to buy (intent seeker), as a sales inbox.
update-leadanalystproject_id, lead_id, status, assignee_id (or null), note (up to 2,000, or null)Sets a lead's status, assignee or note.

Campaigns, alerts and reports​

ToolRoleArgumentsDoes
list-campaignsviewerproject_idCampaigns with dates, budget and results.
get-campaignviewerproject_id, campaign_idA campaign's report: reach, views, engagement, EMV, cost per result, top posts.
list-campaign-mentionsviewerproject_id, campaign_id, sort (published_at, views, engagement), platform, page, per_pagePosts counted in a campaign.
create-campaignmanagerproject_id, name and starts_on (required), description, ends_on, budget_usd, hashtags, keywords, creators (handles, up to 500), report_show_costsA new campaign.
update-campaignmanagerproject_id, campaign_id, same fieldsChanges a campaign. Send only what changes.
delete-campaignmanagerproject_id, campaign_idDeletes a campaign. Mentions stay.
list-alertsviewerproject_idAlert rules of the project.
create-alertmanagerproject_id, type (required: viral, negative, creator_post, volume_spike, lead, low_rating), name, is_active, paramsA new alert rule. params: viral takes views, growth_pct, min_views; creator_post takes handles; volume_spike takes multiplier, min_mentions; low_rating takes max_rating; negative and lead take none.
update-alertmanagerproject_id, alert_id, name, is_active, paramsChanges an alert rule or turns it on or off.
delete-alertmanagerproject_id, alert_idDeletes an alert rule.
list-reportsviewerproject_idReports generated for the project.
get-reportviewerproject_id, report_idA report's summary, figures and highlights.
create-reportmanagerproject_id, from and to (required), title (up to 160)Generates a report in the background; read it with get-report.

Verify queue​

ToolRoleArgumentsDoes
list-verify-queueverify rightproject_ids, status (unverified, verified, irrelevant, all), type (post, comment), sentiment, intent, platform, q, from, to, page, per_pageMentions waiting for a person to verify, across the projects you may verify.
get-verify-statsverify rightproject_ids, from, toVerified, irrelevant and waiting counts per project.
verify-mentionsverify right on each projectmention_ids (required), action (required: verify, unverify, sentiment, intent, irrelevant, relevant, note), sentiment (positive, neutral, negative), intent (provider, seeker, general), note (up to 2,000)Verifies mentions or corrects them; recorded in the review trail.

The verify right comes with the analyst or manager project role, or the Verify mentions organization permission.

Not available over MCP​

Deleting or transferring a project, sharing and guests, project members, data source credentials, public share links, and file exports are left out on purpose. Use the Console or the API.