Skip to main content
Glama

LNKZ MCP

LNKZ MCP is the standalone Model Context Protocol adapter for the LNKZ relay built into LLMM. It exposes the existing LNKZ tools, resources, and prompts to MCP clients while using the relay's authenticated REST API for every operation.

This repository contains no LLMM console, database, conversation store, import pipeline, connector implementation, or product branding. Run LLMM/LNKZ separately, then point this adapter at it.

Requirements

  • Node.js 22

  • pnpm 10.26.1 through Corepack

  • A running LLMM/LNKZ relay

  • A relay API key with the scopes needed by the tools you use

Related MCP server: WebVoice MCP Server

Install and build

corepack enable
pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build

The server fails closed unless both settings are present:

LNKZ_BASE_URL=http://127.0.0.1:3100
LNKZ_API_KEY=replace-with-a-dedicated-relay-key

Do not commit API keys or put them in command-line arguments. Supply them through your MCP client's environment configuration or a secret manager.

Claude Desktop (stdio)

Build the repository, then add an entry like this to Claude Desktop's MCP configuration. Replace the path and placeholder key locally.

{
  "mcpServers": {
    "lnkz": {
      "command": "node",
      "args": ["C:\\path\\to\\lnkz-mcp\\dist\\stdio.mjs"],
      "env": {
        "LNKZ_BASE_URL": "http://127.0.0.1:3100",
        "LNKZ_API_KEY": "replace-with-a-dedicated-relay-key"
      }
    }
  }
}

The adapter uses local stdio for MCP traffic. It does not open a port or mount /mcp; network access is only from the adapter to the configured LNKZ REST base URL.

Preserved MCP surface

The adapter preserves all 24 tool names:

save_conversation          import_conversation       get_conversation
list_conversations         search_conversations      append_messages
export_conversation        build_context_graph       list_publish_targets
prepare_publish            delete_conversation       create_handoff
redeem_handoff             continue_handoff          revoke_handoff
list_handoffs              build_context_packet      analyze_conversation
find_conflicts             find_duplicates           search_context
list_connectors            workspace_stats           audit_log

It also preserves the lnkz://connectors, lnkz://stats, lnkz://conversations, lnkz://conversation/{id}, and lnkz://graph resources, plus the four existing prompts.

Repository boundary

  • Product UI, relay REST API, stores, authentication, managed OIDC membership, connectors, import/export implementation, intelligence, graph construction, and publish-target discovery belong in LLMM.

  • MCP registration, stdio transport, REST wire contract, and the authenticated REST client belong here.

  • RSNA work belongs only in rsna-knee-abnormality-detection.

Available Tools

24 tools
analyze_conversationAnalyze a conversationA
Read-only

Extracts decisions, open questions, action items, cited facts, and topics from one stored conversation without calling a model.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds a valuable behavioral trait: 'without calling a model', which tells the agent this is deterministic extraction with no external model dependency. This goes beyond the annotation and helps set expectations for performance and side effects. It does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary action ('Extracts...') and lists the outputs. There is no filler, and every word contributes to understanding. It is concise without sacrificing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single parameter and no output schema, the description covers the core purpose and lists the extracted entity types, which imply the return structure. It does not describe error handling or the exact output schema, but for a simple read-only tool, this is sufficient. The 'without calling a model' detail also addresses a potential performance concern. Overall, an agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, conversationId, and the schema provides its type (string) and format (uuid). The description mentions 'one stored conversation' which implicitly ties the parameter to that conversation, but it does not explicitly describe the parameter's role. With schema_description_coverage at 0%, the description offers minimal compensation, though the meaning is obvious from context. A score of 3 reflects adequate but not rich semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'extracts' and the resource 'one stored conversation', and enumerates the specific output types (decisions, open questions, action items, cited facts, topics). It also adds a distinguishing detail 'without calling a model', which sets it apart from any AI-based analysis siblings. This is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for analyzing a single conversation (from one stored conversation) and that it produces structured extractions, but it does not explicitly say when to use it over alternatives like get_conversation or search_conversations, nor does it mention exclusions (e.g., when you need raw text or multiple conversations). The usage context is implied but not fully articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

append_messagesAppend messages to a conversationA

Adds new turns to an existing conversation, which is how a thread continued in a second client stays one thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYes
conversationIdYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate a non-read-only, non-idempotent mutation. The description adds the context of thread continuation but does not elaborate on side effects, failure modes, or rate limits. Since annotations cover the core behavioral cues, the description provides marginal extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no redundancy. It packs the core action and a motivating use case efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It provides enough context for an agent to understand the typical use case (appending messages from a second client). It does not cover edge cases like missing conversation or message validation, but those are partially addressed by the schema. Overall, it is suitably complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description never names or explains the parameters. It refers to 'new turns' and 'existing conversation' but does not clarify that conversationId is the target identifier or that messages is an array of objects with role/content fields. The schema is left to carry all parameter meaning, but schema coverage is 0%, so the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (adds new turns), the target resource (existing conversation), and the purpose (keeping a thread unified across clients). This distinguishes it from siblings like save_conversation or import_conversation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage scenario ('how a thread continued in a second client stays one thread') that implies when to use this tool. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_logRead the audit logC
Read-only

Returns recent LNKZ events: saves, imports, handoff creation, redemption, rejection, and revocation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a read-only behavior consistent with the readOnlyHint annotation. However, it does not mention default behavior for the limit parameter, potential errors, or any other side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently conveys the core functionality without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks important context such as how 'recent' is defined, the role of the limit parameter, or output format. Given the simple schema, more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the meaning or effect of the 'limit' parameter. The schema provides type and range, but no additional context is added by the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Returns') and the resource ('recent LNKZ events') with specific event types. It is distinct from sibling tools, though it does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, not the appropriate context or selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_context_graphBuild the conversation graphA
Read-only

Builds a graph over the stored conversations: nodes for conversations, decisions, open questions and shared topics, and edges for lineage, shared subject matter, near duplicates and contradictions. Answers the questions search cannot: what this corpus knows, which decisions everything else leans on, and which conversations stand alone. Every edge carries the reason it exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
maxTopicsNo
conflictThresholdNo
duplicateThresholdNo
minTopicConversationsNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains what the graph contains and the kind of analysis it supports, going beyond the simple readOnlyHint annotation. It does not mention side effects, but it also does not contradict the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the core action, and uses only two sentences. It avoids unnecessary detail while still conveying the tool's purpose and outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the graph's node/edge types and high-level value, but it lacks any explanation of the five parameters and does not describe the return format. Since there is no output schema, this leaves some gaps for an agent deciding how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has five parameters with 0% description coverage, and the description does not mention any of them. An agent cannot infer the meaning or effect of limit, maxTopics, conflictThreshold, duplicateThreshold, or minTopicConversations from this description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Builds a graph') and a specific resource ('stored conversations'), and distinguishes it from search by noting it answers questions search cannot. It differentiates well from sibling tools like search_conversations and find_conflicts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when corpus-level relationships and insights are needed, and contrasts with search. It does not explicitly name sibling alternatives such as find_conflicts or find_duplicates, but the intent is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_context_packetBuild a context packetA
Read-only

Assembles a token-budgeted brief from stored conversations and connected sources: decisions, open questions, action items, a recent excerpt, and any contradictions between chats. Use this instead of pasting a whole transcript.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
budgetTokensNo
conversationIdsNo
includeExternalNo
maxConversationsNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read-only summarization behavior and lists what the packet includes. The readOnlyHint annotation already covers side effects, so no contradiction exists and the added output details support transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences, begins with the core action, and contains no filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It explains the high-level output and use case but lacks parameter semantics and output format. Since there is no output schema and params are only partially inferable, an agent would need more details to invoke it with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all five parameters but has zero descriptions, and the description never names or explains query, budgetTokens, conversationIds, includeExternal, or maxConversations. 'Token-budgeted' and 'stored conversations' only hint at two of them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('assembles') and names the deliverable ('token-budgeted brief') plus its contents (decisions, open questions, action items, excerpt, contradictions). It also positions the tool against the common alternative of pasting a transcript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage signal: use instead of pasting a whole transcript. It does not enumerate when each sibling might be preferable, but the stored-conversation summary use case is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

continue_handoffContinue a handed-off conversationC

Redeems a handoff and stores the continuation as a new conversation in this client, linked back to the original so the chain stays walkable.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNo
titleNo
tokenYes
messagesYes
providerYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=false, indicating a mutating, non-idempotent operation. The description adds that it stores a new conversation and links it back to the original, which is useful. However, it does not disclose potential side effects like token invalidation or whether the original handoff remains usable, leaving gaps in behavioral transparency beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that leads with the primary action ('Redeems a handoff') and flows into the significant consequence ('stores the continuation as a new conversation'). It is front-loaded and avoids fluff. It could be slightly more structured, but overall it is appropriately compact for its lack of parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters (three required) and zero schema coverage, the description is far from complete. It omits any explanation of what the parameters mean, how the tool behaves in edge cases, or what the return value or errors might be. The absence of an output schema heightens the need for behavioral detail, which is missing. The only complete element is the high-level flow of redeeming and storing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, meaning the description provides no information about the token, provider, messages, app, or title parameters. Since the description does not compensate for this absence, an agent cannot infer the meaning or format of the parameters. The schema constraints alone do not explain semantics (e.g., what format token is, what provider refers to, how messages are structured).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: redeems a handoff and stores the continuation as a new conversation linked to the original. This distinguishes it from a generic 'redeem' operation by specifying the storage behavior. However, it does not explicitly contrast with sibling tools like redeem_handoff, so it falls short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as redeem_handoff or save_conversation. It lacks explicit context about the intended use case (e.g., 'use this when you want to continue a conversation from another client'). The usage scenario is only implied by the name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_handoffCreate conversation handoffA

Mints an expiring, use-limited bearer link that another person, device, or LLM client can redeem for portable context. Optionally redacts secrets before the packet leaves.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
redactNo
maxUsesNo
audienceNo
ttlMinutesNo
conversationIdYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and idempotentHint=false, indicating a mutating, non-idempotent operation. The description adds valuable context: the link is expiring, use-limited, and can redact secrets before leaving. This goes beyond the annotations without contradicting them, though it does not cover side effects or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The core action is front-loaded ('Mints an expiring, use-limited bearer link'), and the optional redaction detail is concise. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 6 parameters and no output schema, the description does not explain what the tool returns (e.g., a link string or object), nor does it detail the parameters. It omits crucial details like how the link is used for redemption, required auth, or consequences of reaching maxUses or TTL. This is incomplete for an agent to invoke correctly without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meanings. It does not. It only hints at redaction (redact parameter) but fails to explain conversationId, note, maxUses, ttlMinutes, or audience. The schema itself lacks per-property descriptions, leaving the agent without adequate guidance for parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool creates a handoff link (bearer link) that is expiring and use-limited, and explicitly mentions redaction. It distinguishes itself from siblings like redeem_handoff, revoke_handoff, and continue_handoff by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the primary use case (creating a portable context link for another party) and mentions an optional redaction feature. However, it does not explicitly name alternatives or state when not to use this tool, nor does it reference sibling tools for comparison. Context is clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_conversationDelete conversationA
DestructiveIdempotent

Permanently removes a conversation, its messages, and its handoffs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds the permanence ('permanently removes') and the specific scope (messages and handoffs). This goes beyond annotations by clarifying exactly what is destroyed. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, zero wasted words. It conveys the essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete with one parameter and no output schema, the description is sufficient. It mentions permanence and the items removed. It does not mention permissions or side effects beyond what is stated, but these are not critical for a basic delete tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter 'id' with no description (0% coverage). The description does not explicitly discuss the parameter, but it is self-evident from the tool name and description that 'id' identifies the conversation. The description adds minimal value beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('removes') and resource ('conversation'), and clarifies the scope by listing what gets removed (messages and handoffs). This distinguishes it from siblings like save_conversation or get_conversation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It does not mention irreversibility or any prerequisites, nor does it suggest when to prefer it over other conversation-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_conversationExport a conversationA
Read-only

Writes a stored conversation back out in another client's format: a Markdown transcript, a Markdown brief with the decisions on top, a chat-completions message array, a ChatGPT-shaped export, a Claude-shaped export, a LNKZ packet, or plain text. Every format re-imports, so a conversation can leave LNKZ as easily as it arrived.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
conversationIdYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true, so the safe, non-destructive nature is already known. The description adds behavioral context by enumerating the output formats and asserting that 'Every format re-imports', which is a key property beyond the annotation. It does not mention response details (e.g., whether the output is a string or file), but given the read-only hint and simple nature, this is adequate. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence front-loads the core action and enumerates formats; the second adds the re-importability trait without redundancy. Every clause earns its place, and the structure is tight and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two parameters and no output schema, the description covers the essential usage context: what formats are available and that the export is round-trippable. It could explicitly state that the tool returns the exported content as a string, but given the tool's name and purpose, that is largely inferred. The description is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must illuminate parameters. It adds meaning to the 'format' parameter by expanding each enum value (e.g., 'Markdown transcript', 'chat-completions message array'), which goes beyond the raw enum names. However, it does not provide additional context for 'conversationId' beyond what the schema already implies (a UUID identifier). The description partially compensates for the coverage gap but could clarify the purpose of the id more explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Writes a stored conversation back out in another client's format' and lists all supported formats (Markdown, brief, chat-completions, etc.). This distinguishes it from siblings like import_conversation (opposite direction) and get_conversation (likely native format). The verb 'writes...back out' plus the resource 'conversation' and the explicit scope of format conversion make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for cross-client exports via 'another client's format' and notes that 'Every format re-imports', suggesting interoperability. However, it does not explicitly state when to use this tool over alternatives (e.g., use get_conversation for native retrieval, import_conversation for incoming). No 'when-not-to-use' guidance or comparison to siblings is provided, so the agent must infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_conflictsFind contradicting decisionsA
Read-only

Compares decisions across recent conversations and reports pairs that appear to disagree. Heuristic: it surfaces candidates for review, it does not adjudicate them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
thresholdNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the bar is lower. The description adds valuable context beyond the annotation by explaining that the tool is a heuristic that only surfaces candidates for review and does not adjudicate disagreements—this tells the agent the output is advisory, not authoritative, which is critical for downstream use. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The core function is front-loaded in the first sentence, and the second sentence adds a crucial caveat about its heuristic nature. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex (compares cross-conversation decisions) but has no output schema and no explanation of parameters. The description does not define 'recent conversations,' does not clarify what the threshold represents, and omits any mention of the output format (e.g., pairs with confidence scores). With only the readOnlyHint annotation and this sparse description, an agent would struggle to set parameters meaningfully or interpret results confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the two parameters, and the description provides zero explanation of what 'limit' or 'threshold' mean. The schema only gives numeric ranges/defaults but no semantic meaning—an agent cannot infer that threshold likely refers to a disagreement confidence level or how limit caps pairs returned. The description fails to compensate for this gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Compares'), a clear resource ('decisions across recent conversations'), and the output ('reports pairs that appear to disagree'). It also distinguishes itself from find_duplicates by focusing on disagreements rather than similar items, making its purpose unambiguous even without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for initial conflict review by noting it 'surfaces candidates for review, it does not adjudicate them,' but it never explicitly states when to choose this over sibling tools like analyze_conversation or find_duplicates, nor does it mention any exclusions. The heuristic nature is clear, but the guidance is indirect rather than prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_duplicatesFind near-duplicate conversationsA
Read-only

Reports conversations whose transcripts overlap heavily, which happens whenever the same chat is relayed through more than one client.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
thresholdNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already indicates a read-only operation, and the description does not add behavioral details beyond that. It does not mention output format, performance implications, or any potential side effects, but the read-only nature is consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence that efficiently conveys the tool's function without unnecessary verbosity. It is appropriately concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool's purpose is clear, the description lacks details about the output structure (e.g., whether it returns conversation IDs, scores, or grouped results). Given the absent output schema, this omission leaves some ambiguity about what the caller receives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines limit and threshold with ranges and defaults, but the description does not explain their meaning. For instance, 'threshold' likely refers to a similarity threshold, but this is not stated. The schema alone does not convey the semantic role of these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it reports conversations with heavily overlapping transcripts, specifically for cases where the same chat is relayed through multiple clients. This distinguishes it from sibling tools like search_conversations or list_conversations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete scenario ('whenever the same chat is relayed through more than one client') that signals when to use this tool. However, it does not explicitly contrast it with alternatives or mention any conditions that would make other tools more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_conversationGet conversationA
Read-only

Loads a stored conversation with its messages, lineage, extracted decisions, and a portable Markdown transcript.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint: true, covering safety. The description adds value by specifying exactly what is loaded (messages, lineage, decisions, transcript), which is beyond the annotation. It does not disclose potential performance or size implications, but the read-only nature is already disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that front-loads the core action ('Loads a stored conversation') and efficiently lists the contents. No redundant or unnecessary information, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool with no output schema, the description lists the return contents (messages, lineage, decisions, transcript), which is adequate. It does not mention error cases (e.g., not found) but given the read-only annotation and simplicity, this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the 'id' parameter or its role as the conversation identifier. While the parameter is inferable from its name and format, the description fails to compensate for the lack of schema documentation, leaving the agent to guess its meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Loads' with the resource 'stored conversation' and lists the specific contents (messages, lineage, decisions, Markdown transcript). This distinguishes it from siblings like list_conversations (listing only) and search_conversations (searching), making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single conversation's full content but does not explicitly state when to prefer this over siblings like list_conversations or search_conversations. No exclusions or alternative conditions are provided, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_conversationImport a chat from another clientC

Normalizes a ChatGPT, Claude, Gemini, LNKZ, Markdown, or plain-text transcript into portable conversations. Format is detected automatically unless one is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
dryRunNo
formatNoauto
payloadYes

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not mention side effects such as whether a new conversation is created, whether existing data is overwritten, or whether dryRun prevents mutation. With no output schema, the caller also cannot know what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that covers the core function and format flexibility without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No return type, error behavior, size limits, or relationship to other tools is described. Given four parameters and no output schema, the description leaves too many operational questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 0% of parameters. Only format is vaguely addressed by the mention of automatic detection; payload, tags, and dryRun are undefined, despite the enum on format giving some implicit options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool normalizes transcripts from several named sources into portable conversations, and the title indicates importing. It could be more explicit about whether it saves the result or just validates/prepares it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided for when to use this tool versus siblings like save_conversation or export_conversation. The description mentions format detection but does not clarify typical use cases or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connectorsList connector statusA
Read-only

Shows which context sources are configured and which are disabled, with the reason.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already indicates a read-only operation, so the description does not need to restate that. It adds a useful detail: the tool reports the reason for disabled connectors, which is not covered by annotations. However, it does not disclose other behaviors like output format or potential delays. Given the annotation coverage, this is an adequate but not exceptional disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, succinct sentence that front-loads the core purpose. It has no filler or redundant content, and every word contributes to clarity. It is an excellent example of concise, structured definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description sufficiently conveys its function. It explains what is shown (configured/disabled with reason), which is the core need. It could potentially mention the output structure (e.g., 'returns a list'), but the description already implies a list of statuses. Given the simplicity, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and schema description coverage is 100% (vacuously). Per the rubric, 0 parameters earn a baseline of 4. The description need not explain parameters since none exist, and it provides no additional parameter-related semantics. The baseline is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'shows which context sources are configured and which are disabled, with the reason.' This is a specific verb (shows) and resource (context sources/connectors), and it distinguishes from sibling list tools (e.g., list_conversations, list_handoffs) by focusing on connectors. The purpose is unambiguous and self-contained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives, such as when to prefer list_connectors over list_publish_targets or list_handoffs. It does not mention exclusions or context for selection. The reader must rely on the tool name to infer usage, which is insufficient given the many sibling list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_conversationsList conversationsA
Read-only

Lists stored conversations newest first, optionally filtered by provider, tag, or participant.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
offsetNo
providerNo
participantNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true, so the description only needs to add behavioral context. It adds ordering (newest first) and filter options, but does not disclose pagination behavior, return format, or whether filters are exact matches. It supplements the annotation with some useful context without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Lists stored conversations newest first, optionally filtered by provider, tag, or participant.' Every word earns its place, and the primary behavior is stated first with filters appended.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five optional parameters, no output schema, and zero parameter descriptions, the description is too sparse. It does not explain pagination (limit/offset), filter matching behavior, return structure, or how it relates to search_conversations. An agent would need to inspect sibling behavior or make assumptions to paginate correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names three of the five parameters (provider, tag, participant) as filters, but omits limit and offset entirely, and does not explain their purpose (pagination) or the matching semantics. It adds partial meaning but leaves gaps for the pagination-related parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (lists), the resource (stored conversations), the ordering (newest first), and optional filters (provider, tag, participant). It distinguishes from get_conversation (single) and search_conversations (search) without needing to name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the listing tool with optional filters, but it does not explicitly state when to use this versus search_conversations or get_conversation. No exclusions or alternatives are mentioned, leaving the agent to infer that list is for browsing and search is for querying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_handoffsList handoffsB
Read-only

Shows issued handoffs with their expiry, remaining uses, audience, and revocation state. Tokens are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdNo

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds a concrete behavioral detail: 'Tokens are never returned.' This clarifies an important security aspect not evident from the annotation alone. No contradictions exist between the description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and direct, using a single sentence to convey the core functionality and a second for an important caveat. There is no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description accurately captures what the tool does, it does not explain how it fits into the broader handoff workflow or differentiate it from related tools. Given the existence of multiple handoff-related siblings, some contextual guidance would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, conversationId, has no description. The schema provides its type (uuid) and optionality, but the description adds no explanation of its role or effect, leaving the parameter's semantics entirely undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Shows') and its target ('issued handoffs'), and enumerates the specific attributes returned (expiry, remaining uses, audience, revocation state). This makes the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus sibling tools like redeem_handoff, create_handoff, continue_handoff, or revoke_handoff. The description does not mention any conditions or contexts that would indicate its appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_publish_targetsList publish targetsA
Read-only

Connects to every configured downstream MCP server and lists the tools it exposes, marking which ones look like writes. Configure targets with LNKZ_MCP_TARGETS as name=url, optionally name=url|key. This is discovery only: it reads what is available and changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds context beyond those by explaining it connects to downstream servers, reads what is available, and changes nothing, plus details the LNKZ_MCP_TARGETS configuration format. It does not mention potential failure modes or latency, but it adds meaningful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, with the primary action stated up front and configuration details following. No filler or redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and annotations covering read-only behavior, the description adequately explains the tool's function, configuration, and side-effect-free nature. It could optionally describe the output format, but that is not critical for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters), so there is nothing for the description to explain. The baseline for 0 parameters is 4, and the description correctly avoids inventing parameters. It does not need to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool connects to configured downstream MCP servers and lists the tools they expose, marking potential writes. This is a specific verb+resource (list tools on downstream servers), but it does not explicitly differentiate from sibling tools like list_connectors, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a discovery-only read operation ('This is discovery only') but does not provide explicit when-to-use guidance or contrast with alternatives like list_connectors or prepare_publish. It leaves the agent to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_publishPrepare a conversation for another systemA
Read-only

Maps a conversation onto a downstream MCP tool's input schema and returns the exact call that would be made, including which required fields it could not fill. It never sends anything. Review the payload, then make the call yourself with that server's own tool if you want it to happen.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYes
shapeNosummary
targetYes
conversationIdYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly states that the tool never sends anything, making its non-destructive and read-only nature unmistakable. It also reveals what the return payload contains (the exact call and unfillable required fields), matching the readOnlyHint annotation and going beyond it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight and efficient, using three sentences to convey purpose, behavior, and recommended follow-up action. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotation and the simple parameter set, the description covers the main behavior, output contents, and side-effect expectation. It is slightly incomplete in explaining the meaning of each parameter, but overall it gives enough context to use the tool safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no parameter descriptions and the description does not individually explain conversationId, target, tool, or shape. With 0% schema coverage, the description needed to compensate by explaining these parameters, but it only indirectly refers to 'conversation' and 'downstream MCP tool.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a specific action: maps a conversation onto a downstream MCP tool's input schema and returns the would-be call, including missing required fields. It also explicitly distinguishes itself from actually sending by saying it never sends anything, which separates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use it: to review a prepared payload before executing it with the downstream tool. It even instructs the agent to make the call itself if execution is desired, providing practical usage guidance. It does not explicitly name sibling tools, but the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redeem_handoffRedeem conversation handoffC

Loads the portable packet behind an unexpired LNKZ handoff token, including the transcript and the extracted decisions and open questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose side effects such as token invalidation or state changes. Since readOnlyHint is false and idempotentHint is false, the tool may modify state, but this is not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, two sentences, and directly states the tool's purpose without redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions what is loaded but lacks details about output format, return value, or any prerequisites (e.g., whether the token must be created first). Given the sibling tools, some context is missing for effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'token' is not explained in the description. The schema provides constraints (min/max length) but no semantic meaning, so the agent has no context on what the token represents or how it is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (loads), the object (portable packet), and the condition (unexpired LNKZ handoff token), and specifies the contents (transcript, decisions, questions). It is distinct from sibling tools like create_handoff or list_handoffs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention scenarios like redeeming a token after creation or how it differs from continue_handoff or revoke_handoff.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_handoffRevoke handoffB
Idempotent

Immediately invalidates a handoff link that has already been shared.

ParametersJSON Schema
NameRequiredDescriptionDefault
handoffIdYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'Immediately invalidates', which indicates a state change and implies non-read-only behavior. The annotations already specify readOnlyHint=false and idempotentHint=true, so the description adds a small amount of context (immediacy, the fact that the link was already shared) but does not detail side effects, reversibility, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly conveys the core action without any unnecessary words or clutter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but adequate for a simple operation. However, it does not mention what happens if the handoff does not exist or is already revoked, nor does it indicate any return value or error conditions. Given the low complexity (one parameter, no output schema), this is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter is handoffId, but neither the schema nor the description provides any details about it. The schema has no description for the parameter (coverage 0%), and the description does not compensate by explaining what handoffId refers to or any constraints. The name is self-explanatory, but according to the criteria, the description must compensate for missing schema coverage and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: it invalidates a handoff link that has already been shared. The verb 'invalidates' is specific and the resource is identified. The tool name 'revoke_handoff' further reinforces the purpose, and it is distinct from sibling tools like 'create_handoff' or 'continue_handoff'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. While the purpose is self-evident, there is no guidance on when to choose revoke_handoff over other handoff-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_conversationSave portable conversationC

Stores a normalized conversation from any LLM client or device so it can be searched, packaged, or handed off.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
tagsNo
titleYes
sourceYes
lineageNo
summaryNo
messagesYes
metadataNo
participantsNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=false and idempotentHint=false, so the agent knows this is a non-idempotent write. The description adds 'normalized' and purpose but does not disclose side effects like whether it creates a new record, overwrites based on id, or what happens to lineage. For a write tool with zero additional behavioral disclosure, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence without waste. The main verb is front-loaded. It is concise, though almost too skimpy given the tool's complexity; but as a measure of conciseness and structure, it earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters with nested objects, no output schema, and sparse annotations, the description is far from complete. It lacks any mention of required fields, examples, or semantics of the source object. An agent cannot reliably construct a correct request based solely on this description and the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions none of the 9 parameters. It does not explain what 'title', 'source', 'messages', 'lineage', or 'metadata' mean, nor which are required. With complex nested objects and required fields, the agent has no semantic guidance beyond the raw JSON schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Stores') and resource ('normalized conversation'), plus the intended downstream uses (search, package, hand off). It is clear and distinguishes itself from retrieval/list tools, but it does not explicitly differentiate from the sibling import_conversation, which could also imply storing conversations, so it loses a point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. It does not say 'use this when' or 'instead of import_conversation', nor does it mention any prerequisites or conditions. The phrase 'from any LLM client or device' hints at breadth but gives no decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_contextSearch connected contextA
Read-only

Searches LNKZ conversations plus every configured connector (Slack, Jira, Figma, documentation feeds, and any federated MCP server) in one call, reporting per-source failures instead of hiding them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
sourcesNo
excludeSourcesNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so the description doesn't need to cover safety. It adds a valuable behavioral detail: 'reporting per-source failures instead of hiding them,' which is not in the annotations and helps the agent set expectations for error handling. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the scope and a key behavior without fluff. It is concise and easy to parse. However, it omits any parameter details, which would improve completeness, but the structure itself is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters (with one required), no output schema, and no parameter details in the description, the definition is incomplete. An agent cannot deduce how to specify sources or exclude sources, what the limit does, or how to handle the query. The description should at least mention the query parameter and suggest the sources/excludeSources options to be minimally usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% — the description does not mention any of the four parameters (query, limit, sources, excludeSources). With no schema explanation, the description must compensate, but it provides no guidance on how to use these parameters, leaving the agent without necessary context for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches LNKZ conversations plus all configured connectors in a single call, and explicitly mentions the unique behavior of reporting per-source failures. This distinguishes it from siblings like search_conversations, which likely only search LNKZ conversations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this when you need a multi-source search across all connectors. It clearly lists the connectors included (Slack, Jira, Figma, etc.), which helps an agent understand scope. However, it does not explicitly state when NOT to use this or mention alternatives like search_conversations for single-source queries, so it lacks direct exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_conversationsSearch LNKZ conversationsA
Read-only

Full-text ranked search across saved chats by title, summary, participant, tag, or message content.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this as a read-only operation, and the description's 'search' verb aligns with that. The description adds the behavioral trait of 'ranked' results, which implies ordering by relevance, but provides no detail on pagination, result shape, or whether it returns full conversation objects or summaries. With annotations covering the safety profile, the description adds only marginal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence states the core purpose without any filler. It efficiently conveys the action, resource, and scope. No redundant information, and the structure allows an agent to grasp the tool's function immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with two parameters and no output schema, the description is adequate but leaves gaps. It does not describe the return format (e.g., whether results include conversation IDs, metadata, or full messages), which could be critical for downstream processing. It also doesn't mention ranking criteria beyond 'ranked'. While the absence of an output schema heightens the need for return-value disclosure, the description remains functional for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for parameter meaning. It does so for the 'query' parameter by specifying the fields it matches (title, summary, participant, tag, message content), which is useful. However, it provides no elaboration on 'limit' beyond what the schema already shows (default, min, max). The description adds some value but does not fully cover all parameter nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (search) on a specific resource (saved chats/conversations) and enumerates the searchable fields (title, summary, participant, tag, message content). It differentiates itself from siblings like get_conversation (retrieval) and list_conversations (listing) by focusing on ranked full-text search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when searching across conversations) but provides no explicit guidance on alternatives or exclusions. It doesn't mention that search_context might be more appropriate for context-specific searches, nor does it state that this is not for retrieving a single conversation. The usage context is clear but underdeveloped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workspace_statsWorkspace statisticsA
Read-only

Counts stored conversations and messages, the providers they came from, and active handoffs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation. The description reinforces this by stating it 'counts' data, which is consistent with read-only behavior. It adds no further behavioral details (e.g., pagination or performance), but the annotation covers the critical safety aspect, so this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action ('counts') and then lists the specific items. It contains no filler or redundancy and is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and a read-only annotation, the description sufficiently communicates its purpose. While it does not describe the return format, the scope is clear enough for an agent to call it without ambiguity, and it is consistent with sibling tools that serve different specific functions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is complete and there is nothing for the description to add. Per calibration, a baseline of 4 is appropriate for tools with no parameters, as the description has no obligation to clarify parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'counts' and explicitly specifies the resources it aggregates: stored conversations, messages, providers, and active handoffs. This clearly distinguishes it from sibling tools like list_conversations or list_handoffs, which likely return detailed records rather than aggregate counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The description implies it for statistics/aggregate counts, but it does not name sibling tools or provide exclusions (e.g., 'use list_conversations for details'). Context is present but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 24 tool updatesv0.2.0
    • First observedanalyze_conversation
    • First observedappend_messages
    • First observedaudit_log
    • First observedbuild_context_graph
    • First observedbuild_context_packet
    • First observedcontinue_handoff
    • First observedcreate_handoff
    • First observeddelete_conversation
    • First observedexport_conversation
    • First observedfind_conflicts
    • First observedfind_duplicates
    • First observedget_conversation
    • First observedimport_conversation
    • First observedlist_connectors
    • First observedlist_conversations
    • First observedlist_handoffs
    • First observedlist_publish_targets
    • First observedprepare_publish
    • First observedredeem_handoff
    • First observedrevoke_handoff
    • First observedsave_conversation
    • First observedsearch_context
    • First observedsearch_conversations
    • First observedworkspace_stats

TDQS

B3.3/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but some close pairs exist such as save_conversation vs. import_conversation vs. append_messages, and search_conversations vs. search_context. Descriptions are detailed enough to disambiguate, though a couple of analytic/export tools could be confused at a glance.

Naming Consistency4/5

The naming is predominantly consistent snake_case verb_noun (save_conversation, list_handoffs, build_context_graph). A few outliers like workspace_stats and audit_log are noun-first rather than verb-first, but the pattern is otherwise uniform and readable.

Tool Count3/5

At 24 tools, the surface is on the heavy side and exceeds the typical 3-15 well-scoped range. Each tool appears to have a reason to exist, but the count feels more like a full platform API than a focused MCP server, making it borderline.

Completeness5/5

The tool set covers the full conversation lifecycle: save/import/get/list/delete/append/export, handoff creation/redemption/continuation/revocation, analytics, search across connectors, and audit logging. No major gaps are apparent for the stated purpose of managing portable conversations and handoffs.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers