Liliphant

com.liliphant.mcpPublished by mcp.liliphant.comOfficial publisherv1.0.0Updated Oct 31, 2026

Liliphant turns every meeting into connected knowledge, decisions, and actionable insights.

Overview

AI-generated overview

Liliphant's remote MCP server lets an assistant read your company's analysed meetings and answer questions from what people actually said.

What you can do
  • Identify the signed-in user and the companies they can open
  • List and filter analysed meetings, newest first
  • Answer plain-language questions from meeting content, with quotes and optional charts
  • Search and browse the Liliphant API documentation and quickstart
  • Call any Liliphant API endpoint, either read-only or with create, change and delete requests
When to use it
Useful when you want an assistant to recall what was said, decided or promised in company meetings, or to work with Liliphant data and API endpoints through a signed-in account.
Requirements
A remote Streamable HTTP endpoint; nothing to install. You sign in to Liliphant once in the browser through your MCP client, and most calls need a company id from the signed-in user's company list.
Before you install
The server acts on your signed-in Liliphant account and can send POST, PUT, PATCH and DELETE requests to any Liliphant API endpoint, so data can be created, changed or deleted. Meeting content and questions are sent to Liliphant's service. Review which tools your client auto-approves.

Installation

In SourceWeft

  1. Open Liliphant in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.liliphant.mcp%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "liliphant": {
      "type": "http",
      "url": "https://mcp.liliphant.com/mcp"
    }
  }
}

README

[Liliphant]

Liliphant MCP

Liliphant joins your company's calls, transcribes them and pulls out decisions, promises, open questions and risks, each linked to the words someone said. This MCP server lets AI assistants read your meetings and answer questions from what people actually said.

It is a remote MCP server (Streamable HTTP) at https://mcp.liliphant.com/mcp. Nothing to install: your AI tool connects to it, and you sign in to Liliphant once in the browser.

Tools

ToolWhat it does
get_meWho is signed in and the companies they can open
list_meetingsYour meetings, newest first; filter by text, type, person, tag or date
ask_a_questionAnswers from your meetings, with quotes
search_liliphant_docs, get_liliphant_api_docs, quickstart-liliphantLiliphant docs and API reference
call_any_read_api_of_liliphant, call_any_api_of_liliphantAny other Liliphant API endpoint (read, or create/change/delete)

Connect from Cline

Install it from the Cline MCP Marketplace, or open MCP Servers → Configure MCP Servers and add this to cline_mcp_settings.json:

json
{  "mcpServers": {    "liliphant": {      "type": "streamableHttp",      "url": "https://mcp.liliphant.com/mcp",      "disabled": false,      "autoApprove": []    }  }}

Then use the sign-in button next to liliphant in the MCP Servers list and sign in to Liliphant in the browser. Agent-driven install steps are in llms-install.md.

Connect from Claude Code

bash
claude mcp add --transport http liliphant https://mcp.liliphant.com/mcp

then run /mcp and sign in.

MCP Registry

server.json is the listing for the official MCP Registry, as com.liliphant.mcp/mcp. The com.liliphant.mcp name is proven by owning the mcp.liliphant.com domain.

One-time setup: create a signing key and publish its public half on liliphant.com (Git Bash or any shell with OpenSSL):

bash
openssl genpkey -algorithm Ed25519 -out mcp-registry-key.pemecho "v=MCPv1; k=ed25519; p=$(openssl pkey -in mcp-registry-key.pem -pubout -outform DER | tail -c 32 | base64)"

Add the printed line as a TXT record on liliphant.com. Keep mcp-registry-key.pem private and out of this repo.

Publish (bump version first for any later change):

bash
mcp-publisher login dns --domain mcp.liliphant.com --private-key "$(openssl pkey -in mcp-registry-key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n')"mcp-publisher publish

Links

Source: README.md at commit 4782eeb

Tools

8

search_liliphant_docs

Search Liliphant API docs

Search the Liliphant API documentation with a natural-language question. Returns the most relevant passages with their page URLs.

Parametersqueryrequired

get_liliphant_api_docs

Get Liliphant API docs

Browse the Liliphant API API docs, one level at a time. Call it without arguments to get the top level: the modules and pages with a short description and the endpoints they hold. Call it with `path` set to a module's or page's link (or path) to get what is inside it; each listing links the next level. Call it with `path` set to an endpoint's link ending in ".openapi.yml" to get that endpoint as an OpenAPI file: method, url, headers, query params, path variables, a request body example and sample responses. Fetch only the level you need.

Parameterspath

call_any_read_api_of_liliphant

Read from Liliphant API

Read from any Liliphant API API endpoint with a GET request for the user and return its response. Use it once you know the exact endpoint: look it up with get_liliphant_api_docs first to get its URL, headers, query params and body, unless the skill or a dedicated tool on this server already gives them exactly. Load the quickstart-liliphant skill first: it explains which tool to use when. For POST, PUT, PATCH and DELETE use call_any_api_of_liliphant. Pass the full url with path variables filled in, the headers the docs list, and query params in `query` (not in the url). For the auth header the docs name (Authorization, proxy_auth_token, x-api-key, ...), pass it with an empty value "": the signed-in user's token is filled in automatically. Never put a real or made-up token there; if the docs name no auth header, leave it out and the token is sent as Authorization. If the API needs the user to sign in, they're asked the first time. Returns { status, ok, headers, data }: the HTTP status and the response body, including error details on failure.

Parametersurlrequiredqueryheadersrequired

call_any_api_of_liliphant

Write to Liliphant API

Send a POST, PUT, PATCH or DELETE request to any Liliphant API API endpoint for the user and return its response. Use it once you know the exact endpoint: look it up with get_liliphant_api_docs first to get its URL, headers, query params and body, unless the skill or a dedicated tool on this server already gives them exactly. Load the quickstart-liliphant skill first: it explains which tool to use when. For GET requests use call_any_read_api_of_liliphant. Pass the full url with path variables filled in, the headers the docs list, query params in `query` (not in the url) and the JSON body in `body`. For the auth header the docs name (Authorization, proxy_auth_token, x-api-key, ...), pass it with an empty value "": the signed-in user's token is filled in automatically. Never put a real or made-up token there; if the docs name no auth header, leave it out and the token is sent as Authorization. If the API needs the user to sign in, they're asked the first time. Returns { status, ok, headers, data }: the HTTP status and the response body, including error details on failure.

Parametersurlrequiredbodyquerymethodrequiredheadersrequired

get_me

Get me

Returns who is signed in and every company they can open, with their role in each. This is the first call a client makes after sign-in: almost every other call needs a company id from companies[].id. Any signed-in person may call it. It also does housekeeping on the way: it makes sure the person's personal company exists and turns any email invitations waiting for them into memberships, so a company someone was just added to shows up here. The x-company-id header is optional here. currentCompanyId tells you which company the server will use for requests that send this header; with no header, or one naming a company the person is not in, it falls back to their personal company instead of failing. Other fields: companyLimit is how many companies a person may create (null means no limit) and companiesCreated is how many they have created so far, for a "New company" button. onboardedAt on each company is null until its setup is finished. Errors: 401 NOT_SIGNED_IN when no token is sent; 401 SESSION_EXPIRED when the token is no longer valid. GET https://meet-analyzer-api.50agents.com/api/v1/ui/me

Takes no parameters.

list_meetings

List meetings

Lists the analysed meetings the caller may see, as cards, newest first, with the filter choices the Meetings screen offers. Use it to show or search the meeting list, and to find a meetingId for Get Meeting, Get Meeting Transcript, Get Share Link or the notes routes (meetings[].id). Any member of the company may call it, but what comes back depends on their role. An owner or admin sees every meeting in the company. A member sees only the meetings they booked or were invited to, plus every meeting of each team they are in (only their own when they are in no team). It never returns meetings from a company other than the one named in x-company-id. Paging: send limit (1 to 100) to get pages. When there are more results, nextCursor holds a token; pass it back as cursor to get the next page. nextCursor is null on the last page. Without limit, every matching meeting comes back in one response. Never build a cursor yourself. The first page (no cursor) also carries the extras: filters (the types, tags, people and teams that actually occur, each with a count), totals (all meetings the caller may see, and how many of them still need attention, ignoring the filters) and processing (up to 50 meetings the caller may see that are still being analysed, newest first). On later pages filters and totals are null and processing is empty, so keep the first page's copy. meetingCount is the number of matches across all pages. In filters.people, team is true for someone who was ever on the company's side of a call. Filters combine: q searches title, headline, summary, type, tag, a participant's name or email, a team's name, or an exact meeting id; type, tag and person take values from filters; teamId limits to meetings booked by or with that team's members (an id from filters.teams[].value); within keeps meetings from the last N days; from and to pick a custom date range instead; status is open (still needs something) or handled. Team filter: an owner or admin may pass any of the comp

ParametersqtotagfromtypelimitcursorpersonstatusteamIdwithin

ask_a_question

Ask a question

Answers a plain-language question from the company's processed meetings, with a headline, a short answer, an optional chart and the quotes it is based on. Use it whenever someone asks what was said, decided or promised in their meetings. Leave out meetingId to search every meeting the asker may see; set it to answer from one meeting only. Who may call it: any member of the company. An owner or admin asks over every meeting in the company; a member asks only over the meetings they may see (ones they booked or were invited to, plus their teams' meetings). The company comes from the x-company-id header. meetingId comes from List Meetings (meetings[].id). This is slow: a minute is normal and up to three minutes happens, so allow a long timeout. A question it cannot answer is still a 200 with chart null and the reason in body: "No conversations in this company yet" when the company has no processed meetings or meetingId names a meeting that does not exist or that the asker may not see; "No conversation covers that yet" when nothing matches; "Could not answer that" when the engine fails, with the reason in body and any failures in warnings and a "What went wrong" block in detail. tags narrow a company-wide question to meetings carrying any of those tags or topic names. Each tag is normalised before matching: trimmed, upper-cased, spaces and underscores turned into dashes, other characters dropped, so "Renewal terms" matches the topic "Renewal terms". tags are ignored when meetingId is set. id is the same for the same question (case and spacing ignored) and the same meetingId, so it can be used to keep the answer on the board with Keep Question on Board. Quotes are only traced to transcript lines in this company's meetings; one that cannot be traced keeps its words with affiliation "from the conversation" and no meetingId. Errors: 400 VALIDATION_FAILED for a missing, too short or too long question, an empty or too long meetingId, a tag over 40 characters or with no l

Parameterstagsquestion

quickstart-liliphant

Quickstart Liliphant

Liliphant API quickstart: read the user's meetings and ask questions answered from what people actually said. Load before any Liliphant task. Call this to load the full instructions for this skill before doing the task.

Takes no parameters.

Version history

1
  1. v1.0.0LatestOct 31, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.