Skip to main content
Glama
Mr-Lucasz

Conversational API Test MCP

by Mr-Lucasz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_WORKSPACE_ROOTNoDefault `workspaceRoot` when a tool call omits it.
MCP_API_ALLOWED_HOSTSNoComma-separated hostnames requests may target. Unset = any host.
MCP_API_REVEAL_SECRETSNo`true` disables redaction. Local debugging only.
MCP_API_ENV_PASSTHROUGHNoComma-separated env var names (trailing `*` = prefix) exposed to `{{env.NAME}}`. Unset = none.
MCP_API_MAX_RESPONSE_BYTESNoResponse size cap. Default 10 MB.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_api_definitionsB

List YAML API definition files under .mcp/api/. Returns files (paths), or entries (path/service/summary) with includeCatalogMeta or query; plus totalMatched, truncated and, when capped by maxFiles, a nextCursor to pass back as cursor.

read_api_definitionA

Read and validate a whole API YAML definition. Prefer summarize_api_definition for triage.

upsert_canonical_api_definitionA

Create or update a canonical YAML under .mcp/api/ only. mergeMode replace_file (requires replaceDefinition) or append_endpoints (requires appendEndpoints). New file on append needs createIfMissing. Default dryRun true returns preview without writing; set dryRun false and confirm true to write (atomic replace + optional .bak backup). Endpoint ids must not collide on append.

reorganize_mcp_api_definitionsA

Plan or apply merging multiple YAML definitions into fewer files. mode plan (no writes) or apply (requires confirm true). groupBy manual_groups (requires manualGroups with targetRelativePath + sourceGlobs relative to .mcp/api/) or same_service_field (auto groups files sharing non-empty service into .mcp/api/_consolidated/*.yaml). Conflicts (duplicate endpoint id across files, mismatched base_url/service/variables) block apply. Optional deleteSourcesAfterMerge or moveSourcesToArchive (mutually exclusive).

discover_legacy_api_sourcesC

Find Postman collections, OpenAPI/Swagger, or Insomnia exports.

convert_legacy_to_canonicalA

Turn a Postman collection, an OpenAPI/Swagger spec or an Insomnia export into a YAML definition under .mcp/api/. Give legacyRelativePath for a file in the workspace, or legacyContent with the JSON/YAML text the user pasted. Literal credentials found in headers or auth are moved to .env.mcp.local and replaced by {{VARIABLE}}. Refuses to replace an existing file unless overwrite is true. Apidog: export as OpenAPI or Postman first.

import_curlA

Turn a curl command the user pasted into a request in a YAML definition under .mcp/api/ (creates the file, or appends to it). Method, URL, query string, headers and JSON / form body are carried over. Credentials (Authorization, cookies, -u, credential-looking fields) are moved to .env.mcp.local and replaced by {{VARIABLE}}, so the YAML stays safe to commit. Fails if requestId already exists.

execute_api_requestA

Send one request from a YAML definition. Variables resolve YAML < .env.mcp.local < session (after set_environment, {ENV}_KEY wins over KEY); an unresolved placeholder is sent as the literal {{KEY}}. Runs auth_dependency first when needed, retries once on 401, applies capture and assert. The body comes back once: bodyJson for JSON that fits the cap, bodyPreview for text; JSON over the cap gives a truncated bodyPreview plus bodyJson.topLevelKeys — narrow it with jsonPathSelect. responseDetail: minimal = status only; summary = body (8k chars) and the headers that matter; full = every header, 50k chars.

get_environment_variableA

Read a session variable set by capture or set_environment_variable. Credential-looking values come back as [REDACTED] with masked: true.

set_environment_variableC

Set a session variable for subsequent requests.

set_environmentA

Set the active logical environment for this workspace session (session CURRENT_ENV, e.g. STAGING). Interpolation resolves {CURRENT_ENV}VAR from .env.mcp.local before generic VAR (prefix-first). Put all env secrets there (DEVELOP, STAGING_); YAML stays generic.

assert_responseA

Assert on the last HTTP response: status, jsonPathExists, maxDurationMs and value checks (contains, regex, equality, ranges, list membership). Reports every check that failed. Run after execute_api_request.

explain_request_contextC

Summarize YAML keys, .env.mcp.local keys, session keys, and optional endpoint snippet.

summarize_api_definitionA

Summarize a canonical API YAML without returning the full definition. Use names_only for triage (optionally with fields to trim endpoint entries); use full only when needed.

execute_api_flowA

Run a sequence of requestIds in a single MCP round trip. Pass inline steps, or flowName to run a flow declared under flows: in the definition. Each step supports retry, poll (via jsonPath), an inline assert (same shape as assert_response), optional, and jsonPathSelect to get that step's body back ($ for all of it) without a follow-up call. stopOnError halts at the first failing required step.

run_evalA

Evaluate an endpoint whose answer varies (LLM / RAG / search) — or any endpoint over many inputs — in one call. Runs each case repeat times and passes it when passRate of the runs satisfy expect; returns one row per case, the distinct failures, latency p50/p95 and how many different answers came back. With judge it also returns question / answer / retrieved passages for you to grade what code cannot (faithfulness, relevance). Runs do not capture variables or replace the session's last response. Every run is a real, possibly paid, request.

dry_run_requestB

Build the URL, method, headers and body preview for a requestId without sending the request. Credentials in headers, query string and body are redacted.

summon_vanderA

Call this whenever the user addresses Vander by name ("hi Vander", "oi Vander", "Vander, review X") or asks for a VANDER review. Pass workspaceRoot. Returns the Vander persona brief and, when no endpoint was named, an onboarding: what this server is, the three pieces it needs (.mcp/api/ YAML, .env.mcp.local, the conversation), which of them this workspace already has, and what the user can ask for. Adopt the persona for the rest of the conversation and follow its working method. Sends no HTTP request.

init_workspaceA

Create the starting structure in a project: the .mcp/api/ folder, a runnable demo definition (demo.yaml, against httpbin.org) when there is no definition yet, an .env.mcp.local template with commented examples, and the .gitignore line that keeps that file out of git. Never overwrites an existing file. Ask the user before calling it.

plan_vander_checksA

Build the VANDER checklist (Verbs, Authorization, Negative, Data, Errors, Responsiveness) for one requestId, derived deterministically from its definition. Sends nothing. The id prefix is the axis (V-, A-, …). mode: auto (run_vander_checks executes it), destructive (auto, but state-changing) or manual (an idea to explore by hand).

run_vander_checksA

Execute the automatic VANDER checks for one requestId. Returns one row per check (id, whose prefix is the axis; result pass/fail/skipped; detail with the evidence) and failures with expected/actual/body snippet. Probes vary method, credentials and body; they never capture variables or replace the session's last response. State-changing probes (any POST/PUT/PATCH/DELETE) are skipped unless includeDestructive is true — ask the user before enabling it. maxDurationMs is the budget for the Responsiveness check.

Prompts

Interactive templates invoked by user choice

NameDescription
vanderTalk to Vander, a senior API QA persona that reviews an endpoint through Verbs, Authorization, Negative, Data, Errors and Responsiveness.

Resources

Contextual data attached and managed by the client

NameDescription
api-docs-efficient-read-paths
api-catalog-summary

TDQS

B3.4/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target distinct actions (list vs read vs summarize, plan vs run VANDER checks, single request vs flow vs eval). A few pairs overlap in purpose—read_api_definition vs summarize_api_definition, convert_legacy_to_canonical vs import_curl—but descriptions provide clear guidance on when to use each.

Naming Consistency4/5

Nearly all names follow a snake_case verb_noun pattern (execute_api_request, plan_vander_checks, set_environment_variable). Minor deviations such as set_environment vs set_environment_variable and the whimsical summon_vander keep it from being perfectly uniform, but the convention is still predictable.

Tool Count3/5

21 tools is heavy for the domain; the server covers definition management, legacy conversion, execution, evals, VANDER checks, environment handling, and workspace init. Several pairs could arguably be merged (read/summarize, plan/run VANDER), making the count borderline rather than well-scoped.

Completeness4/5

The surface covers create/read/update via upsert, list, summarize, legacy conversion, request execution, assertions, flows, evals, VANDER checks, environment variables, and workspace init. A notable gap is an explicit delete tool for definitions or endpoints; upsert with replace_file can overwrite but does not obviously delete.

Maintenance

ActivityMaintained
ResponsivenessNo issues