Lerian MCP Server
The Lerian MCP Server is a unified gateway connecting AI assistants (Claude Desktop, Cursor, etc.) to Lerian's portfolio of financial and data products, enabling documentation lookup, guided learning, SDK code generation, live API access, and cross-product workflow orchestration.
Core capabilities via the lerian tool:
Portfolio Discovery (
operation="discover"orproduct="all"): List and compare all supported products — Midaz, Tracer, Flowker, Reporter, Fetcher, Matcher, Underwriter.Documentation (
operation="docs"): Retrieve official docs for any product/topic, with configurable detail levels (summary, detailed, examples-only).Guided Learning (
operation="learn"): Access tutorials and learning paths tailored by experience level (beginner, intermediate, advanced).SDK Code Generation (
operation="sdk"): Generate Go, TypeScript, or JavaScript code examples for specific use cases.Cross-Product Search (
operation="search",product="all"): Search documentation and examples across all products simultaneously.
Live API interaction:
Contract Discovery (
*-discovertools, e.g.midaz-discover): Inspect live resource schemas, actions, parameters, and examples.API Execution (
*-executetools, e.g.midaz-execute): Execute read or mutating API calls; mutations requireconfirmMutation=trueand amutationReasonfor safety and auditability.
Workflow orchestration:
Cross-Product Workflows (
portfolio-workflowtool): Run multi-product workflows (e.g. fetcher-to-reporter) with stateful sessions and step-by-step guidance.
Product endpoints and authentication are configurable via environment variables or other configuration sources.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lerian MCP ServerShow me how to create a workflow in Flowker"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lerian MCP Server
An MCP gateway for Lerian portfolio discovery, documentation, learning, SDK examples, live product API access, and cross-product workflows.
This server connects MCP clients such as Claude Desktop, Cursor, Windsurf, Continue, and ChatGPT Desktop to the Lerian product portfolio. It gives AI assistants a structured way to discover Lerian products, read official documentation, generate implementation examples, inspect live API contracts, execute configured product APIs, and guide multi-product operational workflows.
Runtime scope: this server is not documentation-only. The unified
leriantool is read-oriented, but product-specific*-executetools can call configured live Lerian APIs. Mutating API calls require explicit confirmation and an audit reason.
2-Minute Setup
Choose your MCP-compatible AI assistant.
Add the server configuration.
Restart the AI app.
Ask: "What can you tell me about Lerian Midaz?"
Claude Desktop
macOS location: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows location: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"lerian": {
"command": "npx",
"args": ["-y", "@lerianstudio/lerian-mcp-server@latest"]
}
}
}Cursor, Windsurf, Continue, ChatGPT Desktop
Add the same MCP server block to your client's MCP configuration:
{
"mcpServers": {
"lerian": {
"command": "npx",
"args": ["-y", "@lerianstudio/lerian-mcp-server@latest"]
}
}
}Related MCP server: DevDocs MCP Server
What You Get
Supported Products
Midaz: unified double-entry ledger — organizations, ledgers, accounts, balances, transactions, and CRM behind a single service.
Fetcher: datasource connection, schema discovery, and asynchronous extraction service.
Reporter: template-driven report generation, datasource management, metrics, and artifacts.
Matcher: reconciliation engine for matching Midaz transactions against external systems.
Tracer: transaction validation engine with rules, limits, validations, and auditability.
Flowker: workflow orchestration platform for providers, executors, webhooks, and execution flows.
Underwriter: jurisdiction-aware lending surface for loan products and schedule preview.
All: portfolio-wide discovery, documentation search, and comparison.
Core Capabilities
Portfolio discovery through
lerianwithoperation="discover".Documentation lookup through
lerianwithoperation="docs".Guided learning through
lerianwithoperation="learn".SDK examples through
lerianwithoperation="sdk".Cross-product search through
lerianwithoperation="search".Live API contract discovery through product-specific
*-discovertools.Live API execution through product-specific
*-executetools.Cross-product workflows through
portfolio-workflow.Prompt-based guidance for onboarding, learning, API use, and operational workflows.
Runtime Tool Surface
The server exposes a small core plus live API pairs for each supported product.
Core Tools
lerian: unified portfolio tool for docs, learning, SDK examples, discovery, and search.portfolio-workflow: cross-product workflow discovery, planning, stateful sessions, and step execution.
Live API Tools
midaz-discoverandmidaz-executefetcher-discoverandfetcher-executereporter-discoverandreporter-executematcher-discoverandmatcher-executetracer-discoverandtracer-executeflowker-discoverandflowker-executeunderwriter-discoverandunderwriter-execute
Use the matching *-discover tool before calling a *-execute tool. Discovery returns resources, actions, path parameters, query parameters, body schemas, examples, and execution hints.
The lerian Tool
The lerian tool is the primary read-oriented entry point.
Tool: lerian
Parameters:
product midaz | fetcher | reporter | matcher | tracer | flowker | underwriter | all
operation discover | docs | learn | sdk | search
topic Topic to inspect, learn, or search
language go | typescript | javascript, for SDK examples
useCase Specific implementation scenario for SDK examples
experienceLevel beginner | intermediate | advanced
format summary | detailed | examples-only
includeExamples true | false
maxResults 1-50, for searchExample:
{
"product": "midaz",
"operation": "learn",
"topic": "transactions",
"experienceLevel": "beginner"
}Live API Workflow
Live API access is intentionally two-step.
Inspect the product surface:
{
"intent": "list-resources"
}Inspect a specific action contract:
{
"intent": "describe-action",
"resource": "transactions",
"action": "create"
}Execute with the exact contract returned by discovery:
{
"resource": "transactions",
"action": "create",
"pathParams": {
"organizationId": "...",
"ledgerId": "..."
},
"body": {
"description": "Example transaction"
},
"confirmMutation": true,
"mutationReason": "Create example transaction requested by operator"
}Mutating live API actions require:
confirmMutation: truemutationReasonwith a human-readable audit reason
Cross-Product Workflows
Use portfolio-workflow when the task spans multiple Lerian products.
Current workflows:
fetcher-to-reporter: validate extraction mappings with Fetcher, then generate or inspect Reporter reports.matcher-to-fetcher-to-midaz: configure Matcher reconciliation, use Matcher discovery over Fetcher, and inspect Midaz ledger-side data.
Supported intents:
list-workflowsdescribe-workflowplancreate-sessionget-sessionlist-sessionsexecute-stepexecute-next
Workflow sessions return an opaque sessionToken. Keep it private.
Configuration
The server works immediately for documentation and discovery. Live API execution requires reachable product services and, where applicable, tokens or API keys.
Configuration sources, in priority order:
Command-line
--configor--config-fileEnvironment variables
./lerian-mcp-config.json./midaz-mcp-config.json~/.lerian/mcp-config.json~/.midaz/mcp-config.json~/.config/lerian/mcp-config.json~/.config/midaz/mcp-config.jsonPlatform global config paths
Create or update configuration interactively:
npx -y -p @lerianstudio/lerian-mcp-server@latest lerian-mcp-configMidaz is a single unified ledger service reached through one base URL. Onboarding, accounts, balances, transactions, and CRM are all resources of that one service, so there is exactly one Midaz URL to configure.
Common environment variables:
LERIAN_DOCS_URL=https://docs.lerian.studio
LOG_LEVEL=info
MIDAZ_BASE_URL=http://localhost:3002
MIDAZ_AUTH_TOKEN=...
MIDAZ_API_TIMEOUT=30000
FETCHER_MANAGER_URL=http://localhost:4006
FETCHER_AUTH_TOKEN=...
REPORTER_MANAGER_URL=http://localhost:4005
REPORTER_AUTH_TOKEN=...
MATCHER_BASE_URL=http://localhost:4018
MATCHER_AUTH_TOKEN=...
TRACER_BASE_URL=http://localhost:4020
TRACER_API_KEY=...
FLOWKER_BASE_URL=http://localhost:4021
FLOWKER_AUTH_TOKEN=...
FLOWKER_API_KEY=...
UNDERWRITER_BASE_URL=http://localhost:8080
UNDERWRITER_AUTH_TOKEN=...Migrating to 4.0.0
Breaking change: Midaz configuration. Releases before 4.0.0 expected four separate Midaz URLs, one per legacy service (onboarding, transaction, CRM, ledger). Those variables are gone — they are not read and not accepted. Point MIDAZ_BASE_URL at your unified Midaz ledger instead, and keep MIDAZ_AUTH_TOKEN as is. Nothing else in the configuration changed.
Safety Model
Live execution is opt-in through product-specific
*-executetools.Mutating methods require explicit confirmation and a mutation reason.
Product API base URLs must use
httporhttps.Non-localhost HTTP URLs are rejected; HTTPS is required outside local development.
URLs with embedded credentials are rejected.
Authorization and API-key headers are protected from arbitrary override.
Binary upload and download sizes are bounded by configurable limits.
Secrets are generated and managed locally under
~/.lerian/secrets.jsonwhen needed.
Example Conversations
Portfolio Discovery
You: "What Lerian products can this MCP help with?"
AI: Uses lerian with product="all", operation="discover".
Learning Path
You: "I'm new to Tracer. Teach me how validation rules work."
AI: Uses lerian with product="tracer", operation="learn", topic="rules".
SDK Example
You: "Show me Go code for creating a Midaz ledger."
AI: Uses lerian with product="midaz", operation="sdk", language="go".
Live API Contract Discovery
You: "Inspect the contract for creating a Reporter template."
AI: Uses reporter-discover before any reporter-execute call.
Cross-Product Workflow
You: "Guide me through validating Fetcher mappings before generating a report."
AI: Uses portfolio-workflow with workflow="fetcher-to-reporter".
Development
Requires Node.js >=20.19.0.
npm ci
npm run build
npm testUseful scripts:
npm run dev: run the TypeScript entrypoint withts-node.npm run build: compile todist/and mark binaries executable.npm run lint: run ESLint.npm run typecheck: run TypeScript without emitting files.npm test: run Node tests plus the basic server test.npm run docs: generate TypeDoc output intodocs/.
Documentation
Package Information
npm package:
@lerianstudio/lerian-mcp-server— the npm page and the GitHub releases carry the current version and changelog.Runtime: Node.js ESM
Transport: stdio only
License: Apache-2.0
Repository: github.com/lerianstudio/lerian-mcp-server
Architecture Summary
MCP Client
-> stdio transport
-> MCP server runtime
-> core tools and prompts
-> product adapters
-> product routers and schema registries
-> configured Lerian product APIsPrimary layers:
Transport: MCP JSON-RPC over stdio.
Server bootstrap: security, secrets, docs manifest, logging, client detection.
Core tools:
lerianandportfolio-workflow.Product adapters: discover/execute pairs for supported products.
Schema registries: resource/action contracts for API surfaces.
HTTP execution: validated URL construction, request execution, response parsing, and error classification.
Workflow orchestration: guided, stateful multi-product flows.
Troubleshooting
Server Not Starting
Check Node.js version:
node --versionRun manually:
npx -y @lerianstudio/lerian-mcp-server@latestCheck local secrets:
ls -la ~/.lerian/secrets.jsonLive API Calls Failing
Use the product
*-discovertool first.Verify the relevant base URL and token/API key are configured.
Confirm non-local remote URLs use HTTPS.
For mutations, include
confirmMutation=trueandmutationReason.Check whether the target product service is reachable from the MCP runtime.
Tool Not Responding In The Client
Restart the MCP client after configuration changes.
Confirm MCP is enabled in the client.
Enable logging with
LOG_LEVEL=debugif needed.Check
./logs/when logging is enabled.
Available Tools
16 toolsfetcher-discoverARead-onlyIdempotent
Discover Fetcher manager resources, actions, and execution contracts. Use this before fetcher-execute to inspect path params, required headers like organizationId/productName, body shapes, and supported migration/fetcher job operations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "create", "list", "validateSchema", "assign"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Fetcher resource name (e.g. "connections", "connection-migrations", "fetcher-jobs"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context about what the discovery reveals (path params, required headers like organizationId/productName, body shapes, supported operations), going beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The first sentence states the core purpose, and the second provides immediate usage guidance and concrete examples. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with 5 schema-covered parameters and strong annotations, the description is sufficiently complete: it explains what the tool does, when to use it, and what kinds of information it surfaces. It does not describe return format, but no output schema exists and the discovery nature makes the return value implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds contextual examples of what to inspect (e.g., organizationId/productName headers) but does not add per-parameter meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Discover') and names the exact resource scope ('Fetcher manager resources, actions, and execution contracts'). It clearly differentiates from fetcher-execute by framing this as an inspection/discovery tool rather than an execution tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Use this before fetcher-execute') and what to inspect (path params, headers, body shapes, supported operations). It does not explicitly list when-not-to-use scenarios or name alternative discovery tools, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetcher-executeADestructive
Execute Fetcher manager API actions. Use fetcher-discover first to inspect the required organizationId/productName context, path params, query params, and request body shape before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for create/update/validate operations. | |
| action | Yes | Fetcher action to perform (e.g. "create", "list", "validateSchema", "assign"). | |
| resource | Yes | Fetcher resource name (e.g. "connections", "connection-migrations", "fetcher-jobs"). | |
| pathParams | No | Path parameters as key-value pairs. | |
| productName | No | Product name sent as X-Product-Name. Required explicitly for some actions like create/assign connection. | |
| queryParams | No | Query parameters for list/filter operations. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| organizationId | No | Organization UUID sent as X-Organization-Id. Required explicitly for scoped actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to repeat that. It adds context about requiring confirmMutation and mutationReason for mutating actions, which is useful. However, it doesn't disclose other behavioral traits like rate limits or error handling, and the description doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the purpose and immediately directs to the discover tool. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, nested objects, and no output schema, the description is somewhat thin. It relies heavily on fetcher-discover to fill gaps, which is a reasonable pattern but leaves the agent without direct knowledge of return values or edge cases. The description is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra meaning beyond pointing to fetcher-discover for context. It doesn't explain parameter relationships or provide examples, so it's at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes Fetcher manager API actions, with a specific verb ('Execute') and resource ('Fetcher manager API'). It distinguishes from siblings by referencing fetcher-discover for context, but doesn't explicitly contrast with other execute tools (e.g., midaz-execute).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to use fetcher-discover first to inspect required context, which is a clear usage guideline. However, it doesn't provide when-not-to-use or alternatives beyond the discover step, so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowker-discoverARead-onlyIdempotent
Discover Flowker API resources, actions, and execution contracts. Use this before flowker-execute to inspect workflow definitions, execution start requirements, provider and executor configuration payloads, audit filters, dashboard summaries, and webhook method/path behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "create", "start", "validateParams", "verifyHashChain", "post"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Flowker resource name (e.g. "workflows", "executions", "provider-configurations", "webhooks"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by framing the tool as purely inspect/discover and adds detail about what can be safely inspected. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the tool's purpose, and each sentence contributes useful guidance. It avoids redundant restating of the tool name and gets straight to instructions for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with rich annotations and a well-described schema, this description provides enough contextual framing about what can be discovered and when to call it. It does not detail output shape or exhaustive edge cases, but given no output schema and the intentionally broad discovery scope, the level of detail is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters including enums for intent and component. The description adds high-level domain context but does not substantially enrich parameter-level meaning beyond what the schema provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a discovery mechanism for Flowker API resources, actions, and execution contracts. It uses specific verbs like 'Discover' and 'inspect' and distinguishes this tool from its execution counterpart flowker-execute by explicitly framing its pre-execution role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this before flowker-execute' and lists the kinds of things an agent should inspect. It does not explicitly name alternative discovery tools, but it clearly communicates the intended workflow phase and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowker-executeADestructive
Execute Flowker API actions. Use flowker-discover first to inspect auth expectations, Idempotency-Key requirements for workflow execution start, provider and executor configuration payloads, and webhook method/path behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for create/update/validate actions, workflow execution start, and webhook payloads. | |
| action | Yes | Flowker action to perform (e.g. "create", "start", "validateConfig", "verifyHashChain", "post"). | |
| headers | No | Optional allowlisted headers from the action contract, such as Idempotency-Key or X-Webhook-Token. | |
| resource | Yes | Flowker resource name (e.g. "workflows", "executions", "provider-configurations", "webhooks"). | |
| pathParams | No | Path parameters as key-value pairs. For webhooks, path can include nested segments like "payments/kyc/callback". | |
| queryParams | No | Query parameters for list/filter actions. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover destructive, non-read-only, non-idempotent behavior. The description adds some useful context by referencing auth expectations, Idempotency-Key requirements, and webhook method/path behavior, but it does not describe consequences, required confirmations, or error/response behavior beyond what annotations and schema already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the tool's core purpose, and the second directs the agent to the necessary discovery step. There is no filler, repetition, or wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic executor with 8 parameters, no output schema, and destructive annotation, the description is somewhat thin. It relies heavily on flowker-discover to provide the missing behavioral and configuration context. This is a reasonable design, but the description itself does not fully equip an agent to invoke the tool correctly without first consulting a sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters, including body, headers, pathParams, queryParams, mutationReason, and confirmMutation. The tool description itself adds no parameter-specific meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Execute Flowker API actions') and clearly positions it as the execute counterpart to flowker-discover. It does not enumerate concrete scenarios like starting workflows or posting webhooks, but the verb-resource pair and sibling distinction are reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance to 'Use flowker-discover first' to inspect auth expectations, Idempotency-Key requirements, configuration payloads, and webhook behavior. This clearly signals a prerequisite and distinguishes the discovery tool from the execution tool, though it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lerianARead-onlyIdempotent
Unified portfolio tool for Lerian products. Discover supported products and current MCP coverage, access documentation and learning resources, generate SDK examples, and search across the portfolio. Live API execution is available through product-specific tools for Midaz, Fetcher, Reporter, Matcher, Tracer, Flowker, and Underwriter, with cross-product workflow support available via portfolio-workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic or subject matter, 5-200 characters (REQUIRED for: docs, learn, search). Examples: 'getting-started', 'authentication', 'transactions', 'templates', 'rules', 'workflows'. Be specific about what you want to learn or find. | |
| format | No | Response detail level. 'summary': brief overview (~200 chars), 'detailed': comprehensive with examples, 'examples-only': code samples only. Default: 'detailed'. | detailed |
| product | Yes | Target Lerian product (REQUIRED). Use 'all' for portfolio-wide discovery and search. Supported products: midaz, reporter, fetcher, matcher, tracer, underwriter, flowker, all. | |
| useCase | No | Specific use case for SDK code generation, 10-200 characters (REQUIRED for: sdk operation). Examples: 'create first transaction', 'setup authentication', 'handle errors', 'build workflow', 'generate report'. Be specific about implementation scenario. | |
| language | No | Programming language (REQUIRED for: sdk operation). 'go': backend services, high performance, 'typescript': type-safe development, 'javascript': Node.js and web. Check product.sdkLanguages for available options. | |
| operation | Yes | Operation type (REQUIRED). 'discover': inspect portfolio products and current MCP coverage, 'docs': get documentation, 'learn': interactive tutorials and learning paths, 'sdk': generate SDK code, 'search': search documentation and examples. | |
| maxResults | No | Maximum search results to return (for: search operation). Range: 1-50, default: 10. Use lower numbers (1-5) for focused results, higher (10-20) for exploration. | |
| experienceLevel | No | Your experience level with the product (for: learn operation). 'beginner': new to product, 'intermediate': basic understanding, 'advanced': production experience. Affects tutorial depth and complexity. | beginner |
| includeExamples | No | Include code examples in documentation responses. Default: true. Set false for text-only documentation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation by noting that live execution is available elsewhere, but it adds little beyond that. It does not discuss potential errors, required authentication, or output behavior, so transparency is moderate given annotations already cover read-only and idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise and front-loaded with the core purpose ('Unified portfolio tool'), then lists functions and alternatives. It avoids redundancy but could be trimmed slightly, such as removing the full list of product names that are also in the schema enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough context to understand the tool's role and boundaries (e.g., no live execution, pointing to siblings). It does not describe return values or detailed behavior, but given the schema richness and explicit sibling references, the agent is likely to use it correctly. Missing output format description is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal parameter context beyond what the schema already provides. While it restates the tool's operations, the schema descriptions already explain each parameter's use, required conditions, and enums, so the added semantic value is low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a unified portfolio interface for Lerian products, enumerating specific functions (discover, docs, generate SDK, search) and explicitly naming sibling tools for live API execution, which distinguishes its purpose from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance that live API execution should be done via product-specific tools and cross-product workflows via 'portfolio-workflow', helping the agent choose when to use this tool versus siblings. It does not elaborate on contextual prerequisites or when to pick one operation over another in detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matcher-discoverARead-onlyIdempotent
Discover Matcher API resources, actions, and execution contracts. The current live slice covers contexts, sources, field maps, discovery-over-Fetcher endpoints, matching runs, exceptions, disputes, governance, reporting, and system operations. Use this before matcher-execute to inspect headers, path params, query filters, payload requirements, and export behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "create", "clone", "startExtraction", "getBridgeSummary"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Matcher resource name (e.g. "contexts", "sources", "field-maps", "discovery", "system"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this read-only nature ('Discover', 'inspect') and adds useful context about the live slice and what facets are inspectable, such as export behavior. It does not cover rate limits or error behavior, but the annotations cover the core safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every part serves a function: scope enumeration and usage guidance. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does a good job of setting expectations for what the discovery response will cover: headers, path params, query filters, payload requirements, and export behavior. It also lists the meaningful resource categories covered in the current live slice, making it sufficiently complete for an initial API discovery tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all five parameters, including enums and examples. The description adds general context about discovery but does not meaningfully enhance individual parameter semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb + resource: 'Discover Matcher API resources, actions, and execution contracts.' It clearly differentiates itself from matcher-execute by stating 'Use this before matcher-execute.' The listing of covered API areas also clarifies the tool's exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage directive: 'Use this before matcher-execute to inspect headers, path params, query filters, payload requirements, and export behavior.' It provides clear context and a named alternative (matcher-execute), though it does not explicitly exclude other discover siblings or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matcher-executeADestructive
Execute Matcher API actions. The current live slice covers contexts, sources, field maps, discovery-over-Fetcher endpoints, matching runs, exceptions, disputes, governance, reporting, and system operations. Use matcher-discover first to inspect payloads, required headers, and reporting export behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for create/update actions. | |
| action | Yes | Matcher action to perform (e.g. "create", "clone", "startExtraction", "getBridgeSummary"). | |
| headers | No | Optional allowlisted headers from the action contract, such as X-Request-Id or X-Idempotency-Key. | |
| resource | Yes | Matcher resource name (e.g. "contexts", "sources", "field-maps", "discovery", "system"). | |
| pathParams | No | Path parameters as key-value pairs. | |
| queryParams | No | Query parameters for list/filter actions. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=trueborn, readOnlyHint=false, so the description doesn't need to restate that. It adds scope information but does not elaborate on the effects of actions, auth requirements, or error behavior. It provides some context about the 'live slice' but not deep behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose and scope; the second directs to matcher-discover for prerequisites. It is front-loaded with the action verb and resource list, with no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's breadth (8 resource types) and that it's an executor with an input schema that documents parameters, the description provides adequate scope but doesn't explain action-specific requirements, return formats, or caveats. It points to discover for details, which partially compensates, but for such a flexible tool, more context on usage patterns could be added.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all 8 parameters, including examples like 'create', 'startExtraction' for action Apaçı and pathParams/queryParams explanations. The description adds no additional parameter-level detail beyond pointing to matcher-discover for payload inspection, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Execute Matcher API actions' and enumerates specific resource areas (contexts, sources, field maps, etc.), distinguishing it from the sibling 'matcher-discover' tool which is for inspection. It uses a specific verb and identifies the resource scope, though it is somewhat generic as an execute-all tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Use matcher-discover first to inspect payloads, required headers, and reporting export behavior,' providing clear guidance on when to use the sibling tool before this one. It implies this tool is for execution after discovery, giving context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midaz-discoverARead-onlyIdempotent
Discover Midaz API resources, actions, and schemas. Use this BEFORE calling midaz-execute to find the right resource+action and understand required parameters. Supports listing all resources, describing specific resources/actions, searching, and filtering by component.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search" | |
| action | No | Action name (e.g. "create", "get", "list", "createInflow") | |
| intent | Yes | Discovery intent: "list-resources" (all resources), "describe-resource" (details+actions for one resource), "describe-action" (full schema for resource+action), "search" (fuzzy search), "list-by-component" (resources in a component) | |
| resource | No | Resource name (e.g. "organizations", "transactions", "holders") | |
| component | No | Component filter for intent="list-by-component" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds context about the discovery capabilities (listing, describing, searching, filtering) and emphasizes it is a pre-execution step, providing value beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and zero filler. All information is essential and directly supports agent decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with no output schema, the description sufficiently explains the types of actions it supports (listing, describing, searching, filtering) and its role in the workflow. It covers the main use cases and provides enough context to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented with their own descriptions. The description does not add extra semantics beyond the schema but reinforces the purpose of understanding required parameters. Baseline 3 is appropriate because the schema fully handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it discovers Midaz API resources, actions, and schemas. It names the specific resource (Midaz API) and differentiates from the sibling tool midaz-execute, fulfilling the verb+resource+scope requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use before midaz-execute to find the right resource+action and required parameters, clearly indicating when to use it. Also lists the supported intents (list, describe, search, filter), which helps distinguish from other discover tools for different APIs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midaz-executeADestructive
Execute Midaz API operations. Use midaz-discover first to find the right resource+action and required parameters, then call this tool to execute. Supports all CRUD operations across organizations, ledgers, assets, accounts, transactions, balances, holders, aliases, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for create/update operations | |
| action | Yes | Action to perform (e.g. "create", "get", "list", "update", "delete", "createInflow") | |
| resource | Yes | Resource name (e.g. "organizations", "transactions", "holders", "balances") | |
| pathParams | No | Path parameters as key-value pairs (e.g. { organizationId: "uuid", ledgerId: "uuid" }) | |
| queryParams | No | Query parameters for list/search operations (e.g. { limit: 10, page: 1 }) | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive=true, readOnly=false, and idempotent=false. The description adds no further behavioral context—no mention of authentication, rate limits, error handling, or what happens on mutation (e.g., requiring confirmation). The only extra info about mutations appears in the schema (mutationReason, confirmMutation), not the description. Thus, the description adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action ('Execute Midaz API operations'). It efficiently states the primary workflow (discover first) and scope without fluff. Could be slightly improved by including a brief example, but it's appropriately sized for a generic executor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic tool with 7 parameters, nested objects, and no output schema, the description is minimal. It doesn't mention response formats, error behaviors, or the requirement for mutation confirmation (which is in the schema but not the description). It relies heavily on midaz-discover to fill in details, making it adequate for a wrapper but incomplete as a standalone description, especially since it lacks any guidance on return values or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: every parameter (resource, action, body, pathParams, queryParams, mutationReason, confirmMutation) has a description in the schema. The tool description does not add any parameter-specific meaning beyond what the schema provides. It only hints that discover is needed to determine parameters. Baseline is 3 for high coverage, and this tool meets that baseline without adding extra.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it executes Midaz API operations and lists supported resource types (organizations, ledgers, assets, etc.), giving a clear purpose. It distinguishes from the discover tool by explicitly directing to use midaz-discover first, but doesn't differentiate from sibling executors (e.g., fetcher-execute) beyond the Midaz domain, so it's clear but not deeply specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use midaz-discover first to find the right resource+action and required parameters, then call this tool to execute.' This clearly tells when and how to use it, and implies when not to (i.e., discovery should be done via midaz-discover, not here). It also mentions support for all CRUD operations, covering the scope of use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio-workflowADestructive
Cross-product workflow tool for orchestrating guided steps across Lerian products. Supports workflow discovery, readiness planning, stateful workflow sessions, step execution, and execute-next progression. Implemented workflows include fetcher-to-reporter and matcher-to-fetcher-to-midaz.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | Workflow step to execute when intent="execute-step". | |
| input | No | Workflow-specific input payload used for planning or execution. | |
| limit | No | Maximum session summaries to return for intent="list-sessions". | |
| intent | Yes | List workflows, describe a workflow, generate a readiness plan, create or inspect a workflow session, or execute a specific workflow step. | |
| scopeId | No | Required owner/client scope for stateful session operations. Use a stable caller, tenant, or operator identifier. | |
| workflow | No | Cross-product workflow identifier. | |
| sessionId | No | Workflow session identifier for stateful planning and execution. | |
| sessionToken | No | Opaque session token returned by create-session. Required for get-session, execute-step, and execute-next. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive, non-idempotent, and open-world hints. The description adds behavioral context on statefulness ('stateful workflow sessions', 'execute-next progression') and notes that workflows are implemented, giving the agent a clearer picture of what to expect beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the core purpose and follow with specific capabilities and examples. No wasted words; every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multiple intents, workflows), the description provides a solid high-level overview. It names the workflows and core functions, and while it doesn't explain every step or session detail, the schema compensates. The absence of an output schema is noted, but the description offers enough context for initial use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptive schema entries, so coverage is 100%. The description's mention of capabilities like 'readiness planning' and 'execute-next' maps to the intent enum, but it does not add significant new meaning beyond the schema, which is already detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('orchestrating') and resource ('cross-product workflows across Lerian products'). It enumerates specific capabilities (discovery, planning, sessions, execution) and lists concrete workflows, effectively distinguishing it from the single-product discover/execute sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cross-product orchestration, setting it apart from siblings that focus on individual products. However, it does not explicitly state 'use this instead of X' or provide when-not-to-use scenarios, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reporter-discoverARead-onlyIdempotent
Discover Reporter manager resources, actions, and execution contracts. Use this before reporter-execute to inspect multipart requirements for templates, request headers like X-Idempotency, report download behavior, and the available template/report/deadline/datasource endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "create", "list", "download", "validateBlocks"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Reporter resource name (e.g. "templates", "reports", "data-sources", "deadlines", "metrics", "system"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond those by naming the kinds of execution-contract details that can be discovered, such as request headers, multipart requirements, and endpoint availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every phrase adds useful information. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations and a fully described schema, the description adds enough operational context for a discovery tool. It does not describe return formatting or output structure, but that is less critical for a discover-style tool and no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter and the description need not repeat those details. The description adds domain context about what can be inspected, but it does not add parameter-specific meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers Reporter manager resources, actions, and execution contracts, with a specific verb and resource scope. It also differentiates from reporter-execute by positioning itself as the pre-execution discovery tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this before reporter-execute and lists concrete inspection targets such as multipart requirements, X-Idempotency headers, and download behavior. It provides clear context but does not explicitly mention when not to use it or compare with other discover tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reporter-executeADestructive
Execute Reporter manager API actions. Use reporter-discover first to inspect multipart requirements for template upload/update, request headers like X-Idempotency, and binary download behavior for report artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for standard JSON actions. | |
| action | Yes | Reporter action to perform (e.g. "create", "list", "download", "validateBlocks"). | |
| headers | No | Optional allowlisted headers from the action contract, such as X-Idempotency. | |
| resource | Yes | Reporter resource name (e.g. "templates", "reports", "data-sources", "deadlines", "metrics", "system"). | |
| multipart | No | Multipart form fields for template create/update. For file upload, use { template: { filename, content, contentType?, encoding? }, outputFormat, description }. | |
| pathParams | No | Path parameters as key-value pairs. | |
| queryParams | No | Query parameters for list/filter actions. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructive and non-idempotent behavior. The description adds context about non-trivial request requirements (multipart, X-Idempotency, binary download) that go beyond annotations, informing the agent of potential complexities without overclaiming safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the core purpose directly, the second delivers a crucial usage directive. No filler or repetition of schema details; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic executor with many parameters and no output schema, the description points to reporter-discover for detailed requirements, covering the most complex behaviors. It doesn't enumerate all actions or return values, but the schema and annotations fill those gaps adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides detailed descriptions for all 9 parameters, including action, resource, multipart, headers, and confirmation fields. The description only briefly mentions multipart and headers, adding minimal value over the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes Reporter manager API actions, with a specific verb ('Execute') and resource ('Reporter manager API'). It distinguishes itself from reporter-discover by framing itself as the execution counterpart, though it doesn't enumerate specific actions beyond the broad category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use reporter-discover first to inspect multipart requirements, headers, and download behavior, which sets clear prerequisites. It does not name alternative tools but implies the discover-execute pairing for this domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracer-discoverARead-onlyIdempotent
Discover Tracer API resources, actions, and execution contracts. Use this before tracer-execute to inspect rule/limit operations, validation payloads, audit investigation filters, and operational endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "create", "list", "activate", "getUsage", "verifyHashChain"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Tracer resource name (e.g. "rules", "limits", "validations", "audit-events", "system"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds context about what is inspected but does not disclose additional behavioral traits (e.g., rate limits, side effects). Given annotations, the bar is lower, and the description provides some value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and to the point, with no redundant or extraneous information. It structure is clear, starting with the core purpose and following with usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the tool's purpose and typical use, but lacks details about parameter interplay, expected output, or negotiation of the 'intent' values. Given the schema already lists parameters, the description is adequate but not comprehensive, missing opportunities to explain how the parameters map to discovery actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any of the five parameters (query, action, intent, resource, component). While the schema provides brief descriptions, they are generic (e.g., 'Search query for intent="search"'). The tool description offers no added semantic guidance for parameter usage, leaving the agent to rely solely on schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: discovering Tracer API resources, actions, and execution contracts. It also specifies what it inspects (rule/limit operations, validation payloads, audit filters, endpoints), distinguishing it from execute tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this before tracer-execute', providing a clear context and purpose. This guides the agent to invoke it during pre-execution discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracer-executeBDestructive
Execute Tracer API actions. Use tracer-discover first to inspect rule/limit transitions, validation request bodies, audit filters, and operational endpoints before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for create/update/validate actions. | |
| action | Yes | Tracer action to perform (e.g. "create", "list", "activate", "getUsage", "verifyHashChain"). | |
| headers | No | Optional allowlisted headers from the action contract. Configured TRACER_API_KEY remains authoritative. | |
| resource | Yes | Tracer resource name (e.g. "rules", "limits", "validations", "audit-events", "system"). | |
| pathParams | No | Path parameters as key-value pairs. | |
| queryParams | No | Query parameters for list/filter actions. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey the destructive nature (destructiveHint: true, readOnlyHint: false), so the description carries a lighter burden. It adds the behavioral nuance that discovery must precede execution, echoing the openWorldHint. However, it does not disclose what happens on mutation, whether confirmMutation/mutationReason gating behaviors exist, or consequences of actions beyond the annotation flags — no contradiction, but no added depth either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is just two sentences but wastes the first on the near-tautological 'Execute Tracer API actions.' The second sentence is more useful, conveying the discover-first workflow. This is under-specification dressed as brevity — short but not optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, 100% schema coverage, no output schema, and a meaningful destructive annotation, the description sits at the minimum viable level. It points to tracer-discover for operational details, which is a sensible pattern for an execute-all endpoint, but does not mention mutation safety requirements or the confirmMutation/critical-params gating that an agent might need to know about before invoking. Adequate for the discover/execute pattern, nothing more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter descriptions are already informative (each param has a description with examples for action), giving 100% schema description coverage and thus no heavy lifting is demanded from the tool's prose. The description adds no parameter syntax, format, or workflow detail beyond the schema. Baseline 3 is appropriate given the easy-to-parse property descriptions and the generic discover-then-call nature of this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase "Execute Tracer API actions" merely restates the tool name 'tracer-execute' as a sentence, which is a tautology. The second sentence shifts to telling the agent to use tracer-discover, offering no concrete statement of what this tool actually executes or produces. It fails the verb+resource test with specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit sequencing guidance by naming the sibling tool tracer-discover and instructing to use it 'first... before calling this tool.' It also lists what the discover step inspects (rule/limit transitions, validation bodies, audit filters, operational endpoints), giving actionable context on how to engage with the tool. It could be clearer about when to prefer other execute siblings, but the alternative is explicitly named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
underwriter-discoverARead-onlyIdempotent
Discover Underwriter API resources, actions, and execution contracts. Use this before underwriter-execute to inspect jurisdiction discovery, loan product lifecycle actions, schedule preview payloads, and the example endpoints currently mounted by the service.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for intent="search". | |
| action | No | Action name (e.g. "list", "create", "previewSchedule", "createVersion"). | |
| intent | Yes | Discovery intent: list resources, inspect one resource, inspect one action, search, or filter by component. | |
| resource | No | Underwriter resource name (e.g. "jurisdictions", "loan-products", "loan-applications", "examples"). | |
| component | No | Component filter for intent="list-by-component". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only, idempotent, non-destructive behavior; the description aligns with them and adds useful dynamic context: it inspects currently mounted endpoints and execution contracts. It could have described what a successful response contains, but for a read-only discovery tool this is sufficient context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, information-dense, and front-loaded with the key purpose. No word is wasted, and the second sentence supports usage without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with a rich intent enum and full parameter documentation, the description covers what the tool is for, when to call it, and what areas to explore. It does not describe the shape of returned discovery results, and there is no output schema, but the likely output is self-describing for a discovery endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is at 100%, so the parameters are fully documented and the description does not need to repeat their semantics. The description enriches examples like jurisdictions, loan products, and previewSchedule, but adds no new parameter-level guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the subject (Underwriter API resources, actions, and execution contracts) and the verb 'discover/inspect', making the tool's purpose obvious. It distinguishes itself from underwriter-execute by framing this as the preparation step, which is further supported by the sibling naming pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool before underwriter-execute and lists concrete things to inspect, such as jurisdiction discovery, loan product lifecycle actions, and schedule preview payloads. This gives the agent a clear when-to-use directive and differentiates it from the execute sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
underwriter-executeADestructive
Execute Underwriter API actions. Use underwriter-discover first to inspect bearer-auth requirements for protected routes, loan product path/query contracts, and the schedule preview payload where decimal amounts are encoded as strings.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for create/update/simulation actions. | |
| action | Yes | Underwriter action to perform (e.g. "list", "create", "previewSchedule", "createVersion"). | |
| headers | No | Optional allowlisted headers from the action contract. Configured UNDERWRITER_AUTH_TOKEN remains authoritative. | |
| resource | Yes | Underwriter resource name (e.g. "jurisdictions", "loan-products", "loan-applications", "examples"). | |
| pathParams | No | Path parameters as key-value pairs. | |
| queryParams | No | Query parameters for list/filter actions. | |
| mutationReason | No | Human-readable audit reason required for mutating live API actions. | |
| confirmMutation | No | Required as true for POST, PUT, PATCH, or DELETE live API actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true and readOnlyHint: false; the description confirms and contextualizes this by warning about 'bearer-auth requirements for protected routes' and mentioning decimal-amount-as-string encoding in the schedule preview payload. That specific encoding detail is exactly the kind of non-obvious behavioral disclosure that the agent needs to invoke correctly on live API routes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, maximal information density. Every clause either names the tool's purpose, references the prerequisite discovery workflow, or surfaces a non-obvious API quirk. The awaited 'schedule preview' detail is placed strategically after establishing the alternative-tool-first mandate, so the structure guides the agent's reading order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an execute tool with 8 parameters, no enum values, and no output schema, the description carries a huge burden—and it delivers. It covers the authentication prerequisites, points to the discovery sibling for request contracts, names the encoding gotcha, and links the mutation flags (confirmMutation) to 'live API actions' implicitly. The 'decimal amounts encoded as strings' note seems to address a known failure mode. This is a complete briefing packet, not just a description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns an extra point by revealing cross-parameter behavior: the relationship between action values like 'previewSchedule' and the schedule preview payload's string-encoded decimals, plus the fact that headers are 'allowlisted' and that UNDERWRITER_AUTH_TOKEN is authoritative. It adds meaning to parameters that the schema alone doesn't convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource construction ('Execute Underwriter API actions') and immediately orients the agent to the companion workflow by naming underwriter-discover explicitly. It clearly positions itself as the executor of actions that require prior discovery of contracts, which differentiates it from siblings. The description adds genuine semantic weight beyond the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit command: 'Use underwriter-discover first to inspect bearer-auth requirements for protected routes, loan product path/query contracts, and the schedule preview payload.' This tells the agent exactly when to use the sibling tool versus this one, and what specific things to check (auth requirements, path/query contracts, schedule preview payload). This is textbook 'when-to-use vs. alternative' guidance.
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. Dates show when Glama detected each change.
16 tool updates
v3.7.1- Added
fetcher-discover - Added
fetcher-execute - Added
flowker-discover - Added
flowker-execute - Changed
lerian6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / operation / descriptionPrevious value: -"Operation type (REQUIRED). 'docs': get documentation, 'learn': interactive tutorials and learning paths, 'sdk': generate SDK code, 'search': search documentation and examples."New value: +"Operation type (REQUIRED). 'discover': inspect portfolio products and current MCP coverage, 'docs': get documentation, 'learn': interactive tutorials and learning paths, 'sdk': generate SDK code, 'search': search documentation and examples." - changed
Input schema / properties / operation / enumPrevious value: -[ - "docs", - "learn", - "sdk", - "search" -]New value: +[ + "discover", + "docs", + "learn", + "sdk", + "search" +] - changed
Input schema / properties / product / descriptionPrevious value: -"Target Lerian product (REQUIRED). 'midaz': financial ledger, 'tracer': observability, 'flowker': workflows, 'reporter': analytics, 'all': search across all products."New value: +"Target Lerian product (REQUIRED). Use 'all' for portfolio-wide discovery and search. Supported products: midaz, reporter, fetcher, matcher, tracer, underwriter, flowker, all." - changed
Input schema / properties / product / enumPrevious value: -[ - "midaz", - "tracer", - "flowker", - "reporter", - "all" -]New value: +[ + "midaz", + "reporter", + "fetcher", + "matcher", + "tracer", + "underwriter", + "flowker", + "all" +] - changed
Input schema / properties / topic / descriptionPrevious value: -"Topic or subject matter, 5-200 characters (REQUIRED for: docs, learn, search). Examples: 'getting-started', 'authentication', 'transactions', 'error-handling', 'workflows'. Be specific about what you want to learn or find."New value: +"Topic or subject matter, 5-200 characters (REQUIRED for: docs, learn, search). Examples: 'getting-started', 'authentication', 'transactions', 'templates', 'rules', 'workflows'. Be specific about what you want to learn or find."
- Added
matcher-discover - Added
matcher-execute - Added
midaz-discover - Added
midaz-execute - Added
portfolio-workflow - Added
reporter-discover - Added
reporter-execute - Added
tracer-discover - Added
tracer-execute - Added
underwriter-discover - Added
underwriter-execute
1 tool update
v1.0.0- First observed
lerian
TDQS
Each tool has a clearly distinct purpose: the 'lerian' tool provides portfolio-wide overview, 'portfolio-workflow' handles cross-product orchestration, and each product has a dedicated discover/execute pair with unique product prefixes. There is no overlap or ambiguity across tools.
Naming follows a strict and predictable pattern: '<product>-discover' and '<product>-execute' for all seven products, plus 'lerian' and 'portfolio-workflow' as descriptive standalone tools. The consistent hyphenated style makes tool selection intuitive.
With 16 tools, the server is well-scoped for its purpose: each of the seven products needs both a discovery and execution tool, and the additional portfolio-level and workflow tools add meaningful capability without redundancy. The count is appropriate and not excessive.
The tool surface is complete for the stated purpose: discovery and execution are covered for every product, and the portfolio-workflow tool handles cross-product orchestration. Each execute tool supports full CRUD and operational actions, and the discover tools provide schema and contract details, leaving no obvious dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
The documentation, as a tool your agent can call: 950+ AI-dev guides. Search + fetch tools.
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singl…
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to automatically create, update, and publish API documentation through Theneo's platform. Supports OpenAPI specs, Postman collections, AI-powered description generation, and natural language interactions for seamless documentation workflows.MIT
- FlicenseAqualityDmaintenanceProvides access to 600+ documentation libraries from DevDocs.io including Python, JavaScript, React, Django, and more. Enables searching, browsing, and retrieving documentation content directly through Claude Desktop.55-
- FlicenseNot gradedqualityDmaintenanceProvides real-time retrieval of official documentation for LangChain, LlamaIndex, and OpenAI. It enables context-aware coding by fetching the latest API references and guides directly into Claude via the Model Context Protocol.-
- AlicenseNot gradedqualityCmaintenanceProvides real-time, up-to-date documentation for major LLM providers (OpenAI, Anthropic, Google Gemini) to prevent hallucinations and outdated code patterns in AI agents.146MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LerianStudio/lerian-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server